QMT中的事件驱动编程:如何处理订单成交、撤单等反馈
发布时间:5小时前阅读:12

QMT的策略运行模型是事件驱动的,除了行情数据触发handle_bar或on_tick,订单状态变化(如成交、撤单、拒绝)也会触发回调函数。合理利用这些事件,可以构建更智能的策略,比如部分成交后的补单、撤单重发等。下面介绍主要的事件回调。
1. on_order_status:订单状态变化时调用。参数order包含订单ID、股票、价格、数量、成交数量、状态等。你可以根据状态做相应处理。例如:
`python
def on_order_status(context, order):
if order.status == ORDER_STATUS_FILLED:
log_info(f"订单{order.order_id}已全部成交,均价{order.price}")
elif order.status == ORDER_STATUS_CANCELLED:
log_info(f"订单{order.order_id}已撤销")
elif order.status == ORDER_STATUS_REJECTED:
log_info(f"订单{order.order_id}被拒绝,原因{order.reject_reason}")
`
2. on_order_trade:每笔成交(可能是部分成交)时触发。比on_order_status更精细。例如一个大单分多次成交,每次成交都会触发该回调。
3. on_execution_report:更底层的执行报告,通常不需要直接用。
利用这些事件,可以实现:
- 冰山订单:先下一部分单,成交后再下剩余部分,避免暴露意图。
- 撤单重发:如果订单长时间未成交,自动撤销并重新以更优价格发出。
- 条件开仓:只有当买入订单全部成交后,才设置止损单。
需要注意:事件回调中不要执行耗时操作,否则会阻塞后续事件。同时,在回调中再次下单要防止无限循环(比如成交后立即下单又成交又下单)。
事件驱动编程让策略的执行层更加智能,但也增加了复杂性。新手可以先忽略这些回调,让策略只依赖handle_bar。等策略稳定后,再逐步加入订单管理。
国金证券的QMT支持完整的事件回调,10万资金即可开通。量化社群中有现成的订单管理代码,比如自动追单模块。同时,两融全线上办理,信用账户的订单状态同样可以监控。掌握事件驱动,你的策略就从“简单触发”升级为“智能执行”,能应对更复杂的实盘环境。
温馨提示:投资有风险,选择需谨慎。
-
养虾理财用的金融Skill是什么?国泰海通灵犀Skills实测,新手也能装
2026-05-09 13:41
-
豆包开启付费!AI行业迎来拐点,普通投资者该怎么布局?
2026-05-09 13:41
-
2026国金证券新人开户能够享受哪些福利?(含6888元品质礼包)
2026-05-09 13:41


问一问

+微信
分享该文章
