tradusai/DINGTALK_SETUP.md
2025-12-02 22:54:03 +08:00

7.9 KiB
Raw Blame History

钉钉消息通知配置指南

📱 功能说明

系统支持通过钉钉群机器人自动推送交易信号通知,包括:

  • 实时交易信号推送BUY/SELL
  • 量化分析 + AI深度分析结果
  • 日内/中长线/埋伏点位机会详情
  • 进场价/止损/止盈建议
  • 风险评估和综合建议
  • Markdown格式可读性强

🔧 配置步骤

第一步:创建钉钉群机器人

  1. 打开钉钉群

    • 在电脑端或手机端打开需要接收通知的钉钉群
  2. 添加自定义机器人

    • 点击群设置 → 智能群助手 → 添加机器人
    • 选择"自定义"机器人
    • 点击"添加"
  3. 配置机器人

    • 机器人名称: 例如 "交易信号助手"
    • 消息推送:
      • 勾选 "加签"(推荐,更安全)
      • 或 勾选 "自定义关键词"(输入:信号、交易)
      • 或 勾选 "IP地址段"如果固定IP
  4. 获取配置信息

    • Webhook地址: 复制形如 https://oapi.dingtalk.com/robot/send?access_token=xxxxx 的URL
    • 加签密钥: 如果选择了"加签",复制 SEC 开头的密钥
  5. 完成配置

    • 点击"完成"
    • 机器人添加成功

第二步:配置系统环境变量

有两种配置方式:

方式A: 修改 docker-compose.yml推荐

编辑 docker-compose.yml 文件,找到 scheduler 服务,取消注释并填入配置:

scheduler:
  environment:
    # DingTalk Notification
    - DINGTALK_WEBHOOK=https://oapi.dingtalk.com/robot/send?access_token=你的access_token
    - DINGTALK_SECRET=SEC你的加签密钥  # 如果使用了加签

示例:

scheduler:
  environment:
    # DingTalk Notification
    - DINGTALK_WEBHOOK=https://oapi.dingtalk.com/robot/send?access_token=1a2b3c4d5e6f7g8h9i0j
    - DINGTALK_SECRET=SEC1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0

方式B: 使用 .env.local 文件

创建 .env.local 文件:

# DingTalk Configuration
DINGTALK_WEBHOOK=https://oapi.dingtalk.com/robot/send?access_token=你的access_token
DINGTALK_SECRET=SEC你的加签密钥

然后在 docker-compose.yml 中添加:

scheduler:
  env_file:
    - .env.local

⚠️ 重要: 将 .env.local 添加到 .gitignore,避免泄露敏感信息


第三步:重启服务

# 停止服务
docker compose down

# 重新构建镜像如果修改了requirements.txt
docker compose build scheduler

# 启动服务
docker compose --profile scheduler up -d

# 查看日志,确认钉钉已启用
docker compose logs scheduler

预期日志:

📱 钉钉通知已启用 - Webhook: https://oapi.dingtalk.com/robot/send?access...

📊 消息示例

BUY信号示例

# 🟢 交易信号: BUY

**时间**: 2025-11-30 21:45:23
**置信度**: 75.0%
**共识**: QUANT_LLM_AGREE

---

## 📊 量化分析

- **信号**: BUY
- **综合得分**: 51.5
- **置信度**: 75.0%
- **趋势得分**: 99.0
- **动量得分**: 75.0
- **订单流得分**: -7.8

## 🤖 AI深度分析

- **信号**: BUY
- **置信度**: 60.0%
- **风险等级**: MEDIUM

### 📊 日内交易机会
- **方向**: LONG
- **入场**: $91,128.00
- **止损**: $91,000.00
- **止盈**: $91,342.00
- **说明**: 5分钟和15分钟周期呈现上涨趋势MACD金叉扩大...

### 📌 埋伏点位
- **埋伏价位**: $90,612.00
- **说明**: 等待价格回调至4小时支撑位90612附近...

### 💡 AI分析
> 当前市场呈现多周期趋势分歧,日线下跌但短周期上涨,形成震荡格局...

**关键因素**:
- 多周期趋势分歧
- 成交量萎缩
- RSI中性区域

## 💰 价格位

- **当前价格**: $91,650.10
- **入场价**: $91,650.10
- **止损价**: $90,985.52
- **目标价1**: $92,646.96
- **目标价2**: $93,311.54
- **目标价3**: $94,308.40
- **风险回报比**: 1:1.50

