QMT Python API
快速开始
云策略平台支持 qmt 内置 python 接口的写法和原生 python 两种开发方式:
内置 python 模式
- 按平台规定的格式写:
init做初始化,handlebar写核心逻辑 - 好处:回测、交易都支持,一套代码跑通全流程
- 适合:需要验证策略、做历史回测的开发者
原生 python 模式
- 不套框架,完全按原生 Python 语法写,写法自由
- 行情数据获取和交易下单控制灵活
- 注意:这个模式回测需要自己搭建
- 适合:Python 功底扎实,不想被框架束缚的资深玩家
快速开始
最小回测策略
原型
1
# strategy.py2
def init(C):3
C.set_commission(0.0003)4
5
def handlebar(C):6
data = C.get_market_data_ex(['close'], [C.stock_code], period='1d', count=20)7
if C.stock_code not in data:8
return9
closes = data[C.stock_code]['close']10
ma5 = closes.iloc[-5:].mean()11
ma20 = closes.iloc[-20:].mean()12
13
if ma5 > ma20 and C.is_last_bar():14
order_shares(C.stock_code, 100, C=C)15
elif ma5 < ma20 and C.is_last_bar():16
order_shares(C.stock_code, -100, C=C)策略生命周期
用户脚本中定义以下函数,引擎按顺序调用:
| 函数 | 调用时机 | 必需 |
|---|---|---|
init(C) | 策略启动时调用一次 | 是 |
after_init(C) | init 之后调用一次 | 否 |
handlebar(C) | 每根 K 线调用一次(回测逐 bar 驱动 / 实盘行情驱动) | 是 |
on_backtest_finished(C) | 回测全部 bar 跑完后调用 | 否 |
stop(C) | 策略停止前调用(实盘退出时) | 否 |
回调函数(交易主推)
| 函数 | 说明 |
|---|---|
account_callback(C, account_info) | 账户状态变化 |
order_callback(C, order_info) | 委托回报 |
deal_callback(C, deal_info) | 成交回报 |
position_callback(C, position_info) | 持仓变化 |
orderError_callback(C, passorder_info, msg) | 报单错误 |
提示
交易主推回调函数仅在实盘模式下生效,详细的回调函数用法请参考回调函数。
周期对照表
| 参数值 | 说明 |
|---|---|
tick | 分笔 |
1m / 5m / 15m / 30m | 分钟线 |
1h / 2h / 4h | 小时线 |
1d | 日线 |
1w | 周线 |
1mon | 月线 |
1q / 1hy / 1y | 季/半年/年线 |