一、前言

跑策略的时候不可能24小时盯着屏幕。当策略发出交易信号、或者账户出现异常时,我们需要第一时间收到通知。

市面上有不少推送方案可以实现这个需求,但每种方案的接入难度、延迟、稳定性各不相同。我把自己用过的几种主流方案做了个对比测试,分享给大家。

本文将介绍:

  • 5种期货交易信号推送方案
  • 各方案的接入难度与延迟测试
  • 与量化策略集成的代码示例

二、需求分析

在选择推送方案之前,先明确我们的核心需求:

需求 优先级 说明
及时性 信号发出后几秒内收到通知
稳定性 不能漏推、不能频繁故障
易接入 Python调用方便
免费 最好不花钱
移动端 手机上能收到
富文本 支持表格、图片更好

三、5种推送方案详细评测

3.1 企业微信机器人 —— 国内最实用的方案

企业微信机器人大概是国内量化交易者用得最多的推送方案了。创建一个群聊,添加一个机器人,拿到Webhook地址就能推送消息,整个过程5分钟搞定。

import requests
import json

def send_wechat(webhook_url, content):
    """通过企业微信机器人推送消息"""
    data = {
        "msgtype": "markdown",
        "markdown": {
            "content": content
        }
    }
    resp = requests.post(webhook_url, json=data)
    return resp.json()

# 使用示例
webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的key"
msg = """**📈 交易信号通知**
> 品种:螺纹钢 rb2510
> 方向:<font color="red">买入开仓</font>
> 价格:3380
> 时间:2026-02-25 10:30:00
> 策略:双均线交叉"""

send_wechat(webhook, msg)
评测维度 评价
接入难度 ⭐(最简单,5分钟搞定)
延迟 1-3秒
稳定性 高,腾讯服务
费用 完全免费
富文本 支持Markdown
频率限制 每分钟最多20条
不足 需要企业微信

3.2 钉钉机器人 —— 企业微信的替代方案

钉钉机器人的使用方式和企业微信非常类似,也是通过Webhook发送消息。如果你团队用的是钉钉而不是企业微信,这就是最自然的选择。

import requests
import json
import time
import hmac
import hashlib
import base64
import urllib.parse

def send_dingtalk(webhook_url, secret, content):
    """通过钉钉机器人推送消息"""
    timestamp = str(round(time.time() * 1000))
    string_to_sign = f"{timestamp}\n{secret}"
    hmac_code = hmac.new(secret.encode(), string_to_sign.encode(), 
                         digestmod=hashlib.sha256).digest()
    sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))

    url = f"{webhook_url}&timestamp={timestamp}&sign={sign}"

    data = {
        "msgtype": "markdown",
        "markdown": {
            "title": "交易信号",
            "text": content
        }
    }
    resp = requests.post(url, json=data)
    return resp.json()

# 使用示例
webhook = "https://oapi.dingtalk.com/robot/send?access_token=你的token"
secret = "你的secret"
msg = """### 📈 交易信号通知
- 品种:螺纹钢 rb2510
- 方向:买入开仓
- 价格:3380
- 时间:2026-02-25 10:30:00"""

send_dingtalk(webhook, secret, msg)
评测维度 评价
接入难度 ⭐⭐(需要加签验证,略复杂)
延迟 1-3秒
稳定性 高,阿里服务
费用 完全免费
富文本 支持Markdown
频率限制 每分钟最多20条
不足 加签计算比企业微信多一步

3.3 邮件通知 —— 最传统但最可靠的方案

邮件推送是最传统的方案,技术成熟、几乎不会被封禁。缺点是延迟稍高,而且容易淹没在其他邮件里。适合做每日策略报告这类非紧急通知。

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def send_email(subject, content, to_addr):
    """通过邮件推送消息"""
    smtp_server = "smtp.qq.com"
    smtp_port = 465
    from_addr = "你的邮箱@qq.com"
    password = "邮箱授权码"

    msg = MIMEMultipart()
    msg["From"] = from_addr
    msg["To"] = to_addr
    msg["Subject"] = subject
    msg.attach(MIMEText(content, "html", "utf-8"))

    with smtplib.SMTP_SSL(smtp_server, smtp_port) as server:
        server.login(from_addr, password)
        server.sendmail(from_addr, to_addr, msg.as_string())

# 使用示例
send_email(
    subject="【交易信号】螺纹钢买入信号",
    content="""
    <h3>交易信号通知</h3>
    <table border="1">
        <tr><td>品种</td><td>螺纹钢 rb2510</td></tr>
        <tr><td>方向</td><td style="color:red">买入开仓</td></tr>
        <tr><td>价格</td><td>3380</td></tr>
    </table>
    """,
    to_addr="接收邮箱@qq.com"
)
评测维度 评价
接入难度 ⭐⭐(需要配置SMTP)
延迟 3-30秒(取决于邮件服务商)
稳定性 极高
费用 免费
富文本 支持HTML,可以做很丰富的排版
频率限制 取决于邮件服务商(QQ邮箱约500封/天)
不足 延迟较高,容易被其他邮件淹没

