$npx -y skills add lzwme/finance-quant-skills --skill miniqmtMiniQMT 迅投量化交易接口,基于 XtQuant Python 库,支持 A 股/期货/期权的行情数据获取(K线、分笔、财务数据等)和交易下单(报单、撤单、查询资产/委托/持仓)。当用户提及 miniqmt、xtquant、迅投、获取实时行情、量化交易下单、回测数据获取,或需要连接 MiniQMT 客户端进行程序化交易时使用
| 1 | # MiniQMT 量化交易技能 |
| 2 | |
| 3 | ## 任务目标 |
| 4 | - 本 Skill 用于:通过 XtQuant 库连接 MiniQMT 客户端,获取 A 股/期货/期权行情数据,执行量化交易操作 |
| 5 | - 能力包含: |
| 6 | - **行情模块 (xtdata)**:K线数据、分笔数据、实时行情订阅、财务数据、板块分类、ETF信息、新股申购、交易日历 |
| 7 | - **交易模块 (xttrader)**:股票/期货/期权下单、撤单、查询资产/委托/持仓、资金划拨、信用交易、约券 |
| 8 | - 触发条件:用户提及 miniqmt、xtquant、迅投、获取行情、量化交易、下单交易时使用 |
| 9 | |
| 10 | ## 前置准备 |
| 11 | |
| 12 | ### MiniQMT 环境要求 |
| 13 | - **客户端安装**:需安装迅投极速交易终端,并启动 MiniQMT(支持模拟/实盘) |
| 14 | - **Python 库**:`pip install xtquant` |
| 15 | - **路径配置**:MiniQMT 安装目录下的 `userdata_mini` 路径用于 xttrader 连接 |
| 16 | |
| 17 | ### 目录结构 |
| 18 | ``` |
| 19 | QMT安装目录\ |
| 20 | ├── bin.x64\XtMiniQmt.exe # MiniQMT 主程序 |
| 21 | ├── userdata_mini\ # 用户数据目录(xttrader 连接路径) |
| 22 | │ ├── xqtrader.ini # 交易配置 |
| 23 | │ └── xtdatacenter.ini # 行情配置 |
| 24 | ``` |
| 25 | |
| 26 | ### 核心概念 |
| 27 | |
| 28 | #### 证券代码格式 |
| 29 | - **股票**:6位数字 + 市场后缀,如 `600000.SH`(上海)、`000001.SZ`(深圳) |
| 30 | - **期货**:品种代码 + 合约月份,如 `rb2405.SF`(螺纹钢) |
| 31 | - **期权**:标的代码 + 行权月份,如 `510050.SH`(上证50ETF期权) |
| 32 | |
| 33 | #### 周期类型 (period) |
| 34 | | 周期 | 说明 | 周期 | 说明 | |
| 35 | |------|------|------|------| |
| 36 | | `tick` | 分笔数据 | `1q` | 季度线 | |
| 37 | | `1m` | 1分钟线 | `1hy` | 半年线 | |
| 38 | | `5m` | 5分钟线 | `1y` | 年线 | |
| 39 | | `15m` | 15分钟线 | `1w` | 周线 | |
| 40 | | `30m` | 30分钟线 | `1d` | 日线 | |
| 41 | | `1h` | 1小时线 | `1mon` | 月线 | |
| 42 | |
| 43 | #### 复权类型 (dividend_type) |
| 44 | - `none` - 不复权 |
| 45 | - `front` - 前复权 |
| 46 | - `back` - 后复权 |
| 47 | - `front_ratio` - 等比前复权 |
| 48 | - `back_ratio` - 等比后复权 |
| 49 | |
| 50 | #### 交易市场 (market) |
| 51 | | 市场 | 常量 | 市场 | 常量 | |
| 52 | |------|------|------|------| |
| 53 | | 上海 | `xtconstant.SH_MARKET` | 中金所 | `xtconstant.MARKET_ENUM_INDEX_FUTURE` | |
| 54 | | 深圳 | `xtconstant.SZ_MARKET` | 上期所 | `xtconstant.MARKET_ENUM_SHANGHAI_FUTURE` | |
| 55 | | 北交所 | `xtconstant.MARKET_ENUM_BEIJING` | 郑商所 | `xtconstant.MARKET_ENUM_ZHENGZHOU_FUTURE` | |
| 56 | | 大商所 | `xtconstant.MARKET_ENUM_DALIANG_FUTURE` | 广期所 | `xtconstant.MARKET_ENUM_GUANGZHOU_FUTURE` | |
| 57 | |
| 58 | #### 账号类型 (account_type) |
| 59 | | 类型 | 常量 | 类型 | 常量 | |
| 60 | |------|------|------|------| |
| 61 | | 股票 | `xtconstant.SECURITY_ACCOUNT` | 沪港通 | `xtconstant.HUGANGTONG_ACCOUNT` | |
| 62 | | 期货 | `xtconstant.FUTURE_ACCOUNT` | 深港通 | `xtconstant.SHENGANGTONG_ACCOUNT` | |
| 63 | | 信用 | `xtconstant.CREDIT_ACCOUNT` | 期货期权 | `xtconstant.FUTURE_OPTION_ACCOUNT` | |
| 64 | | 股票期权 | `xtconstant.STOCK_OPTION_ACCOUNT` | - | - | |
| 65 | |
| 66 | ## 操作步骤 |
| 67 | |
| 68 | 1. **确定需求** — 识别是行情数据获取还是交易操作 |
| 69 | 2. **选择模块** — xtdata 用于行情,xttrader 用于交易 |
| 70 | 3. **调用脚本** — 根据数据类型选择对应脚本 |
| 71 | 4. **解析结果** — 智能体分析返回的 JSON 格式数据 |
| 72 | |
| 73 | ### 意图识别映射示例 |
| 74 | |
| 75 | | 用户提问 | 对应功能 | 调用方式 | |
| 76 | |---------|---------|---------| |
| 77 | | "贵州茅台实时股价" | 实时行情快照 | xtdata.get_full_tick | |
| 78 | | "平安银行K线数据" | K线数据 | xtdata.get_market_data | |
| 79 | | "招商银行财务指标" | 财务报表 | xtdata.get_financial_data | |
| 80 | | "半导体板块成分股" | 板块成分股 | xtdata.get_stock_list_in_sector | |
| 81 | | "今日可转债信息" | ETF/可转债数据 | xtdata.get_cb_info | |
| 82 | | "新股申购" | 新股信息 | xtdata.get_ipo_info | |
| 83 | | "下单买入平安银行" | 交易下单 | xttrader.order_stock | |
| 84 | | "查询持仓" | 持仓查询 | xttrader.query_stock_positions | |
| 85 | | "撤单" | 撤单操作 | xttrader.cancel_order_stock | |
| 86 | |
| 87 | ## 使用示例 |
| 88 | |
| 89 | ### 示例1:获取股票实时行情 |
| 90 | ```python |
| 91 | import xtdata |
| 92 | |
| 93 | # 获取全推行情快照 |
| 94 | ticks = xtdata.get_full_tick(['600519.SH', '000001.SZ']) |
| 95 | |
| 96 | # 订阅单股实时行情 |
| 97 | def on_data(datas): |
| 98 | for code in datas: |
| 99 | print(code, datas[code]) |
| 100 | |
| 101 | xtdata.subscribe_quote('600519.SH', period='tick', callback=on_data) |
| 102 | xtdata.run() |
| 103 | ``` |
| 104 | |
| 105 | ### 示例2:获取K线历史数据 |
| 106 | ```python |
| 107 | import xtdata |
| 108 | |
| 109 | # 下载历史K线数据 |
| 110 | xtdata.download_history_data2(['600519.SH'], period='1d', start_time='') |
| 111 | |
| 112 | # 获取K线数据 |
| 113 | data = xtdata.get_market_data( |
| 114 | field_list=['open', 'high', 'low', 'close', 'volume'], |
| 115 | stock_list=['600519.SH'], |
| 116 | period='1d', |
| 117 | start_time='20240101', |
| 118 | end_time='', |
| 119 | count=100, |
| 120 | dividend_type='front' |
| 121 | ) |
| 122 | ``` |
| 123 | |
| 124 | ### 示例3:交易下单 |
| 125 | ```python |
| 126 | from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback |
| 127 | from xtquant.xttype import StockAccount |
| 128 | from xtquant import xtconstant |
| 129 | |
| 130 | # 配置路径和会话 |
| 131 | path = 'D:\\迅投极速交易终端\\userdata_mini' |
| 132 | session_id = 123456 |
| 133 | xt_trader = XtQuantTrader(path, session_id) |
| 134 | |
| 135 | # 创建账号对象 |
| 136 | acc = StockAccount('1000000365') # 替换为实际账号 |
| 137 | |
| 138 | # 连接交易 |
| 139 | xt_trader.start() |
| 140 | connect_result = xt_trader.connect() |
| 141 | subscribe_result = xt_trader.subscribe(acc) |
| 142 | |
| 143 | # 下单买入 |
| 144 | order_id = xt_trader.order_stock( |
| 145 | acc, |
| 146 | '600519.SH', |
| 147 | xtconstant.STOCK_BUY, |
| 148 | 100, # 100股 |
| 149 | xtconstant.FIX_PRICE, |
| 150 | 1800.0, # 价格 |
| 151 | 'strategy1', |
| 152 | 'remark' |
| 153 | ) |
| 154 | |
| 155 | # 查询资产 |
| 156 | asset = xt_trader.query_stock_asset(acc) |
| 157 | print(f"可用资金: {asset.cash}") |
| 158 | ``` |
| 159 | |
| 160 | ### 示例4:订阅行情并实时处理 |
| 161 | ```python |
| 162 | import xtdata |
| 163 | |
| 164 | def on_tick_data(datas): |
| 165 | for code in datas: |
| 166 | tick = datas[code] |
| 167 | print(f"{code}: 现价={tick['lastPrice']}, 成交量={tick['volume']}") |
| 168 | |
| 169 | # 订阅多只股票 |
| 170 | xtdata.subscribe_whole_quote(['SH', 'SZ'], callback=on_tick_data) |
| 171 | xtdata.run() |
| 172 | ``` |
| 173 | |
| 174 | ## 资源索引 |
| 175 | |
| 176 | ### 行情数据脚本 |
| 177 | |
| 178 | - **行情快照**:`python scripts/market_data.py snapshot --code 600519.SH` |
| 179 | - **K线数据**:`python scripts/market_data.py kline --code 600519.SH --period 1d --count 100` |
| 180 | - **分笔数据**:`python scripts/market_data.py tick --code 600519.SH --count 100` |
| 181 | - **实时行情**:`python scripts/market_data.py full_tick --codes 600519.SH,000001.SZ` |
| 182 | |
| 183 | ### 板块与财务脚本 |
| 184 | |
| 185 | - **板块列表**:`python scripts/sector_data.py sector_list` |
| 186 | - **板块成分股**:`python scripts/sector_data.py sector_stocks --sector 半导体` |
| 187 | - **财务 |