返回列表 发布新帖

QMT 下单成功不等于成交,盘中怎么自己查单

22 0
发表于 4 小时前 | 显示全部楼层 阅读模式

QMT 里 passorder 返回成功,只代表委托发出去了,不代表成交。这是最容易误判的一点:日志里看到下单函数没报错,就以为单子成了,结果收盘一看持仓没变。

盘中要自己查,靠 get_trade_detail_data。

四个数据类型

get_trade_detail_data(账号, 账号类型, 数据类型) 的第三个参数决定你查什么:

  • ORDER:委托状态、已成数量(判断"报出去没有、成了多少")
  • DEAL:成交明细(逐笔成交价、量)
  • POSITION:持仓
  • ACCOUNT:资金

最常用的是 ORDER 和 DEAL:ORDER 看委托走到哪一步,DEAL 看实际成交了多少。

账号类型别写错

股票账号是 STOCK,期货是 FUTURE,两融是 CREDIT。写错类型查出来是空列表,而且不报错 —— 又是那种"看着像没数据、其实是参数错"的坑。

strategyName 要一致

下单时如果带了 strategyName,查询时要用同一个名字,否则会把自己和其他策略的单混在一起。同一个账号跑多个策略时,这个字段基本是必须的。

一个容易忽略的坑:别把状态塞进 ContextInfo

盘中逐 K 会不断回退,ContextInfo 里的字段会跟着回到上一根 K 线结束时的状态。想存"这个单已经报过了"这类跨 K 线的标记,用普通全局对象(比如模块级变量),不要塞进 ContextInfo。

# 全局对象存长期状态
state = {'ordered': set()}

def handlebar(C):
    code = '600000.SH'
    if code in state['ordered']:
        return
    # ... 下单逻辑
    state['ordered'].add(code)

资料

查单的完整写法和字段说明:

https://www.kimiquant.cn/problems/qmt-order-callback

常用接口速查(get_trade_detail_data 的参数都在这里):

https://www.kimiquant.cn/tools/api

按报错关键词搜的问题库:

https://www.kimiquant.cn/problems

另外写策略代码时我常用 WorkBuddy 辅助,直接帮我写 QMT 策略、排查报错,比自己翻文档快不少,有兴趣可以试试:https://workbuddy.ai/invite?code=66L9RNCT

文中代码是示例,自行回测,不构成投资建议。

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2026 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表