核心内容摘要
SmallThinker-3B-Preview嵌入式AI应用实战:STM32F103C8T6边缘计算集成
免责声明本文基于个人使用体验与任何厂商无商业关系。
内容仅供技术交流参考不构成投资建议。
前言作为一名在期货量化领域深耕了二十年的老交易员我见证了太多策略在回测中表现优异却在实盘中折戟沉沙的案例。
很多时候问题不在策略本身而在于部署上线的流程不规范。
今天这篇文章我来分享一下期货量化策略从回测到实盘的完整部署流程希望能帮助大家少踩坑。
部署上线的完整流程回测验证 → 参数确认 → 模拟交易 → 小资金实盘 → 正式运行 → 持续监控每个环节都不能省略下面逐一详解。
Step 1回测验证
1 回测要求在考虑上线之前策略必须通过以下验证检查项要求样本外测试必须在未见过的数据上验证参数稳定性参数小幅变化时表现稳定交易成本必须包含滑点和手续费回测时长至少覆盖
年数据
2 回测代码示例fromtqsdkimportTqApi,TqAuth,TqBacktest,TqSimfromdatetimeimportdate# 回测配置apiTqApi(TqSim(init_balance
,backtestTqBacktest(start_dtdate(2023,1,
,end_dtdate(2025,6,
),authTqAuth(账户,密码))# 策略代码...# 回测结束后检查关键指标accountapi.get_account()print(f最终权益:{account.balance})print(f收益率:{(account.balance-
/100000*100:.2f}%)
3 回测通过标准指标建议标准年化收益 15%考虑成本后最大回撤 20%夏普比率
0胜率 35%趋势策略盈亏比
5
Step 2参数确认
1 参数文档化将策略参数整理成文档# 策略参数配置STRATEGY_CONFIG{# 交易参数symbol:SHFE.rb2505,volume:1,# 策略参数ma_fast:10,ma_slow:30,atr_period:20,stop_loss_atr:
0,# 风控参数max_position:3,max_daily_loss:
05,# 回测结果backtest_return:
285,backtest_max_dd:
123,backtest_sharpe:
45,}
2 参数版本管理使用Git管理参数变更gitaddstrategy_config.pygitcommit -mv
0: 双均线策略参数确认回测收益
2
5%
Step 3模拟交易
1 模拟交易的目的验证代码在实时环境能正常运行检验策略对实时行情的响应发现回测中未暴露的问题熟悉操作流程
2 模拟交易代码fromtqsdkimportTqApi,TqAuth,TqSim# 模拟交易模式去掉backtest参数apiTqApi(TqSim(init_balance
,# 使用模拟账户authTqAuth(账户,密码))# 策略代码完全不变symbolSHFE.rb2505klinesapi.get_kline_serial(symbol,60,
positionapi.get_position(symbol)whileTrue:api.wait_update()# 策略逻辑...
3 模拟交易检查清单策略能正常启动行情数据正常接收信号触发正确订单能正常提交持仓状态正确更新日志记录完整异常处理正常
4 模拟交易时长建议至少运行
周覆盖不同的市场环境。
Step 4小资金实盘
1 为什么要小资金起步验证真实交易环境发现模拟中未暴露的问题控制风险
2 实盘代码fromtqsdkimportTqApi,TqAuth,TqAccount# 实盘交易模式apiTqApi(TqAccount(期货公司名称,资金账号,密码),authTqAuth(账户,密码))# 策略代码完全不变# ...注意从模拟到实盘只需要改一行代码这是TqSdk的优势之一。
3 小资金实盘检查检查项说明账户连接确认能正常连接期货账户资金状态确认可用资金充足下单测试手动下单测试流程成交确认确认订单能正常成交滑点观察记录实际滑点情况
4 小资金实盘时长建议至少运行
个月观察策略表现与回测是否一致滑点是否在预期范围内系统稳定性
Step 5正式运行
1 正式运行前的准备# 完整的策略启动代码importloggingfromdatetimeimportdatetimefromtqsdkimportTqApi,TqAuth,TqAccount# 配置日志logging.basicConfig(levellogging.INFO,format%(asctime)s - %(levelname)s - %(message)s,handlers[logging.FileHandler(fstrategy_{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:apiTqApi(TqAccount(CONFIG[broker],CONFIG[account],CONFIG[password]),authTqAuth(CONFIG[tq_user],CONFIG[tq_pass]))logging.info(API连接成功)exceptExceptionase:logging.error(fAPI连接失败:{e})exit(
# 策略主循环whileTrue:try:api.wait_update()# 策略逻辑...exceptExceptionase:logging.error(f策略异常:{e})# 异常处理...
2 部署环境环境推荐配置服务器云服务器2核4G起系统Ubuntu
2
04Python
10网络稳定的网络连接
3 开机自启配置# 使用systemd配置开机自启# /etc/systemd/system/trading.service[Unit]DescriptionTrading StrategyAfternetwork.target[Service]TypesimpleUsertraderWorkingDirectory/home/trader/strategyExecStart/usr/bin/python3 main.pyRestartalwaysRestartSec10[Install]WantedBymulti-user.target
Step 6持续监控
1 监控指标defdaily_report(api):每日报告accountapi.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)
2 异常告警defcheck_risk(api,config):风险检查accountapi.get_account()# 检查最大回撤ifaccount.balanceconfig[initial_balance]*
85:send_alert(警告账户回撤超过15%)returnFalse# 检查日亏损ifaccount.close_profit-config[initial_balance]*
03:send_alert(警告当日亏损超过3%)returnFalsereturnTrue
3 定期复盘频率复盘内容每日检查交易记录、异常情况每周分析策略表现、对比回测每月评估是否需要调整参数每季全面评估策略有效性
部署检查清单上线前检查回测通过所有验证标准参数已文档化并版本管理模拟交易至少2周无异常小资金实盘至少1个月服务器环境配置完成日志系统正常运行告警通知配置完成异常处理逻辑完善风控规则已设置上线后检查策略正常运行每日检查交易记录监控策略表现及时处理异常情况
我的部署经验分享一下我目前的部署配置组件选择量化框架TqSdk服务器阿里云ECS上海地区系统Ubuntu
2
04监控自建 钉钉告警备份本地一台备用机选择TqSdk的原因回测代码和实盘代码一致部署时改一行代码即可大大减少出错可能。
十一、