MiniQMT 量化交易技能
任务目标
- 本 Skill 用于:通过 XtQuant 库连接 MiniQMT 客户端,获取 A 股/期货/期权行情数据,执行量化交易操作
- 能力包含:
- 行情模块 (xtdata):K线数据、分笔数据、实时行情订阅、财务数据、板块分类、ETF信息、新股申购、交易日历
- 交易模块 (xttrader):股票/期货/期权下单、撤单、查询资产/委托/持仓、资金划拨、信用交易、约券
- 触发条件:用户提及 miniqmt、xtquant、迅投、获取行情、量化交易、下单交易时使用
前置准备
MiniQMT 环境要求
- 客户端安装:需安装迅投极速交易终端,并启动 MiniQMT(支持模拟/实盘)
- Python 库:
pip install xtquant
- 路径配置:MiniQMT 安装目录下的
userdata_mini 路径用于 xttrader 连接
目录结构
QMT安装目录\
├── bin.x64\XtMiniQmt.exe # MiniQMT 主程序
├── userdata_mini\ # 用户数据目录(xttrader 连接路径)
│ ├── xqtrader.ini # 交易配置
│ └── xtdatacenter.ini # 行情配置
核心概念
证券代码格式
- 股票:6位数字 + 市场后缀,如
600000.SH(上海)、000001.SZ(深圳)
- 期货:品种代码 + 合约月份,如
rb2405.SF(螺纹钢)
- 期权:标的代码 + 行权月份,如
510050.SH(上证50ETF期权)
周期类型 (period)
| 周期 |
说明 |
周期 |
说明 |
tick |
分笔数据 |
1q |
季度线 |
1m |
1分钟线 |
1hy |
半年线 |
5m |
5分钟线 |
1y |
年线 |
15m |
15分钟线 |
1w |
周线 |
30m |
30分钟线 |
1d |
日线 |
1h |
1小时线 |
1mon |
月线 |
复权类型 (dividend_type)
none - 不复权
front - 前复权
back - 后复权
front_ratio - 等比前复权
back_ratio - 等比后复权
交易市场 (market)
| 市场 |
常量 |
市场 |
常量 |
| 上海 |
xtconstant.SH_MARKET |
中金所 |
xtconstant.MARKET_ENUM_INDEX_FUTURE |
| 深圳 |
xtconstant.SZ_MARKET |
上期所 |
xtconstant.MARKET_ENUM_SHANGHAI_FUTURE |
| 北交所 |
xtconstant.MARKET_ENUM_BEIJING |
郑商所 |
xtconstant.MARKET_ENUM_ZHENGZHOU_FUTURE |
| 大商所 |
xtconstant.MARKET_ENUM_DALIANG_FUTURE |
广期所 |
xtconstant.MARKET_ENUM_GUANGZHOU_FUTURE |
账号类型 (account_type)
| 类型 |
常量 |
类型 |
常量 |
| 股票 |
xtconstant.SECURITY_ACCOUNT |
沪港通 |
xtconstant.HUGANGTONG_ACCOUNT |
| 期货 |
xtconstant.FUTURE_ACCOUNT |
深港通 |
xtconstant.SHENGANGTONG_ACCOUNT |
| 信用 |
xtconstant.CREDIT_ACCOUNT |
期货期权 |
xtconstant.FUTURE_OPTION_ACCOUNT |
| 股票期权 |
xtconstant.STOCK_OPTION_ACCOUNT |
- |
- |
操作步骤
- 确定需求 — 识别是行情数据获取还是交易操作
- 选择模块 — xtdata 用于行情,xttrader 用于交易
- 调用脚本 — 根据数据类型选择对应脚本
- 解析结果 — 智能体分析返回的 JSON 格式数据
意图识别映射示例
| 用户提问 |
对应功能 |
调用方式 |
| "贵州茅台实时股价" |
实时行情快照 |
xtdata.get_full_tick |
| "平安银行K线数据" |
K线数据 |
xtdata.get_market_data |
| "招商银行财务指标" |
财务报表 |
xtdata.get_financial_data |
| "半导体板块成分股" |
板块成分股 |
xtdata.get_stock_list_in_sector |
| "今日可转债信息" |
ETF/可转债数据 |
xtdata.get_cb_info |
| "新股申购" |
新股信息 |
xtdata.get_ipo_info |
| "下单买入平安银行" |
交易下单 |
xttrader.order_stock |
| "查询持仓" |
持仓查询 |
xttrader.query_stock_positions |
| "撤单" |
撤单操作 |
xttrader.cancel_order_stock |
使用示例
示例1:获取股票实时行情
import xtdata
# 获取全推行情快照
ticks = xtdata.get_full_tick(['600519.SH', '000001.SZ'])
# 订阅单股实时行情
def on_data(datas):
for code in datas:
print(code, datas[code])
xtdata.subscribe_quote('600519.SH', period='tick', callback=on_data)
xtdata.run()
示例2:获取K线历史数据
import xtdata
# 下载历史K线数据
xtdata.download_history_data2(['600519.SH'], period='1d', start_time='')
# 获取K线数据
data = xtdata.get_market_data(
field_list=['open', 'high', 'low', 'close', 'volume'],
stock_list=['600519.SH'],
period='1d',
start_time='20240101',
end_time='',
count=100,
dividend_type='front'
)
示例3:交易下单
from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
from xtquant.xttype import StockAccount
from xtquant import xtconstant
# 配置路径和会话
path = 'D:\\迅投极速交易终端\\userdata_mini'
session_id = 123456
xt_trader = XtQuantTrader(path, session_id)
# 创建账号对象
acc = StockAccount('1000000365') # 替换为实际账号
# 连接交易
xt_trader.start()
connect_result = xt_trader.connect()
subscribe_result = xt_trader.subscribe(acc)
# 下单买入
order_id = xt_trader.order_stock(
acc,
'600519.SH',
xtconstant.STOCK_BUY,
100, # 100股
xtconstant.FIX_PRICE,
1800.0, # 价格
'strategy1',
'remark'
)
# 查询资产
asset = xt_trader.query_stock_asset(acc)
print(f"可用资金: {asset.cash}")
示例4:订阅行情并实时处理
import xtdata
def on_tick_data(datas):
for code in datas:
tick = datas[code]
print(f"{code}: 现价={tick['lastPrice']}, 成交量={tick['volume']}")
# 订阅多只股票
xtdata.subscribe_whole_quote(['SH', 'SZ'], callback=on_tick_data)
xtdata.run()
资源索引
行情数据脚本
- 行情快照:
python scripts/market_data.py snapshot --code 600519.SH
- K线数据:
python scripts/market_data.py kline --code 600519.SH --period 1d --count 100
- 分笔数据:
python scripts/market_data.py tick --code 600519.SH --count 100
- 实时行情:
python scripts/market_data.py full_tick --codes 600519.SH,000001.SZ
板块与财务脚本
- 板块列表:
python scripts/sector_data.py sector_list
- 板块成分股:
python scripts/sector_data.py sector_stocks --sector 半导体
- 财务数据:
python scripts/financial_data.py financial --code 600519.SH --tables Balance,Income
交易脚本
- 下单:
python scripts/trade.py order --code 600519.SH --type buy --volume 100 --price 1800.0
- 撤单:
python scripts/trade.py cancel --order_id 12345
- 查询持仓:
python scripts/trade.py positions
- 查询委托:
python scripts/trade.py orders
- 查询资产:
python scripts/trade.py asset
- 查询成交:
python scripts/trade.py trades
参考文档
注意事项
环境要求
- 必须运行 MiniQMT:xttrader 交易模块需要 MiniQMT 客户端在后台运行
- 路径配置:确保
userdata_mini 路径正确,否则连接会失败
- 行情订阅限制:单股订阅建议不超过 50 只,较多时建议使用全推数据
数据获取注意
- 数据补下载:历史数据需先通过
download_history_data2 下载
- 权限限制:Level2 数据需要终端有相应权限
- 时间格式:K线时间参数格式为
'20240101' 或 '20240101000000'
交易注意
- 账号格式:股票账号直接使用资金账号字符串,期货账号需指定
'FUTURE'
- 委托数量:股票以"股"为单位,债券以"张"为单位,期货以"手"为单位
- 订单编号:下单成功后返回正整数 order_id,-1 表示失败
- 异步操作:交易操作支持同步/异步两种模式,异步模式需配合回调使用
性能优化
- 批量请求:多只股票数据建议使用
get_market_data 批量获取
- 缓存利用:已订阅的数据会自动缓存,无需重复订阅
- 线程安全:xttrader 支持多策略,但需使用不同的 session_id