迅投QMT实践记录

1. Python版本

qmt 支持python3.6-3.8的版本
虽然官方文档中说 XtQuant目前提供的库包括64位Python3.6----3.11版本
参看:迅投XtQuant FAQ - xtquant运行依赖环境
但是查看:\bin.x64\Lib\site-packages\xtquant
其中仅有 cp36~cp38 文件:

2022-08-11  10:11         4,719,104 IPythonApiClient.cp36-win_amd64.pyd
2022-08-11  10:11         4,707,840 IPythonApiClient.cp37-win_amd64.pyd
2022-08-11  10:11         4,673,024 IPythonApiClient.cp38-win_amd64.pyd

2. 关于get_last_order_id

为了管理订单是否成交,测试使用 get_last_order_id 获取order_id后根据order_callback 返回的订单成交结果判断是否需要撤单重下。

目前测试结果:

  1. 代码:在 order_callback 中调用 get_last_order_id
def order_callback(c, order):
	print(order.m_strOrderSysID)
	print(get_last_order_id(c.account_id, 'stock', 'order'))

结果:2笔几乎同时的委托共产生 4次回调(委托成功和成交之间间隔约30s)get_last_order_id 均返回较小的order_id
eg.
委托成功返回:
19744
19744
19745
19744
成交成功返回:
19744
19744
19745
19744

3. QMT-极简 xtdata.get_market_data 报错 AssertionError

Exception ignored in: <module 'threading' from 'C:\\ProgramData\\Anaconda3\\envs\\mqmt\\lib\\threading.py'>
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\envs\mqmt\lib\threading.py", line 1373, in _shutdown
    assert tlock.locked()
AssertionError: 

相关代码

from xtquant import xtdata

stock_list = ['000001.SZ']
period = 'tick'
xtdata.download_history_data2(stock_list, period, start_time='20230717', end_time='20230717', callback=None)
rt = xtdata.get_market_data(stock_list=stock_list, period=period, start_time='20230717', end_time='20230717')
print(len(rt['000001.SZ']))

测试解决方案:增加一条import

from threading import Thread
# 后续同上

思路来源:
https://github.com/python/cpython/issues/46239
https://blog.csdn.net/herr_kun/article/details/86165190

To Be Continue…

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值