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

JoinQuant模拟盘如何使用 send_message 发送微信消息?

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

问题描述

关于模拟盘send_message函数语法确认一下

看了以前关于模拟盘发微信的一些问答,想确认一下:
1、是否和log.info的语法一致?又或print?
2、微信消息每人每天自定义消息不超过 5 条, 超出会失败;需要更多条数可以使用积分兑换————大VIP也有限制??
3、下单通知:60条/天,如果超出部分设置邮件接收,用什么API?
4、消息长度不得超过 200 个字符, 也不能包含回测和换行这些特殊字符,否则会发送失败——什么叫回测 特殊字符??

解决方案

关于您对 JoinQuant 模拟盘 send_message 函数的疑问,以下是详细的解答:

1. send_message 的语法是否和 log.infoprint 一致?

不完全一致。

  • log.info()print() 支持传入多个参数,或者使用逗号分隔,底层会自动格式化。例如:log.info("买入", security, "数量", amount)
  • send_message(message, channel='weixin') 的第一个参数 message 必须是一个完整的字符串。如果您需要拼接变量,必须先在 Python 中将字符串格式化好,再传给 send_message
    正确用法示例:
# 使用 % 格式化
send_message("买入股票:%s,数量:%d" % (security, amount))
# 使用 format 格式化
send_message("买入股票:{},数量:{}".format(security, amount))
# 使用 f-string (Python 3.6+)
send_message(f"买入股票:{security},数量:{amount}")

2. 自定义消息每天 5 条的限制,VIP也有限制吗?

根据聚宽官方的规则,基础限制是每个账号每天 5 条。如果需要更多条数,官方文档明确指出“需要更多条数可以使用积分兑换”。
对于 VIP 用户,通常平台会赠送大量积分,或者在 VIP 权益中包含更高的调用额度。建议您直接使用账户内的积分去兑换额外的微信通知条数,或者联系聚宽官方客服确认您当前 VIP 等级对应的具体免积分额度。

3. 下单通知超出 60 条/天,如何用邮件接收?

JoinQuant 官方 API 没有提供专门的 send_email 函数。但是,聚宽的 Python 环境支持标准的 Python 库。您可以使用 Python 自带的 smtplibemail 模块来编写自定义的邮件发送函数。
邮件发送示例代码:

import smtplib
from email.mime.text import MIMEText
from email.header import Header

def send_custom_email(subject, content):
    sender = 'your_email@qq.com' # 您的发件邮箱
    password = 'your_auth_code'  # 您的邮箱授权码
    receiver = 'receiver_email@qq.com' # 接收邮箱
    
    message = MIMEText(content, 'plain', 'utf-8')
    message['From'] = Header("量化策略报警", 'utf-8')
    message['To'] =  Header("管理员", 'utf-8')
    message['Subject'] = Header(subject, 'utf-8')
    
    try:
        # 以 QQ 邮箱为例
        smtpObj = smtplib.SMTP_SSL('smtp.qq.com', 465)
        smtpObj.login(sender, password)
        smtpObj.sendmail(sender, [receiver], message.as_string())
        smtpObj.quit()
        log.info("邮件发送成功")
    except Exception as e:
        log.error(f"邮件发送失败: {e}")

注意:涉及到网络连接的对象(如 SMTP 连接)不能保存在 g 变量中被序列化,建议每次发送时建立连接,发送后关闭。

4. 不能包含“回测”和换行这些特殊字符是什么意思?

这是一个错别字。官方文档的本意是**“回车” (Carriage Return, \r)** 和 “换行” (Line Feed, \n)
微信的接口在接收 send_message 传过去的字符串时,如果字符串内部包含了 \n 或者 \r 这种控制排版的特殊字符,会导致 JSON 解析或接口校验失败,从而发送不成功。
错误示例:

# 包含换行符 \n,会导致发送失败
send_message("今日策略执行完毕。\n当前总资产:100000") 

正确示例:

# 用逗号或空格替代换行符
send_message("今日策略执行完毕,当前总资产:100000") 

请确保您传入的 message 是一个纯粹的单行字符串,长度不超过 200 个字符。