量化脚本准备实盘了吗?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 与依赖版本,升级前在独立环境回放测试。系统重启后服务不会未经账户核对就自动恢复下单。磁盘、网络和进程健康有监控。

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

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

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

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

上线前最终检查清单

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

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

相关推荐
johnsong12 小时前
AI前沿日报 · 2026-10-31 | 安全失守——当AI工具被下毒、当云端门户洞开
人工智能·安全
得帆低代码PaaS13 小时前
企业级 Agent 架构:MCP、Integration、数据与治理能力
大数据·人工智能·架构·ai agent·企业数字化·mcp
一条大祥脚14 小时前
TVM 的前世今生:从深度学习编译器到 AI 基础设施
人工智能·深度学习·tvm
❁满城风絮*15 小时前
Claude Code 学习总结
python·agent·claude
冬奇Lab15 小时前
一天一个开源项目(第255篇):Mika —— 装在安卓手机里的 AI 代理,在后台虚拟屏上替你操作 App 和网页
人工智能·开源·资讯
孟健16 小时前
实测 agent-desktop:AI 控制桌面不截图、不占鼠标键盘,连点 55 次计算器 0 失误
人工智能·架构·开源
MUSHANGXS17 小时前
大模型时代的新蓝海-基于OS底层的AI-Agent应用
人工智能·职场和发展·交互
维克兜率天17 小时前
【维克】复合型CTA:趋势+套利的双轮驱动
python·学习方法
伞伞悦读17 小时前
【第76期】两张3行表左连接变5行:主键、validate与未匹配排查完整教程
人工智能·python
IT_陈寒17 小时前
Redis大key删除为什么会导致服务卡顿?我的线上事故复盘
前端·人工智能·后端