🚀 AI 一键生成 joinquant 策略代码

JoinQuant 模拟交易如何发送微信通知?(send_message 用法)

joinquant | 发布时间: 2025/12/1
以下内容由 EasyQuant 生成。

问题描述

模拟交易中如何给我的微信发送自定义消息?比如每天收盘后发送当天的收益率

解决方案

在聚宽(JoinQuant)的模拟交易中,可以使用 send_message 函数向绑定的微信发送自定义消息。

以下是实现该功能的具体步骤和代码示例。

核心步骤

  1. 绑定微信:在聚宽官网的“我的聚宽” -> “个人中心” -> “设置”中,绑定微信并开启“微信通知”。
  2. 使用 send_message API:在策略代码中调用此函数。
  3. 运行环境:该功能仅在“模拟交易”中生效,回测阶段调用该函数会被忽略,不会发送消息。

策略代码示例

这个示例策略会在每天收盘后(15:30),获取当前的总资产和累计收益率,并发送到你的微信。

# -*- coding: utf-8 -*-
def initialize(context):
    # 开启真实价格模式(模拟盘建议开启)
    set_option('use_real_price', True)
    
    # 设定每天收盘后 15:30 执行发送消息的函数
    run_daily(send_daily_report, '15:30')

def send_daily_report(context):
    # 获取账户总资产
    total_value = context.portfolio.total_value
    # 获取累计收益率 (小数形式,如 0.05 代表 5%)
    returns = context.portfolio.returns
    # 获取可用资金
    cash = context.portfolio.available_cash
    
    # 格式化消息内容
    # 注意:消息内容不能包含回车和换行符,长度不能超过200个字符
    msg = "【收盘播报】总资产:%.2f, 可用现金:%.2f, 累计收益:%.2f%%" % (
        total_value, 
        cash, 
        returns * 100
    )
    
    # 发送消息
    # send_message 返回 True 表示发送成功,False 表示失败
    ret = send_message(msg)
    
    if ret:
        log.info("微信消息发送成功: " + msg)
    else:
        log.warn("微信消息发送失败")

# 必须实现的空函数,保持策略结构完整
def handle_data(context, data):
    pass

注意事项

  1. 消息限制
    • 长度限制:消息内容字符串长度不得超过 200个字符
    • 格式限制:内容中**不能包含回车(\r)和换行(\n)**等特殊字符,否则会导致发送失败。
    • 条数限制:每个账号每天自定义消息最多发送 5条(如下单通知等系统消息不占用此额度,系统消息每天限60条)。
  2. 生效范围
    • send_message 只能在 聚宽官网的实时运行模拟交易 中使用。
    • 在回测(Backtest)中调用该函数不会报错,但也不会发送消息,只会直接忽略。
  3. 绑定要求
    • 必须在官网个人设置中绑定微信。
    • 一个模拟交易账号只能被一个微信号绑定。

Q&A

Q: 为什么我在回测中看不到微信消息?
A: send_message 函数仅在**模拟交易(实盘模拟)**中生效,回测环境下该函数会被系统忽略,不会触发发送动作。

Q: 发送的消息可以换行吗?
A: 不可以。根据API限制,自定义消息不能包含回车或换行符,否则会发送失败。建议使用逗号或空格分隔不同指标。

Q: 每天可以发送多少条自定义消息?
A: 默认情况下,每个账号每天最多发送 5 条自定义消息。如果策略交易频繁,建议仅在收盘后汇总发送,而不是每笔交易都发送自定义消息(每笔交易的系统下单通知是自动发送的,不占用这5条额度)。