Skip to content

如何用AI量化神器TensorTrade对接QMT?三大方案全解析(附实战代码)

作者:老余捞鱼

原创不易,转载请标明出处及原作者。

写在前面的话:今天写一写用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万以上:需增加算法拆单功能。

策略逻辑

  1. 使用TensorTrade训练双低策略(低价+低溢价率)
  2. 当AI检测到标的满足:价格<110元 & 溢价率<20% → 触发买入信号
  3. 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 五层防护体系

  1. 硬止损:在QMT设置5%单日最大亏损自动熔断。
  2. 信号校验:AI信号需通过波动率过滤(例如排除涨跌幅>7%的异常信号)。
  3. 仓位控制:单策略最大仓位≤20%(华尔街量化团队通用规则)。
  4. 异常监测:每日检查程序日志(重点关注订单重复、网络中断等问题)。
  5. 人工接管:设置企业微信/邮件报警(示例代码见下方)。
# 异常报警代码示例(结合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内存+SSD0元(已有设备)低频策略(日均交易<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 量化旅程。

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


本文内容仅限技术探讨和学习,不构成任何投资建议。

Published inAI&Invest专栏

Be First to Comment

    发表回复