期货量化:天勤 TqSdk + vnpy CTA 策略
国内期货市场支持多空双向交易和 T+0,天然适合量化交易。本教程使用天勤 TqSdk(免费 Tick 级数据)和 vnpy(国内最成熟的开源量化框架),手把手教你从零搭建 CTA 趋势跟踪策略,最终实现自动化实盘交易。
1. 期货基础与工具安装
国内期货交易所:上海期货交易所(螺纹钢、铜、黄金)、大连商品交易所(铁矿石、豆粕)、郑州商品交易所(PTA、甲醇)、中国金融期货交易所(沪深300股指期货)。安装工具链:pip install tqsdk vnpy。天勤提供免费实时行情和历史 Tick 数据,vnpy 是完整的量化交易框架,包含回测引擎、实盘接口、风控模块。
2. 海龟交易法则实现
海龟交易法则是最经典的 CTA 趋势策略,由 Richard Dennis 在 1980 年代发明:(1) 入场信号:价格突破过去 20 日最高价(Donchian 通道上轨)做多,突破过去 20 日最低价(下轨)做空;(2) 初始仓位:总资金的 2% 除以 ATR(平均真实波幅),动态计算每笔交易的手数;(3) 加仓规则:价格每向有利方向移动 0.5 ATR 加仓一次,最多加仓 3 次;(4) 止盈止损:价格反向突破 10 日最低/最高价平仓。在 vnpy 的 CtaStrategy 模板中用 Python 实现这套规则。
3. 回测验证
用 vnpy 内置回测引擎 BacktestingEngine 进行测试:(1) 选择螺纹钢(rb)主力合约过去 3 年的 1 小时 K 线数据;(2) 设置初始资金 50 万,手续费按交易所标准加 1 分钱;(3) 关键指标:年化收益率、最大回撤(CTA 策略回撤 30% 是正常的)、胜率(趋势策略一般 35-45% 但盈亏比高)、夏普比率;(4) 分年度查看表现,确认策略在趋势年(如 2020、2023)和震荡年(如 2018)的表现差异。
4. SimNow 仿真交易
实盘前必须在仿真环境中充分测试:(1) 注册 SimNow 仿真账号(simnow.com.cn),获得模拟交易环境;(2) 在 vnpy 中配置 SimNow 的 CTP 接口参数(经纪商代码、交易地址、行情地址);(3) 连接 SimNow 后策略会自动执行,观察 1-2 个月。重点关注:下单是否成功、成交价与理论价偏差、持仓是否正确、每日盈亏报表。仿真运行期间不要轻易修改策略逻辑。
5. 实盘上线
仿真测试稳定 3 个月后,可以切换到实盘:(1) 去期货公司开通 CTP 交易权限,获取实盘 API 接入参数;(2) 实盘初期使用最小手数(1 手螺纹钢),观察实际滑点和成交速度;(3) 设置风控硬限制:当日亏损 > 总资金 5% 自动停止交易、单品种保证金不超过总资金 30%;(4) 每天收盘后检查交易日志,记录每笔交易的进出场理由和执行情况。
最佳实践
在SimNow仿真环境运行第一个海龟策略
🎯 写完CTA策略后需要在接近真实的环境中验证
安装vnpy→配置SimNow的CTP仿真参数→连接成功后查看rb(螺纹钢)主力合约的实时行情。
→ 交易终端与仿真环境连接成功,行情和下单通道正常
用CtaStrategy模板编写海龟策略:突破20日高点开多、跌破10日低点平仓。设置ATR动态仓位计算和初始止损。在vnpy中加载策略。
→ 策略在仿真环境中开始运行,监控日志看到信号触发和下单
SimNow跑2周后导出交易记录,对比回测结果看实盘滑点差异。计算实际成交价与信号价的偏差(目标<2个tick)。
→ 获得真实交易的成本基准,用于调整回测参数和策略参数
SimNow每天有维护窗口(15:30-16:00和次日8:00-8:30),策略中要加入重连逻辑
专家提示
- 趋势策略的核心是截断亏损让利润奔跑,不要因为两三次止损就放弃策略
- 实盘初期手续费和滑点可能比回测中大得多,预留 20% 的成本缓冲
- 期货交易要特别注意主力合约换月,避免交割月被强平