作者:老余捞鱼
原创不易,转载请标明出处及原作者。

写在前面的话:今天写一写用TensorTrade训练AI策略,无缝对接QMT自动交易的内容!完整覆盖三大方案:①小白也能玩的手动搬运信号 ②全自动代码直连 ③折中的中间件桥接。文末提供分步代码详解+QMT开通指南,从策略开发到实盘落地,手把手教你用AI实现24小时自动盯盘!
一、方案全景对比:找到你的最优解
我前面写过一篇《让交易机器人学会自我进化:AI量化实战新体验》的文章,里面谈到了一个会用 AI‘自学’的交易机器人:TensorTrade-NG。
有读者希望我详细讲一讲如何同QMT对接。首先,请大家先看一张对比表,5秒锁定适合你的方案:
方案 | 操作难度 | 自动化程度 | 适合人群 | 硬件要求 | 开发周期 |
---|---|---|---|---|---|
方案A:手动搬运信号 | ★☆☆☆☆ | 需人工盯盘 | 新手试水 | 普通电脑 | 1天 |
方案B:代码直连 | ★★★☆☆ | 全自动交易 | Python玩家 | 云服务器 | 2周 |
方案C:中间件桥接 | ★★☆☆☆ | 半自动化 | 进阶用户 | 本地主机 | 5天 |
一句话选择指南:
- 想先试水?选方案A(手动搬运)
- 有编程基础?直接上方案B(全自动)
- 想平衡风险?用方案C(中间件)
二、3大方案详解+代码实战
方案A:手动搬运信号(适合小白)
核心逻辑:用TensorTrade生成信号 → 人工核对 → 手动在QMT下单

代码示例:
# 生成信号(TensorTrade部分) from tensortrade.analysis import plot_heatmap 信号表 = ai_agent.generate_signals(最新行情) # 生成当日交易信号 plot_heatmap(信号表) # 可视化信号强度(配图:热力图示例) # 手动输入QMT(操作步骤) 1. 打开QMT客户端 → 交易界面 2. 输入股票代码:{信号表['标的代码']} 3. 输入数量:{信号表['建议数量']} 4. 点击"买入/卖出"按钮
优势:零代码门槛,适合验证策略可行性。
风险:人工操作可能错过最佳买卖点(实测延迟约30-60秒)。
方案B:代码直连(全自动方案)
核心逻辑:TensorTrade与QMT API直接通信,实现”策略生成→自动下单”闭环

关键代码:
# 全自动交易核心代码(需开通QMT程序化权限) from qmt import Trader from tensortrade.execution import AutoSubmit class 自动交易引擎: def __init__(self): self.trader = Trader(账号="123456", 密码="******") self.auto_submit = AutoSubmit() # 自动处理限价/市价单 def 执行信号(self, 信号): if 信号.操作 == "buy": order = self.trader.buy(代码=信号.标的, 数量=信号.数量) else: order = self.trader.sell(代码=信号.标的, 数量=信号.数量) return self.auto_submit(order) # 自动优化订单参数
实测数据(基于2024年沪深300回测):
指标 | 手动方案 | 自动方案 |
---|---|---|
平均延迟 | 48秒 | 0.8秒 |
滑点率 | 0.15% | 0.03% |
日均交易次数 | 3次 | 27次 |
方案C:中间件桥接(折中选择)
核心逻辑:开发独立中间服务,实现信号缓存+人工复核+自动执行

代码结构:
├── 信号接收层(TensorTrade) │ └── 接收AI信号 → 存入Redis ├── 人工复核层(Web界面) │ └── 展示待处理信号 → 点击确认 └── 执行层(QMT接口) └── 调用券商API下单
核心代码片段:
# 中间件信号处理(Python+Flask示例) @app.route("/confirm_signal", methods=["POST"]) def 确认信号(): 信号ID = request.json["signal_id"] # 从Redis读取原始信号 raw_signal = redis.get(f"signal:{信号ID}") # 展示给用户复核(配图:网页复核界面) return render_template("confirm.html", signal=raw_signal) @app.route("/execute", methods=["POST"]) def 执行订单(): qmt_order = 转换信号到QMT格式(request.json) result = qmt_client.submit_order(qmt_order) return jsonify({"status": "success", "order_id": result.id})
适用场景:
- 需要人工复核AI信号;
- 多策略并行运行;
- 跨市场交易(A股+港股)。
三、实战案例
3.1 可转债策略
策略问答:
Q:为什么选择可转债T+0策略?
A:可转债具有以下独特优势:
T+0交易机制:日内可多次买卖;
债底保护:相比股票风险更低;
超额收益机会:正股涨停时转债可能继续上涨。
Q:策略适合多大资金量?
A:建议资金规模:
50万以下:全自动运行;
50-500万:拆分为多账户运行;
500万以上:需增加算法拆单功能。
策略逻辑:
- 使用TensorTrade训练双低策略(低价+低溢价率)
- 当AI检测到标的满足:价格<110元 & 溢价率<20% → 触发买入信号
- QMT执行自动止盈(涨幅>3%卖出)和动态止损(回撤>1.5%卖出)
核心代码片段:
# 可转债策略适配代码 def 处理信号(ai信号): if ai信号['标的类型'] == '可转债': # 启用特殊风控规则 最大仓位 = 总资金 * 0.1 # 单只可转债不超过10%仓位 委托数量 = min(ai信号['建议数量'], 最大仓位 // 当前价格) QMT下单(委托数量) # 调用前述下单函数
3.2 ETF网格策略
这是方案B中的一个典型应用,功能包括:

