3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在Ptrade量化交易平台中使用 send_qywx 函数发送企业微信消息时,如果终端日志显示“发送成功”但实际手机端未收到消息,通常是由于券商机房网络限制或企业微信后台配置拦截导致的。因为函数本身只负责发起HTTP请求,若请求被静默拦截或企微服务端拒绝,代码层面可能不会抛出异常。
以下是详细的排查步骤和解决方法:
原因分析:
Ptrade的实盘和模拟盘通常运行在券商的托管机房中。为了交易安全,绝大多数券商的机房是严格的内网环境,禁止直接访问外部互联网。当 send_qywx 尝试向腾讯企业微信的API服务器发送请求时,数据包直接被券商防火墙拦截丢弃,但底层网络库可能因为超时设置或静默丢包而返回了假阳性的“成功”状态。
解决方法:
qyapi.weixin.qq.com)的权限。原因分析:
如果您使用的是企业微信的“自建应用”来发送消息,企业微信官方出于安全考虑,要求必须在后台配置企业可信IP(IP白名单)。如果Ptrade服务器的公网出口IP不在该白名单内,企业微信服务器会拒绝接收该消息。
解决方法:
原因分析:
解决方法:
如果券商明确表示绝对不开放外网访问,您将无法直接使用 send_qywx。此时可以考虑使用Ptrade内置的邮件发送功能作为替代(部分券商会开放特定邮箱如QQ邮箱的SMTP端口)。
邮件发送示例代码:
def initialize(context):
# 设置邮件信息 (需咨询券商是否支持)
# 参数: 邮箱地址, SMTP授权码, 邮件主题
set_email_info("your_email@qq.com", "your_smtp_code", "【Ptrade量化提醒】")
def handle_data(context, data):
# 在需要触发通知的地方调用
send_email("策略触发买入信号:600570.SS")
遇到此类问题,第一步应直接联系您的券商技术支持,确认当前Ptrade环境的网络策略。如果是网络隔离导致的,任何代码层面的修改都无法生效;如果是IP白名单问题,则需要配合券商获取IP并在企微后台完成配置。