当前位置: 代码网 > 服务器>网络>网络协议 > QMT量化交易上手

QMT量化交易上手

2024年08月01日 网络协议 我要评论
QMT实战代码

使用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
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com