免责声明:本文基于个人使用体验,与任何厂商无商业关系。内容仅供技术交流参考,不构成投资建议。
一、前言
作为一名在期货量化领域深耕了二十年的老交易员,我见证了太多策略在回测中表现优异,却在实盘中折戟沉沙的案例。
很多时候,问题不在策略本身,而在于部署上线的流程不规范。
今天这篇文章,我来分享一下期货量化策略从回测到实盘的完整部署流程,希望能帮助大家少踩坑。
二、部署上线的完整流程
回测验证 → 参数确认 → 模拟交易 → 小资金实盘 → 正式运行 → 持续监控每个环节都不能省略,下面逐一详解。
三、Step 1:回测验证
1.1 回测要求
在考虑上线之前,策略必须通过以下验证:
| 检查项 | 要求 |
|---|---|
| 样本外测试 | 必须在未见过的数据上验证 |
| 参数稳定性 | 参数小幅变化时表现稳定 |
| 交易成本 | 必须包含滑点和手续费 |
| 回测时长 | 至少覆盖2-3年数据 |
1.2 回测代码示例
fromtqsdkimportTqApi,TqAuth,TqBacktest,TqSimfromdatetimeimportdate# 回测配置api=TqApi(TqSim(init_balance=100000),backtest=TqBacktest(start_dt=date(2023,1,1),end_dt=date(2025,6,30)),auth=TqAuth("账户","密码"))# 策略代码...# 回测结束后检查关键指标account=api.get_account()print(f"最终权益:{account.balance}")print(f"收益率:{(account.balance-100000)/100000*100:.2f}%")1.3 回测通过标准
| 指标 | 建议标准 |
|---|---|
| 年化收益 | > 15%(考虑成本后) |
| 最大回撤 | < 20% |
| 夏普比率 | > 1.0 |
| 胜率 | > 35%(趋势策略) |
| 盈亏比 | > 1.5 |
四、Step 2:参数确认
2.1 参数文档化
将策略参数整理成文档:
# 策略参数配置STRATEGY_CONFIG={# 交易参数"symbol":"SHFE.rb2505","volume":1,# 策略参数"ma_fast":10,"ma_slow":30,"atr_period":20,"stop_loss_atr":2.0,# 风控参数"max_position":3,"max_daily_loss":0.05,# 回测结果"backtest_return":0.285,"backtest_max_dd":0.123,"backtest_sharpe":1.45,}2.2 参数版本管理
使用Git管理参数变更:
gitaddstrategy_config.pygitcommit -m"v1.0: 双均线策略参数确认,回测收益28.5%"五、Step 3:模拟交易
5.1 模拟交易的目的
- 验证代码在实时环境能正常运行
- 检验策略对实时行情的响应
- 发现回测中未暴露的问题
- 熟悉操作流程
5.2 模拟交易代码
fromtqsdkimportTqApi,TqAuth,TqSim# 模拟交易模式(去掉backtest参数)api=TqApi(TqSim(init_balance=100000),# 使用模拟账户auth=TqAuth("账户","密码"))# 策略代码完全不变symbol="SHFE.rb2505"klines=api.get_kline_serial(symbol,60,200)position=api.get_position(symbol)whileTrue:api.wait_update()# 策略逻辑...5.3 模拟交易检查清单
- 策略能正常启动
- 行情数据正常接收
- 信号触发正确
- 订单能正常提交
- 持仓状态正确更新
- 日志记录完整
- 异常处理正常
5.4 模拟交易时长
建议至少运行2-4周,覆盖不同的市场环境。
六、Step 4:小资金实盘
6.1 为什么要小资金起步?
- 验证真实交易环境
- 发现模拟中未暴露的问题
- 控制风险
6.2 实盘代码
fromtqsdkimportTqApi,TqAuth,TqAccount# 实盘交易模式api=TqApi(TqAccount("期货公司名称","资金账号","密码"),auth=TqAuth("账户","密码"))# 策略代码完全不变# ...注意:从模拟到实盘,只需要改一行代码,这是TqSdk的优势之一。
6.3 小资金实盘检查
| 检查项 | 说明 |
|---|---|
| 账户连接 | 确认能正常连接期货账户 |
| 资金状态 | 确认可用资金充足 |
| 下单测试 | 手动下单测试流程 |
| 成交确认 | 确认订单能正常成交 |
| 滑点观察 | 记录实际滑点情况 |
6.4 小资金实盘时长
建议至少运行1-2个月,观察:
- 策略表现与回测是否一致
- 滑点是否在预期范围内
- 系统稳定性
七、Step 5:正式运行
7.1 正式运行前的准备
# 完整的策略启动代码importloggingfromdatetimeimportdatetimefromtqsdkimportTqApi,TqAuth,TqAccount# 配置日志logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s',handlers=[logging.FileHandler(f'strategy_{datetime.now().strftime("%Y%m%d")}.log'),logging.StreamHandler()])# 策略配置CONFIG={"broker":"期货公司","account":"资金账号","password":"密码","tq_user":"TQ账户","tq_pass":"TQ密码","symbol":"SHFE.rb2505","volume":2,# 正式运行可适当增加}# 初始化try:api=TqApi(TqAccount(CONFIG["broker"],CONFIG["account"],CONFIG["password"]),auth=TqAuth(CONFIG["tq_user"],CONFIG["tq_pass"]))logging.info("API连接成功")exceptExceptionase:logging.error(f"API连接失败:{e}")exit(1)# 策略主循环whileTrue:try:api.wait_update()# 策略逻辑...exceptExceptionase:logging.error(f"策略异常:{e}")# 异常处理...7.2 部署环境
| 环境 | 推荐配置 |
|---|---|
| 服务器 | 云服务器(2核4G起) |
| 系统 | Ubuntu 22.04 |
| Python | 3.10 |
| 网络 | 稳定的网络连接 |
7.3 开机自启配置
# 使用systemd配置开机自启# /etc/systemd/system/trading.service[Unit]Description=Trading StrategyAfter=network.target[Service]Type=simpleUser=traderWorkingDirectory=/home/trader/strategyExecStart=/usr/bin/python3 main.pyRestart=alwaysRestartSec=10[Install]WantedBy=multi-user.target八、Step 6:持续监控
8.1 监控指标
defdaily_report(api):"""每日报告"""account=api.get_account()report={"日期":datetime.now().strftime("%Y-%m-%d"),"账户权益":account.balance,"可用资金":account.available,"持仓盈亏":account.position_profit,"当日盈亏":account.close_profit,}logging.info(f"每日报告:{report}")# 发送通知(钉钉/微信/邮件)send_notification(report)8.2 异常告警
defcheck_risk(api,config):"""风险检查"""account=api.get_account()# 检查最大回撤ifaccount.balance<config["initial_balance"]*0.85:send_alert("警告:账户回撤超过15%!")returnFalse# 检查日亏损ifaccount.close_profit<-config["initial_balance"]*0.03:send_alert("警告:当日亏损超过3%!")returnFalsereturnTrue8.3 定期复盘
| 频率 | 复盘内容 |
|---|---|
| 每日 | 检查交易记录、异常情况 |
| 每周 | 分析策略表现、对比回测 |
| 每月 | 评估是否需要调整参数 |
| 每季 | 全面评估策略有效性 |
九、部署检查清单
上线前检查
- 回测通过所有验证标准
- 参数已文档化并版本管理
- 模拟交易至少2周无异常
- 小资金实盘至少1个月
- 服务器环境配置完成
- 日志系统正常运行
- 告警通知配置完成
- 异常处理逻辑完善
- 风控规则已设置
上线后检查
- 策略正常运行
- 每日检查交易记录
- 监控策略表现
- 及时处理异常情况
十、我的部署经验
分享一下我目前的部署配置:
| 组件 | 选择 |
|---|---|
| 量化框架 | TqSdk |
| 服务器 | 阿里云ECS(上海地区) |
| 系统 | Ubuntu 22.04 |
| 监控 | 自建 + 钉钉告警 |
| 备份 | 本地一台备用机 |
选择TqSdk的原因:回测代码和实盘代码一致,部署时改一行代码即可,大大减少出错可能。
十一、总结
期货量化策略部署上线的核心原则:
- 不要跳步:每个环节都有其意义
- 小心谨慎:宁可慢一点,不要急于求成
- 持续监控:上线不是终点,是新的开始
- 及时止损:发现问题及时处理
希望这篇部署指南对你有所帮助!
声明:本文基于个人学习经验整理,仅供技术交流参考,不构成任何投资建议。