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

7.1 KiB
Raw Blame History

钉钉通知功能实现总结

已完成功能

1. 核心模块开发

notifiers/dingtalk.py

  • 钉钉Markdown消息发送
  • 加签验证(安全增强)
  • 交易信号格式化
  • 错误通知支持
  • 发送统计和重试机制

scheduler.py 集成

  • 自动初始化钉钉通知器
  • 在生成BUY/SELL信号后自动发送
  • HOLD信号不发送减少噪音
  • 异常处理和日志记录

2. 配置管理

docker-compose.yml

scheduler:
  environment:
    - DINGTALK_WEBHOOK=https://oapi.dingtalk.com/robot/send?access_token=...
    - DINGTALK_SECRET=SEC...

requirements.txt

  • 添加 requests==2.31.0 依赖

3. 文档完善

  • DINGTALK_SETUP.md - 详细配置指南
  • 包含钉钉机器人创建步骤
  • 包含故障排查指南
  • 包含消息示例

📊 消息格式特性

支持的消息类型

  1. 交易信号通知 (BUY/SELL)

    • 信号类型和置信度
    • 量化分析详情
    • AI深度分析如果启用
    • 交易机会细分:
      • 📊 日内交易机会 (Intraday)
      • 📈 中长线交易机会 (Swing)
      • 📌 埋伏点位 (Ambush)
    • 价格位建议(入场/止损/止盈)
    • 风险回报比
    • 综合建议和警告
  2. 系统错误通知 (未来支持)

    • 错误消息
    • 上下文信息
    • @所有人

Markdown格式优化

  • 清晰的层级结构(标题/子标题)
  • 信号类型emoji标识🟢 BUY / 🔴 SELL / 🟡 HOLD
  • 关键信息加粗
  • 引用格式的AI分析
  • 列表格式的价格位和因素
  • 分隔线划分区块
  • 页脚免责声明

🔐 安全特性

1. 加签验证

# 自动生成时间戳和签名
timestamp = int(time.time() * 1000)
sign = hmac_sha256(f"{timestamp}\n{secret}", secret)
url = f"{webhook}&timestamp={timestamp}&sign={sign}"

2. 敏感信息保护

  • Webhook和密钥通过环境变量配置
  • 不硬编码在代码中
  • 建议使用 .env.local 文件

3. 请求限流

  • 只在BUY/SELL信号时发送
  • HOLD信号不发送
  • 避免频繁通知骚扰

📱 当前配置状态

已配置信息

Webhook: https://oapi.dingtalk.com/robot/send?access_token=9438788...
Secret:  SEC88678d8970f0882a1cca36476b92947409fea5f562a09db4cd03524...
状态:    ✅ 已启用

测试结果

✅ 测试消息发送成功
✅ 模拟交易信号发送成功
✅ 统计信息正常
   - 发送成功: 2次
   - 发送失败: 0次
   - 成功率: 100%

🚀 使用方式

自动发送(推荐)

启动scheduler服务后系统会自动

  1. 每5分钟生成一次交易信号
  2. 如果信号为BUY或SELL自动发送钉钉通知
  3. 如果信号为HOLD跳过通知
# 启动自动信号生成
docker compose --profile scheduler up -d

# 查看日志
docker compose logs -f scheduler

手动测试

# 测试钉钉通知
docker compose exec ingestion 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这是一条测试消息')
"

# 手动生成信号(会自动发送通知)
docker compose exec ingestion python /app/scripts/generate_trading_signal.py

📊 预期效果

钉钉群将收到

测试消息

# 🚀 钉钉通知测试

这是一条测试消息用于验证钉钉webhook配置是否正确。

**测试时间**: 2025-11-30 14:55:00

---

*如果您收到此消息,说明配置成功!*

真实交易信号(示例)

# 🟢 交易信号: BUY

**时间**: 2025-11-30 14:55:28
**置信度**: 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量化系统自动生成仅供参考不构成投资建议*

🔍 日志示例

成功发送

📱 发送钉钉通知...
✅ 钉钉消息发送成功: 🚨 交易信号: BUY (置信度: 75%)
✅ 钉钉通知发送成功

跳过发送

 HOLD信号跳过钉钉通知

未配置

⚠️ 钉钉通知发送失败或未配置

🛠️ 技术实现细节

依赖库

  • requests==2.31.0 - HTTP请求
  • hmac, hashlib, base64 - 加签验证(内置库)

关键类和方法

DingTalkNotifier

class DingTalkNotifier:
    def __init__(webhook_url, secret, enabled)
    def send_markdown(title, text, at_mobiles, at_all) -> bool
    def send_signal(aggregated_signal) -> bool
    def send_error(error_msg, context) -> bool
    def get_stats() -> dict

SignalScheduler集成

# 初始化
self.dingtalk = DingTalkNotifier(
    webhook_url=os.getenv('DINGTALK_WEBHOOK'),
    secret=os.getenv('DINGTALK_SECRET')
)

# 发送
if final_signal in ['BUY', 'SELL']:
    self.dingtalk.send_signal(aggregated)

🎯 下一步优化建议

短期

  • 基础功能已完成
  • 添加消息去重(避免短时间内重复发送相同信号)
  • 添加@特定人员功能
  • 支持自定义消息模板

中期

  • 每日交易汇总报告
  • 系统错误实时告警
  • 重要市场事件推送(如大幅波动)
  • 信号准确率统计和回测结果推送

长期

  • 支持企业微信
  • 支持Telegram
  • 支持邮件通知
  • 支持Webhook回调供第三方系统集成

验收清单

  • notifiers模块创建完成
  • DingTalkNotifier类实现
  • 加签验证功能
  • Markdown格式化
  • scheduler集成
  • docker-compose配置
  • requirements.txt更新
  • 配置文档编写
  • 测试消息发送成功
  • 模拟信号发送成功
  • 用户配置已应用

📞 支持

如有问题,请参考:

  1. DINGTALK_SETUP.md - 配置指南
  2. 查看日志: docker compose logs scheduler
  3. 检查统计: 调用 notifier.get_stats()

状态: 完全实现并测试通过 版本: 1.0.0 日期: 2025-11-30