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

JoinQuant 模拟交易中 send_message 函数无效/收不到消息怎么办?

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

问题描述

永久交易位的send_message有用吗

貌似一直没有收到永久交易位的send message。是不是和设置运行时间有关,还是这个函数不能在永久交易位里面用了?哪位大神了解。多谢

解决方案

在 JoinQuant(聚宽)平台中,send_message 函数在模拟交易(即你提到的“永久交易位”)中是绝对有用且专门为此设计的。根据官方 API 文档,send_message 是“聚宽官网实时运行模拟交易专用API”。

如果你一直没有收到消息,通常不是因为该函数被禁用,而是由于以下几个常见限制或配置问题导致的。请逐一排查:

1. 微信绑定与通知设置问题

  • 必须绑定微信:要使用模拟交易发送微信功能,必须在聚宽官网绑定微信。
  • 绑定被覆盖:一个账号的模拟交易只能被一个用户绑定。如果你或他人用多个微信号绑定了该账号,前面的绑定会失效,以最后一个绑定的微信号为准

2. 消息条数超限

  • 每日 5 条限制:自定义消息(send_message)每个账号每天最多只能发送 5 条。如果超出这个数量,消息会发送失败(如果需要更多条数,可以使用平台积分兑换)。
  • 注意区分下单通知:下单通知是每天最多 60 条,这与 send_message 的 5 条限制是分开计算的。

3. 消息内容格式违规

  • 长度限制:自定义消息长度不得超过 200 个字符
  • 特殊字符限制(极易踩坑):消息内容中**不能包含回车(\r)和换行(\n)**等特殊字符,否则会导致发送失败。

4. 运行环境问题

  • send_message 只能在聚宽官网的实时运行模拟交易中使用。如果你是在“回测”环境中运行,该函数会被直接忽略,且没有任何报错提示。

5. 代码逻辑与运行时间问题

正如你猜测的,这也可能与运行时间或代码逻辑有关:

  • 函数未被触发:请检查包含 send_message 的函数是否真的被执行了。例如,如果你把它放在 handle_data 中,但加上了严格的买入/卖出条件,可能条件一直未满足。
  • 定时运行设置错误:如果你使用 run_daily(func, time='xx:xx'),请确保时间设置正确,并且模拟交易在那个时间点处于正常运行状态。

排查建议

建议你写一个最简单的测试策略,挂在模拟交易中测试一下:

def initialize(context):
    # 设置在每天开盘前 09:00 运行测试函数
    run_daily(test_msg, time='09:00')

def test_msg(context):
    # 打印日志,确认函数确实被执行了
    log.info("准备发送微信消息...")
    
    # 发送最简单的纯文本,不带任何换行符
    success = send_message("这是一条来自模拟交易的测试消息")
    
    # send_message 会返回 True 或 False,可以通过日志查看是否发送成功
    if success:
        log.info("消息发送成功!")
    else:
        log.error("消息发送失败,请检查条数限制或字符格式!")

总结send_message 在模拟盘中完全可用。请重点检查是否包含换行符是否超过每日 5 条限制以及微信绑定是否有效。同时,利用 send_message 的返回值(True/False)和 log.info 可以在模拟交易的日志中快速定位问题。