🚀 AI 一键生成 ptrade 策略代码
立即体验
👉 AI 生成代码 👈

ptrade 策略中如何配置发送QQ邮件及常见网络错误解决

ptrade | 发布时间: 2026/6/8
以下内容由 EasyQuant 生成。

问题描述

ptrade怎么给qq邮箱发邮件

邮件失败:[Errno-2] Name or service not known

解决方案

在 ptrade 量化交易平台中,你可以使用内置的 set_email_info 函数来配置邮件发送功能。当策略在交易过程中发生报错终止时,系统会自动向你配置的邮箱发送提示邮件。

1. 如何配置发送 QQ 邮件

根据 ptrade API 文档,目前系统仅支持设置 QQ 邮箱,并且发送方与接收方必须是同一个邮箱地址。

接口说明

set_email_info(email_address, smtp_code, email_subject)

参数说明

  • email_address (str):你的 QQ 邮箱地址(例如:12345678@qq.com)。
  • smtp_code (str):QQ 邮箱的 SMTP 授权码(注意:不是你的 QQ 密码,需要在 QQ 邮箱设置 -> 账户 -> POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务中生成)。
  • email_subject (str):邮件的主题(例如:【PTrade量化-策略异常提醒】)。

示例代码

def initialize(context):
    g.security = "600570.SS"
    set_universe(g.security)
    
    # 设置邮件信息,当策略异常终止时会触发发送
    is_success = set_email_info("你的QQ号@qq.com", "你的SMTP授权码", "【PTrade实盘-策略异常终止提醒】")
    log.info("邮件配置状态: %s" % is_success)

def before_trading_start(context, data):
    # 模拟一个异常来测试邮件发送
    # raise BaseException("测试发送报错邮件")
    pass

def handle_data(context, data):
    pass

2. 为什么会报错 [Errno-2] Name or service not known

如果你在配置或触发邮件发送时遇到了 [Errno-2] Name or service not known 错误,这通常不是你的代码写错了,而是运行环境的网络限制导致的。

错误原因深度解析

这个错误是一个底层的 DNS 解析错误。当 ptrade 尝试连接 QQ 邮箱的 SMTP 服务器(通常是 smtp.qq.com)时,它需要将这个域名解析为 IP 地址。如果解析失败,就会报这个错。

在量化实盘交易中,券商为了保证交易系统的绝对安全,通常会将 ptrade 所在的服务器部署在严格隔离的内网环境中。这意味着服务器无法访问外部的互联网(外网),自然也就无法解析 smtp.qq.com 的域名,从而导致邮件发送失败。

解决办法

  1. 联系券商客服/客户经理:这是最直接有效的办法。你需要向券商确认当前的 ptrade 环境是否支持发送邮件。如果支持,可能需要他们为你所在的服务器开通访问 smtp.qq.com 的网络白名单或 DNS 解析权限。
  2. 检查本地网络(如果是投研环境):如果你是在本地客户端的投研/回测环境中遇到此问题,请检查你本机的网络连接是否正常,或者是否有防火墙/代理拦截了 SMTP 端口(通常是 465 或 25)。但在实盘/模拟盘服务器上,大概率是券商的网络隔离策略所致。
  3. 替代方案:如果券商明确表示出于安全考虑无法开通外网邮件权限,你可以考虑使用 ptrade 提供的其他通知方式(如企业微信通知 send_qywx,前提是券商支持并配置了相关通道),或者通过轮询本地日志文件的方式在外部监控策略状态。