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 返回的订单成交结果判断是否需要撤单重下。
目前测试结果:
- 代码:在 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…