QMT迅投量化交易终端 - 内置Python策略开发、回测引擎和实盘交易,支持中国证券市场全品种。
QMT(Quant Market Trading)是迅投科技开发的专业量化交易平台。提供完整的桌面客户端,内置Python策略开发、回测引擎和实盘交易功能,支持中国证券市场全品种。
⚠️ 需要通过券商开通QMT权限。QMT仅在Windows上运行。可通过国金、华鑫、中泰、东方财富等券商获取。
| 模式 | 说明 |
|---|---|
| QMT(完整版) | 完整桌面GUI,内置Python编辑器、图表和回测引擎 |
| miniQMT |
QMT提供事件驱动策略框架,内置Python运行时(类似聚宽/米筐)。
python
def init(ContextInfo):
初始化函数 - 策略启动时调用一次,用于设置股票池和参数
ContextInfo.set_universe([000001.SZ, 600519.SH])
def handlebar(ContextInfo):
K线处理函数 - 每根K线触发一次(tick/1m/5m/1d等),在此编写交易逻辑
close = ContextInfo.getmarketdata([close], stock_code=000001.SZ, period=1d, count=20)
# 在此编写交易逻辑
def stop(ContextInfo):
停止函数 - 策略停止时调用
pass
python
def handlebar(ContextInfo):
# 获取最近20根K线的收盘价
data = ContextInfo.getmarketdata(
[open, high, low, close, volume],
stock_code=000001.SZ,
period=1d,
count=20
)
# 获取历史数据
history = ContextInfo.gethistorydata(
20, 1d, close, stock_code=000001.SZ
)
# 获取板块股票列表
stocks = ContextInfo.getstocklistinsector(沪深A股)
# 获取财务数据
fin = ContextInfo.getfinancialdata(000001.SZ)
python
def handlebar(ContextInfo):
# 限价买入100股,价格11.50
order_shares(000001.SZ, 100, fix, 11.50, ContextInfo)
# 限价卖出100股,价格12.00
order_shares(000001.SZ, -100, fix, 12.00, ContextInfo)
# 按目标金额买入(10万元)
ordertargetvalue(000001.SZ, 100000, fix, 11.50, ContextInfo)
# 撤单
cancel(order_id, ContextInfo)
python
def handlebar(ContextInfo):
# 获取持仓信息
positions = gettradedetaildata(youraccount, stock, position)
for pos in positions:
print(pos.mstrInstrumentID, pos.mnVolume, pos.m_dMarketValue)
# 获取委托信息
orders = gettradedetaildata(youraccount, stock, order)
# 获取账户资产信息
account = gettradedetaildata(youraccount, stock, account)
QMT内置回测引擎:
python
def init(ContextInfo):
ContextInfo.capital = 1000000 # 初始资金
ContextInfo.set_commission(0.0003) # 手续费率
ContextInfo.set_slippage(0.01) # 滑点
ContextInfo.set_benchmark(000300.SH) # 基准指数
python
import numpy as np
def init(ContextInfo):
ContextInfo.stock = 000001.SZ
ContextInfo.set_universe([ContextInfo.stock])
ContextInfo.fast = 5 # 快速均线周期
ContextInfo.slow = 20 # 慢速均线周期
def handlebar(ContextInfo):
stock = ContextInfo.stock
# 获取最近slow+1根K线的收盘价
closes = ContextInfo.gethistorydata(ContextInfo.slow + 1, 1d, close, stock_code=stock)
if len(closes) < ContextInfo.slow:
return # 数据不足,跳过
# 计算当前和前一根K线的快慢均线值
ma_fast = np.mean(closes[-ContextInfo.fast:])
ma_slow = np.mean(closes[-ContextInfo.slow:])
prev_fast = np.mean(closes[-ContextInfo.fast-1:-1])
prev_slow = np.mean(closes[-ContextInfo.slow-1:-1])
# 查询当前持仓
positions = gettradedetail_data(ContextInfo.accID, stock, position)
holding = any(p.mstrInstrumentID == stock and p.mnVolume > 0 for p in positions)
# 金叉信号:快速均线上穿慢速均线,买入
if prevfast <= prevslow and mafast > maslow and not holding:
order_shares(stock, 1000, fix, closes[-1], ContextInfo)
# 死叉信号:快速均线下穿慢速均线,卖出
elif prevfast >= prevslow and mafast < maslow and holding:
order_shares(stock, -1000, fix, closes[-1], ContextInfo)
| 类别 | 内容 |
|---|---|
| 股票 | A股(沪、深、北交所)、港股通 |
| 指数 |
| 特性 | QMT | miniQMT | Ptrade |
|---|---|---|---|
| 厂商 | 迅投科技 | 迅投科技 | 恒生电子 |
| Python |
python
import numpy as np
def init(ContextInfo):
# 设置股票池:银行龙头股
ContextInfo.stock_pool = [601398.SH, 601939.SH, 601288.SH, 600036.SH, 601166.SH]
ContextInfo.setuniverse(ContextInfo.stockpool)
ContextInfo.hold_num = 2 # 最多持有2只股票
def handlebar(ContextInfo):
# 计算每只股票的20日收益率
momentum = {}
for stock in ContextInfo.stock_pool:
closes = ContextInfo.gethistorydata(21, 1d, close, stock_code=stock)
if len(closes) >= 21:
ret = (closes[-1] - closes[0]) / closes[0] # 20日收益率
momentum[stock] = ret
# 按动量排序,选择前N只股票
sorted_stocks = sorted(momentum.items(), key=lambda x: x[1], reverse
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 qmt-1776128343 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 qmt-1776128343 技能
skillhub install qmt-1776128343
文件大小: 50.01 KB | 发布时间: 2026-4-15 14:04