使用xtdata:
- 获取历史行情,需要先下载,再get_market_data_ex()
- 获得实时行情,需要先订阅,再get_market_data_ex(),设count=1即可
backtrader接入miniqmt可以微我:makuku76
qmt介绍
qmt是迅投公司出品量化交易客户端软件,目前只能运行在windows机器上,分为qmt 和 miniqmt两种模式,后者可以采用python api做程序化交易,极大方便了广大散户。这点上比同花顺/通信达好很多。
国金版登录界面如下:
qmt环境说明
因为qmt只能运行在windows下面,所以建议给windows安装openssh。
qmt自带python 3.6.8版本,你也可以自己安装单独的python版本。如果要安装第三方包,可以执行:
pip install pytest -t c:\国金证券qmt交易端\bin.x64\lib\site-packages
回测与实盘
回测就是拿历史数据验证你的策略,实盘就是产生实际交易。
首先下载python库,下载完后,bin.x64下会创建lib目录,各种常用库都会放在此处。
然后下载用于回测的日线数据:点行情->操作->数据管理->补充数据:
qmt基本api
迅投qmt提供了基本的python api,这些api只有c++实现,python文件不对外。你可以在策略脚本中使用它们,而策略脚本也只能被qmt调用。此外还集成几个常用的第三方库:
qmt自带的策略
miniqmt介绍
miniqmt api由xtquant这个包提供。可以独立运行在qmt客户端之外。但必须和qmt在同一台windows机器上。qmt运行时勾选了”极简模式“后就能使用miniqmt。
miniqmt主要包括xtdata(行情模块)+xttrade(实盘接口)两大模块,分别简单介绍如下:
1) xtdata模块本质是和miniqmt建立连接,由miniqmt处理行情数据请求,再把结果回传给python层。本模块一般情况下无须登录,只要安装了qmt就可以调用该模块。
2) xttrade模块则是基于迅投miniqmt衍生出来的一套完整的python策略运行框架,对外以python库的形式提供策略交易所需要的api接口。需要开通相关权限之后登录使用。
最详尽,最权威的资料当然非官方资料莫属,所以可以首选查阅官方文档,具体位置:http://docs.thinktrader.net/pages/040ff7/ 文章提到了两个模块的具体功能如下:
xtdata作为行情模块,本模块旨在提供精简直接的数据满足量化交易者的数据需求,主要提供行情数据(历史和实时的k线和分笔)、财务数据、合约基础信息、板块和行业分类信息等通用的行情数据。
xttrader作为交易模块,封装了策略交易所需要的python api接口,可以和miniqmt客户端交互进行报单、撤单、查询资产、查询委托、查询成交、查询持仓以及接收资金、委托、成交和持仓等变动的主推消息。
xtdata
xtdata能根据用户目录下的.xtquant文件,或者根据miniqmt的监听端口连接上miniqmt,然后获得本地用户登录数据,也就是'd:\\国金证券qmt交易端\\bin.x64/../userdata_mini/datadir'
这个数据,去连接行情服务器。
使用xtdata时,我们无需显式地去连接行情服务器,也无需用userdata去初始化xtdata,直接使用即可。
要获得实时行情数据,需要先订阅:
def do_subscribe_quote(stock_list: list, period: str):
for i in stock_list:
xtdata.subscribe_quote(i, period=period)
time.sleep(1)
然后:
results = xtdata.get_market_data_ex(['time', 'open', 'high', 'low', 'close', 'volume', 'amount'],
code_list, period=period, start_time=start_date, end_time=end_date,
count=1)
count=1表示获取最新的一条数据。
常用的几个函数:
基本使用代码
from xtquant import xtconstant
from xtquant.xttrader import xtquanttrader
from xtquant.xttype import stockaccount
## 初始化trader对象
path = r'd:\国金证券qmt交易端\userdata_mini'
session_id = int(random.randint(100000, 999999))
xt_trader = xtquanttrader(path, session_id)
## 启动
xt_trader.start()
## 连接qmt客户端
connect_result = xt_trader.connect()
print(connect_result)
if connect_result == 0:
print('连接成功')
## 订阅账户
acc = stockaccount('xxxxx')
subscribe_result = xt_trader.subscribe(acc)
print(subscribe_result)
xtquant 会创建与 qmt 的 socket 通讯,注意,它不是采用通常的用户名密码这种形式连接miniqmt的,连接信息存储在userdata_mini中。而且,xtquant目前没有macos和linux版本,所以只能和miniqmt运行在同一台windows机器上,这是一个极大的限制。
目前还没搞懂是否在macos上运行xtquant。
股票和行情
from xtquant import xtdata
## 下载板块数据
xtdata.download_sector_data()
res = xtdata.get_stock_list_in_sector('沪深a股')
res = xtdata.get_sector_list() ## 板块列表
## 获取历史行情
xtdata.download_history_data(stock_code='002358.sz', period='1d', start_time='20220101', end_time='20221001')
## 多股下载
xtdata.download_history_data2(stock_list=['600360.sh', '600989.sh', '002207.sz'], period='tick', start_time='20231111', end_time='20231115', callback=on_progress)
## 实时行情
res = xtdata.get_full_tick(['600360.sh']) ## 该股票最新的tick数据
seq = xtdata
发表评论