3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 量化平台中,使用 get_trade_detail_data 函数查询交易明细时,默认情况下可能无法获取到通过手机 APP、PC 独立交易软件等“外部终端”下的订单。这主要是由 QMT 的底层数据同步机制决定的。
get_trade_detail_data 函数是从 QMT 客户端本地的内存/数据库中读取交易数据的,而不是每次调用都直接向券商柜台发起实时查询。QMT 程序自己触发的订单会直接记录在本地,因此可以立即查到。要让 QMT 能够查询到手机 APP 的下单记录,请按照以下步骤进行排查和设置:
这是最常见的原因。您需要检查 QMT 客户端的系统设置:
确保在策略的 init 函数中调用了 set_account,这样 QMT 才会订阅该账号的实时交易回报(包括外部交易的回报)。
def init(ContextInfo):
# 绑定并订阅资金账号的交易主推
ContextInfo.set_account(ContextInfo.accountid)
您使用的调用方式是 get_trade_detail_data(C.accountid, 'CREDIT', 'deal'),这是正确的(未传入 strategyName)。
注意:如果传入了第四个参数 strategyName,函数会严格过滤出该策略名称下的订单。手机 APP 下单没有策略名称,如果带了该参数则绝对查不到。您目前没有带此参数,做法是正确的。
如果在盘中手机 APP 下了单,且 QMT 客户端由于网络原因没有收到推送,您可以尝试在 QMT 交易界面的“委托”或“成交”列表中点击刷新按钮,强制从柜台拉取最新数据。拉取到本地后,代码中再次调用 get_trade_detail_data 即可查到。
QMT 的 get_trade_detail_data 依赖于本地客户端的数据完整性。只要确保 QMT 客户端开启了外部交易同步,并在代码中通过 set_account 订阅了账号,手机 APP 的交易记录同样可以通过该函数查询到。