3.4 Telegram Bot —— 海外量化者的首选

如果你做的是加密货币量化或海外市场,Telegram Bot是最主流的推送方案。它API简洁、几乎无频率限制、支持富文本和图片。

import requests

def send_telegram(bot_token, chat_id, content):
    """通过Telegram Bot推送消息"""
    url = f"https://api.telegram.org/bot{bot_token}/sendMessage"
    data = {
        "chat_id": chat_id,
        "text": content,
        "parse_mode": "Markdown"
    }
    resp = requests.post(url, json=data)
    return resp.json()

# 使用示例
bot_token = "你的bot_token"
chat_id = "你的chat_id"
msg = """*📈 Trading Signal*
Symbol: SHFE.rb2510
Side: *BUY*
Price: 3380
Time: 2026-02-25 10:30:00"""

send_telegram(bot_token, chat_id, msg)
评测维度 评价
接入难度 ⭐⭐(需要创建Bot,国内需要代理)
延迟 1-2秒
稳定性
费用 免费
富文本 支持Markdown、HTML
频率限制 极高(每秒30条)
不足 国内访问需要代理

3.5 Server酱 / PushPlus —— 免费微信推送

如果不想用企业微信,Server酱和PushPlus提供了通过个人微信公众号推送消息的能力。注册账号,拿到一个推送Key,直接HTTP调用就行。

import requests

def send_pushplus(token, title, content):
    """通过PushPlus推送到微信"""
    url = "http://www.pushplus.plus/send"
    data = {
        "token": token,
        "title": title,
        "content": content,
        "template": "markdown"
    }
    resp = requests.post(url, json=data)
    return resp.json()

# 使用示例
send_pushplus(
    token="你的token",
    title="交易信号通知",
    content="**螺纹钢** 买入信号 | 价格:3380 | 时间:10:30"
)
评测维度 评价
接入难度 ⭐(最简单,一个HTTP请求)
延迟 3-10秒
稳定性 中等(第三方服务)
费用 免费版有限制,付费版更稳定
富文本 支持Markdown
频率限制 免费版约200条/天
不足 第三方服务,稳定性不如大厂

四、综合对比

方案 接入难度 延迟 稳定性 移动端 免费 最适合
企业微信 1-3s ⭐⭐⭐⭐⭐ 国内团队
钉钉 ⭐⭐ 1-3s ⭐⭐⭐⭐⭐ 钉钉用户
邮件 ⭐⭐ 3-30s ⭐⭐⭐⭐⭐ 每日报告
Telegram ⭐⭐ 1-2s ⭐⭐⭐⭐ 海外/加密
PushPlus 3-10s ⭐⭐⭐ 有限 个人微信

五、与量化策略集成示例

下面是一个将推送功能集成到TqSdk策略中的完整示例:

from tqsdk import TqApi, TqAuth, TqSim
from tqsdk.tafunc import ma
import requests

# 推送函数
def notify(message):
    """发送企业微信通知"""
    webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的key"
    requests.post(webhook, json={
        "msgtype": "text",
        "text": {"content": message}
    })

# 初始化API
api = TqApi(TqSim(), auth=TqAuth("快期账户", "快期密码"))
klines = api.get_kline_serial("SHFE.rb2510", 3600)
position = api.get_position("SHFE.rb2510")

while True:
    api.wait_update()
    if api.is_changing(klines.iloc[-1], "close"):
        close = klines.iloc[-1]["close"]
        ma5 = ma(klines["close"], 5).iloc[-1]
        ma20 = ma(klines["close"], 20).iloc[-1]

        # 金叉信号
        if ma5 > ma20 and position.pos_long == 0:
            notify(f"🔔 金叉买入信号!螺纹钢价格:{close}")

        # 死叉信号
        if ma5 < ma20 and position.pos_short == 0:
            notify(f"🔔 死叉卖出信号!螺纹钢价格:{close}")

六、实用建议

建议 说明
控制推送频率 不要每个Tick都推送,设置最小间隔
区分重要程度 交易信号用即时推送,日报用邮件
做好异常处理 推送失败不应影响策略运行
多通道备份 重要信号同时发两个渠道
添加时间戳 方便事后核对信号时间

七、总结

要点 说明
国内首推 企业微信机器人,简单稳定
海外首推 Telegram Bot,API灵活
非紧急通知 邮件最可靠
备份方案 建议至少配两个渠道

推送方案的选择取决于你的使用习惯和网络环境。好消息是,这些方案都可以很容易地集成到Python量化策略中,几十行代码就能搞定。选一个最方便的先用起来吧。


免责声明:本文仅供学习交流使用,不构成任何投资建议。期货交易有风险,入市需谨慎。

更多资源

  • 天勤量化官网:https://www.shinnytech.com
  • GitHub开源地址:https://github.com/shinnytech/tqsdk-python
  • 官方文档:https://doc.shinnytech.com/tqsdk/latest
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