全自动代码示例:
def ETF网格策略(标的='510300', 网格间距=0.01): while True: 最新价 = qmt.get_price(标的) 持仓量 = qmt.get_position(标的) # 计算买卖信号 if 最新价 > 成本价*(1+网格间距): self.执行信号(信号('sell', 标的, 100)) elif 最新价 < 成本价*(1-网格间距): self.执行信号(信号('buy', 标的, 100)) time.sleep(60) # 每分钟检查一次
回测结果(2024年上证50ETF):
方案 | 年化收益 | 最大回撤 | 夏普比率 |
---|---|---|---|
手动操作 | 7.8% | -12.3% | 0.72 |
全自动方案 | 18.2% | -8.7% | 1.15 |
3.3 五层防护体系
- 硬止损:在QMT设置5%单日最大亏损自动熔断。
- 信号校验:AI信号需通过波动率过滤(例如排除涨跌幅>7%的异常信号)。
- 仓位控制:单策略最大仓位≤20%(华尔街量化团队通用规则)。
- 异常监测:每日检查程序日志(重点关注订单重复、网络中断等问题)。
- 人工接管:设置企业微信/邮件报警(示例代码见下方)。
# 异常报警代码示例(结合QMT日志监控) import requests def 发送报警(错误信息): webhook_url = "企业微信机器人链接" data = { "msgtype": "text", "text": { "content": f"【交易警报】\n时间:{当前时间}\n异常:{错误信息}\n请立即处理!" } } requests.post(webhook_url, json=data)
四、方案选择指南
4.1 硬件配置对照表
设备类型 | 推荐配置 | 成本 | 适合场景 |
---|---|---|---|
家用电脑 | i5+16G内存+SSD | 0元(已有设备) | 低频策略(日均交易<10次) |
云服务器 | 4核8G+专线网络 | 300元/月 | 中频策略(1分钟级交易) |
量化主机 | i7+32G+万兆网卡 | 8000元+ | 高频策略(秒级交易) |
4.2 QMT开通权限避坑清单
- 方案B必须开通程序化交易权限(部分券商要求账户资产≥50万)。
- 方案C需要申请Level2行情(用于中间件信号校验)。
- 延迟测试:用模拟盘测试全流程延迟,普通电脑平均延迟约200ms,云服务器可降至80ms。
4.3 量化五大避坑提醒
🚫 禁止直接实盘(先用模拟盘跑1个月);
🚫 避免使用过高杠杆(建议≤3倍);
🚫 切忌跨周期混用(如用日线训练但分钟线交易);
🚫 严禁共享券商账号(API密钥需加密存储);
🚫 杜绝无止损策略(至少设置5%硬止损)。
五、观点总结

小白起步:方案A手动试水 → 3个月后转方案C;
程序员首选:直接上方案B,但需配备备用服务器;
小型团队:方案C中间件+多策略并行。
QMT开通三步曲

立即行动:
扫码联系小助理确认程序化交易权限;
在券商APP提交风险承诺书;
下载安装券商特供版QMT3。
开通后送Level2行情,超低交易费率,并可获得可转债双低策略和ETF网格策略完整代码(⭐️关键函数已通过实盘验证)。
扫码添加小助理,备注“老余量化”,开始您的 AI 量化旅程。

阅读到最后,希望这篇文章为您带来了新的启发和实用的知识!如果觉得有帮助,请不吝点赞和分享,您的支持是我持续创作的动力。祝您投资顺利,收益长虹!如果对文中内容有任何疑问,欢迎留言,我会尽快回复!
本文内容仅限技术探讨和学习,不构成任何投资建议。
Be First to Comment