量化脚本准备实盘了吗?TqSdk 上线前工程检查

一个脚本能连接行情、算出信号并在模拟账户成交,只能证明顺利路径基本跑通。实盘前还要确认账户环境不可误选、数据异常会阻止新动作、信号不会重复、订单与持仓能对账、重启可以恢复、日志足以定位问题。任何一项说不清,都应继续停留在模拟阶段。

启动入口必须拒绝模糊配置

程序启动时显式选择行情、模拟或实盘环境,缺少必要参数就失败。不能因为实盘字段为空而自动使用模拟,也不能因为模拟账号不可用就回退到实盘。

复制代码
import os

mode = os.environ.get("TRADING_MODE")
allowed = {"MARKET_DATA", "SIM", "LIVE"}
if mode not in allowed:
    raise RuntimeError("TRADING_MODE 必须明确设置")

if mode == "LIVE" and os.environ.get("LIVE_APPROVED") != "YES":
    raise RuntimeError("实盘启动缺少独立确认")

这只是启动门槛,不代表设置一个变量就获得实盘授权。真实系统还需要账户权限、部署审批和风险限制。代码重点是没有安全默认值,环境不清楚时直接停止。

启动摘要记录程序版本、配置指纹、环境、合约与时间,不记录密码。API 创建后先读取账户、持仓和活动委托,发现未知状态则进入人工确认,不立刻运行策略。

数据与时间要能证明当前可用

每个订阅对象都要完成初始化,所需字段有效,行情时间按预期推进。策略使用多个合约或周期时,检查它们的时间关系,不把旧数据与新数据组合。

程序要知道交易时段、休市和异常断流的差别。超过预期没有更新时,安全行为是暂停新增动作并报告最后有效时间,而不是继续用旧价格。

历史数据、回测数据和实时数据的粒度与字段定义要记录。使用主连生成信号时,执行合约映射和换月单独验证;主连不能直接下单。

系统时间、行情时间和日志时间各有用途。延迟监控可以同时记录,但信号对齐必须使用明确时间源。时钟漂移或时区错误应在启动检查中暴露。

信号和目标需要可重复验证

每个信号都能从固定输入重算,使用的是已完成数据,没有未来信息。触发频率与规则一致,新 K 线策略不会因当前线每次变化而重复判断。

信号转换为目标仓位时,风险预算、手数上限和当前账户状态都参与。风险拒绝返回明确原因;拒绝不是零目标,不能意外触发平仓。

参数变化保留版本和原因。上线版本固定参数,运行中不接受未审计的临时修改。若需要动态参数,也要记录生效时间和回滚方式。

抽取一组真实历史事件与实时模拟事件,逐条核对输入、指标、信号和目标。只看总体收益无法证明每个判断正确。

订单、成交和持仓必须闭环

同一合约只有一个交易入口。使用 TargetPosTask 时不再并行手工下单;手工订单管理则统一跟踪创建、撤销、部分成交和结束状态。

任何新订单前检查活动委托、当前持仓、账户资金和交易时段。订单创建后持续观察,成交价格只来自成交回报,不用行情价格代替。

撤单后等待最终状态并重新计算剩余目标。部分成交不能按原始手数重发。持仓达到目标时仍要确认没有可能改变结果的活动委托。

程序启动、正常退出和异常重启都执行账户对账。保存的内部目标只用于解释,账户订单、成交与持仓才是恢复依据。

风控与故障处理要先于自动重试

明确不可新增风险的条件:账户状态未知、关键行情失效、活动委托无法解释、持仓超限、日志不可写或策略计算异常。每个条件都能在模拟环境触发和验证。

重试只覆盖确定的临时连接或数据故障,次数有限。认证、配置和业务断言失败不自动重试。恢复后重新初始化订阅并核对账户,不从中断位置盲目继续。

风险上限不仅有单合约手数,还应包含账户总保证金、总体暴露和相关合约组合。初始版本宁可保守,也不要在没有验证的公式中自动放宽。

报警信息包含运行标识、合约、错误代码和待处理状态,但不含秘密。报警送达失败也要有替代记录,不能因为通知通道异常就让程序继续承担未知风险。

日志、部署与人工接管要能落地

日志覆盖启动、数据准备、信号、目标、风险拒绝、订单、成交、持仓、异常和退出。字段固定、时间统一、敏感信息过滤,保存期限与权限明确。

部署机器使用固定 Python 与依赖版本,升级前在独立环境回放测试。系统重启后服务不会未经账户核对就自动恢复下单。磁盘、网络和进程健康有监控。

人工接管入口要清楚:如何停止新信号、如何查看活动委托和持仓、如何安全退出、谁能决定恢复。没有人能在告警后找到运行机器和账户,就不算具备接管能力。

上线采用小规模、有限品种和有限时段,逐步扩大。模拟结果不能证明真实撮合,第一轮实盘的目标仍是验证执行与恢复,不是追求收益。

扩大范围必须基于明确记录,而不是"运行几天没出事"。先确认已覆盖的行情场景、订单状态、异常演练和人工接管,再一次只增加一个维度,例如资金、品种或运行时长。出现问题能够快速退回上一组已验证配置。

任何上线变更都准备回滚方法。依赖升级、参数修改和部署脚本变化分别记录;回滚后仍需核对账户事实,不能只把代码版本切回去就宣告恢复。

上线前最终检查清单

  • 环境、账户、合约和程序版本明确,实盘没有安全默认值。
  • 行情有效且时间对齐,主连研究与具体合约执行分开。
  • 信号可复算,目标经过风险检查,同一业务意图不重复下单。
  • 订单、成交、持仓和资金完成对账,重启能从账户事实恢复。
  • 异常会停止新增风险,有限重试、日志、报警与人工接管均已演练。
  • 模拟和受控小资金验证逐级进行,不把历史收益当成实盘承诺。

是否可以实盘,不由"代码跑了多久"决定,而由每一个状态能否被解释、每一种失败能否被限制决定。把这些检查做成启动和运行中的固定门槛,实盘才是一次受控验证,而不是把未知问题交给真实资金发现。

相关推荐
暂时先用这个名字1 小时前
安装deepseek harness及插件
人工智能·ai·npm·pnpm·deepseek·深度求索·harness
水如烟1 小时前
孤能子视角:EIS认识论分册总纲——同一认知呼吸的四次显影
人工智能
海兰1 小时前
mcporter — 安装部署及使用完全指南(一)
人工智能·agent·mcp
skywalk81631 小时前
用WorkBuddy成功把Deepseek Harness移植到FreeBSD
人工智能·deepseek·harness
JavaPub-rodert1 小时前
我把 OpenAI 协议塞进了 Go 工具库:go-commons 开始支持 AI 了
开发语言·人工智能·golang
HZZD_HZZD1 小时前
非侵入式负荷监测选`Seq2Point`还是`LSTM`?合众致达实测:洗衣机分解F1达0.87、`NDE`误差降27%,附PyTorch完整实现
人工智能·pytorch·lstm
青 春 记 忆1 小时前
零基础入门python07:让程序记住数据——JSON文件和异常处理
开发语言·windows·python·json·python3.11
嘟哩DuliDuli1 小时前
AI 账单变高的技术原因:重复上下文和用量归属
android·人工智能·安全·ai·软件工程