## 📝 综合建议

> 量化和AI分析一致看多建议在回调时逢低做多

---

*本信号由AI量化系统自动生成仅供参考不构成投资建议*

SELL信号示例

# 🔴 交易信号: SELL

**时间**: 2025-11-30 22:30:15
**置信度**: 68.0%
**共识**: QUANT_ONLY

---

[类似格式信号为SELL]

🎯 通知规则

何时发送通知

  • BUY信号: 立即发送通知
  • SELL信号: 立即发送通知
  • HOLD信号: 不发送通知(避免噪音)

消息去重

  • 每次只发送最新的信号
  • 不会重复发送相同的信号

🔐 安全建议

1. 使用加签(强烈推荐)

加签可以验证请求来源防止webhook被滥用

- DINGTALK_SECRET=SEC你的加签密钥

2. 限制IP地址可选

如果服务器IP固定可以在钉钉机器人设置中配置IP白名单。

3. 保护webhook地址

  • 不要将webhook地址提交到Git仓库
  • 不要在公开场合分享webhook地址
  • 使用 .env.local 文件存储
  • 添加 .env.local.gitignore

🐛 故障排查

问题1: 未收到通知

检查步骤:

  1. 确认钉钉配置是否正确

    docker compose logs scheduler | grep "钉钉"
    

    期望输出: 📱 钉钉通知已启用

  2. 确认是否有BUY/SELL信号

    docker compose logs scheduler | grep "发送钉钉通知"
    
  3. 检查钉钉机器人配置

    • webhook地址是否正确
    • 加签密钥是否匹配
    • 关键词是否配置正确
  4. 手动测试webhook

    docker compose exec scheduler python -c "
    from notifiers.dingtalk import DingTalkNotifier
    import os
    notifier = DingTalkNotifier(
        webhook_url=os.getenv('DINGTALK_WEBHOOK'),
        secret=os.getenv('DINGTALK_SECRET')
    )
    notifier.send_markdown('测试', '# 测试消息\n\n这是一条测试消息')
    "
    

问题2: 发送失败

可能原因:

  1. Webhook地址错误

    • 检查是否完整复制了webhook URL
    • 确认access_token没有遗漏
  2. 加签密钥错误

    • 检查密钥是否以 SEC 开头
    • 确认密钥完整
  3. 网络问题

    • 检查容器是否能访问外网
    • 尝试 docker compose exec scheduler ping oapi.dingtalk.com
  4. 关键词不匹配

    • 如果使用"自定义关键词",确保消息包含关键词
    • 推荐使用"加签"方式

问题3: 消息格式错误

症状: 收到消息但格式混乱

解决:

  • 确保使用最新版本的代码
  • 检查日志中是否有错误信息
  • 联系开发者反馈问题

📞 支持的通知场景

当前已支持

  • 交易信号通知BUY/SELL
  • 包含量化 + AI分析
  • 包含价格位和风险建议

未来计划支持

  • 系统错误通知
  • 每日汇总报告
  • 重要市场事件提醒
  • 仓位管理提醒

🔄 取消通知

如果需要暂时关闭钉钉通知:

方法1: 注释环境变量

编辑 docker-compose.yml:

scheduler:
  environment:
    # - DINGTALK_WEBHOOK=...  # 注释掉
    # - DINGTALK_SECRET=...   # 注释掉

方法2: 删除机器人

在钉钉群中删除机器人即可。

重新启动服务

docker compose --profile scheduler restart scheduler

📝 最佳实践

  1. 专用群组: 建议为交易信号创建专门的钉钉群,避免干扰其他讨论
  2. 多环境隔离: 测试环境和生产环境使用不同的webhook
  3. 定期检查: 定期查看通知是否正常,避免错过重要信号
  4. 备份配置: 保存webhook和密钥的备份避免丢失
  5. 安全第一: 始终使用加签不要分享webhook地址

🎉 配置完成

完成上述配置后系统会在生成BUY/SELL信号时自动发送钉钉通知

下一步:

  • 等待下一次信号生成根据SIGNAL_INTERVAL_MINUTES配置
  • 或手动触发一次: docker compose exec scheduler python /app/scripts/generate_trading_signal.py
  • 在钉钉群中查看通知消息

祝交易顺利!🚀