公司动态

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

📅 2026/8/13 8:03:49
量化脚本准备实盘了吗?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 与依赖版本升级前在独立环境回放测试。系统重启后服务不会未经账户核对就自动恢复下单。磁盘、网络和进程健康有监控。人工接管入口要清楚如何停止新信号、如何查看活动委托和持仓、如何安全退出、谁能决定恢复。没有人能在告警后找到运行机器和账户就不算具备接管能力。上线采用小规模、有限品种和有限时段逐步扩大。模拟结果不能证明真实撮合第一轮实盘的目标仍是验证执行与恢复不是追求收益。扩大范围必须基于明确记录而不是“运行几天没出事”。先确认已覆盖的行情场景、订单状态、异常演练和人工接管再一次只增加一个维度例如资金、品种或运行时长。出现问题能够快速退回上一组已验证配置。任何上线变更都准备回滚方法。依赖升级、参数修改和部署脚本变化分别记录回滚后仍需核对账户事实不能只把代码版本切回去就宣告恢复。上线前最终检查清单环境、账户、合约和程序版本明确实盘没有安全默认值。行情有效且时间对齐主连研究与具体合约执行分开。信号可复算目标经过风险检查同一业务意图不重复下单。订单、成交、持仓和资金完成对账重启能从账户事实恢复。异常会停止新增风险有限重试、日志、报警与人工接管均已演练。模拟和受控小资金验证逐级进行不把历史收益当成实盘承诺。是否可以实盘不由“代码跑了多久”决定而由每一个状态能否被解释、每一种失败能否被限制决定。把这些检查做成启动和运行中的固定门槛实盘才是一次受控验证而不是把未知问题交给真实资金发现。