当我们把策略接入交易工具以后,最先需要补上的通常不是新指标,而是订单状态、信号去重和账户同步。本文从几个常见运行场景出发,和大家聊一聊机器人量化交易从“能下单”走向“能长期运行”时容易忽略的细节。
策略在某个价位发出买入信号,程序也返回了委托编号,界面看起来一切正常。过一会儿查看账户,却发现订单只成交了一部分。如果程序把“委托已提交”当成“买入已完成”,后续仓位计算就会从这里开始偏离。自动交易中不少问题并不是选股逻辑错了,而是程序对订单状态理解得过于简单。回测里一句买入指令,到了真实交易环境中,可能要经历已报、部成、已成、废单和撤单等状态。
可以把委托和成交分开记录。策略负责提出交易意图,订单模块记录委托编号、申报数量和当前状态,成交回报再更新实际持仓。遇到部分成交,不能简单重发整笔订单;遇到废单,也不能只写一句失败,而要保留错误信息和触发条件。这样做比直接调用下单函数麻烦,却能避免程序重启后不知道账户里发生过什么。对自动交易来说,可恢复往往比跑得快更重要。
另一个踩坑的地方是信号去重。行情每更新一次,条件都可能再次成立。如果程序只判断“现在是否满足买入条件”,同一信号就可能连续触发。解决思路不是简单延长间隔,而是给信号建立生命周期:什么时候产生,是否已经提交委托,订单有没有结束,什么时候允许再次触发。策略重启时,这些状态还要从日志、文件或账户信息中恢复,否则重启本身也可能变成一次新的下单信号。
真实账户里经常同时存在程序委托和人工操作。人手动卖出一部分持仓后,策略如果仍按旧仓位计算,下一次调仓就可能把股票买回来。与其要求用户绝不手动操作,不如提前规定同步方式:每次下单前重新读取账户,还是只在固定时间校准;发现计划仓位与实际仓位不一致时,是自动修正、暂停策略,还是发出提醒。这里没有统一答案,但必须有明确答案。
搞清楚这些细节后,再把我们的策略接入交易工具中,就会清晰很多。常见的量化交易工具中迅投QMT、恒生PTrade和掘金量化通常给开发者较多代码空间,订单状态、日志和恢复逻辑可以按策略需要组织,相应地也要求我们自己把细节补齐。水母量化更多通过表单、策略单和可视化流程组织任务,减少了代码工作,但使用时则要弄清组件如何处理触发、委托和异常。选择工具时,与其只看支持多少指标,不如看看出现部分成交、断线或人工改仓后,能不能迅速找到原因并接着运行。


机器人量化交易工具节省的是重复盯盘和机械操作的时间,不会自动消除交易系统里的边界情况。准备实盘前,可以先写一份故障清单:订单未成交怎么办,程序重启怎么办,账户被手动改动怎么办,日志看不懂时如何停止。能把这些问题说清楚,工具才是在帮忙;如果只把回测策略接上下单接口,机器人交易很可能只是把问题更快地送进真实账户。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。