3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
是的,PTrade 提供了原生的接口来实现策略报错自动发送邮件通知的功能。
您可以使用 set_email_info 函数在策略初始化时进行配置。当策略在实盘运行中因为异常(Exception)导致程序终止时,系统会自动向您指定的邮箱发送报警邮件。
以下是具体的实现方法和注意事项:
set_email_info(email_address, smtp_code, email_subject)
initialize 中调用。email_address (str): 邮箱地址(通常仅支持 QQ 邮箱)。smtp_code (str): 邮箱的 SMTP 授权码(注意:这不是邮箱登录密码,而是专门的授权码)。email_subject (str): 邮件主题,例如 "【PTrade报警】策略异常终止"。请将以下代码添加到您的策略中。建议放在 initialize 函数内。
def initialize(context):
# 设置我们要操作的股票池
g.security = '600570.SS'
set_universe(g.security)
# ---------------------------------------------------------
# 设置异常报警邮件
# 1. email_address: 您的QQ邮箱地址
# 2. smtp_code: QQ邮箱的SMTP授权码 (需在QQ邮箱设置中开启POP3/SMTP服务获取)
# 3. email_subject: 邮件标题
# ---------------------------------------------------------
# 请将下方的 "12345678@qq.com" 和 "your_smtp_code" 替换为您真实的信息
is_success = set_email_info("12345678@qq.com", "your_smtp_code", "【严重警告】PTrade策略异常终止")
if is_success:
log.info("邮件报警服务配置成功")
else:
log.warn("邮件报警服务配置失败,请检查参数或咨询券商")
def handle_data(context, data):
# 策略逻辑...
pass
smtp_code 的位置。send_email 接口(如果券商支持)或通过 try...except 捕获异常后手动处理。如果您不希望策略一报错就停止,而是希望捕获错误、记录日志并继续运行(防止因个别数据错误导致全盘停止),可以使用 Python 的 try...except 结构:
def handle_data(context, data):
try:
# 您的核心交易逻辑
# 例如:order(g.security, 100)
pass
except Exception as e:
# 捕获异常,打印错误日志,策略不会停止
log.error("策略运行出现错误: %s" % e)
# 如果券商支持 send_email,也可以在这里手动发邮件
# send_email("12345678@qq.com", "逻辑报错通知", "错误内容: %s" % e)
Q: 为什么我填了正确的 QQ 密码却发送失败?
A: set_email_info 需要的是 SMTP 授权码,而不是您的 QQ 登录密码。这是为了安全考虑,您需要在 QQ 邮箱网页版的设置中开启 SMTP 服务来获取该授权码。
Q: 这个功能在回测中能用吗?
A: 不能。set_email_info 函数仅在交易模块(实盘或仿真交易)中可用,回测环境中调用可能会报错或无效。
Q: 除了发邮件,支持发微信通知吗?
A: PTrade 提供了 send_qywx 接口,支持发送企业微信通知。但这通常需要您有企业微信的配置权限(Webhook 地址等),且同样依赖于券商的网络环境支持。对于个人用户,邮件通知通常是最容易配置的方式。