3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
关于您对 JoinQuant 模拟盘 send_message 函数的疑问,以下是详细的解答:
send_message 的语法是否和 log.info 或 print 一致?不完全一致。
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}")
根据聚宽官方的规则,基础限制是每个账号每天 5 条。如果需要更多条数,官方文档明确指出“需要更多条数可以使用积分兑换”。
对于 VIP 用户,通常平台会赠送大量积分,或者在 VIP 权益中包含更高的调用额度。建议您直接使用账户内的积分去兑换额外的微信通知条数,或者联系聚宽官方客服确认您当前 VIP 等级对应的具体免积分额度。
JoinQuant 官方 API 没有提供专门的 send_email 函数。但是,聚宽的 Python 环境支持标准的 Python 库。您可以使用 Python 自带的 smtplib 和 email 模块来编写自定义的邮件发送函数。
邮件发送示例代码:
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 变量中被序列化,建议每次发送时建立连接,发送后关闭。
这是一个错别字。官方文档的本意是**“回车” (Carriage Return, \r)** 和 “换行” (Line Feed, \n)。
微信的接口在接收 send_message 传过去的字符串时,如果字符串内部包含了 \n 或者 \r 这种控制排版的特殊字符,会导致 JSON 解析或接口校验失败,从而发送不成功。
错误示例:
# 包含换行符 \n,会导致发送失败
send_message("今日策略执行完毕。\n当前总资产:100000")
正确示例:
# 用逗号或空格替代换行符
send_message("今日策略执行完毕,当前总资产:100000")
请确保您传入的 message 是一个纯粹的单行字符串,长度不超过 200 个字符。