Skip to content

Repository files navigation

Signal Watcher — 股票技术形态信号监控 + 微信定时推送

每日收盘后自动扫描股票池的技术形态信号(缠论 + SMC + 异动),去重后推送到微信。

功能

  • 三引擎:缠论(czsc) 反转/趋势 + SMC(ChoCH/BOS) 结构突破 + 异动(涨跌/突破)
  • 智能去重:同信号 5 日内不重复推送
  • 结构化日志:JSONL(机器可读)+ Markdown(人类可读)双轨
  • 微信推送:支持 wxclawbot-cli / weclawbot-api / console 三种后端
  • 定时调度:Windows 任务计划,工作日 15:30 自动运行

文件结构

signal-watcher/
├── config.yaml            # 配置:股票池、阈值、推送
├── watcher.py             # 信号生成核心(数据/引擎/去重/日志)
├── notifier.py            # 推送链路(三适配器 + 消息格式化)
├── schedule.py            # Windows 定时任务管理
├── requirements.txt       # 依赖
└── README.md

运行后会在 config.yaml > paths.data_dir(默认 d:/tmp)生成:

  • signal-log.jsonl — 结构化日志(每行一条 JSON)
  • signal-log.md — 人类可读日志(由 jsonl 渲染)
  • signal-state.json — 去重状态
  • signal-watcher.run.log — 运行日志

快速开始

1. 安装依赖

pip install -r requirements.txt

2. 配置股票池

编辑 config.yamlwatchlist

watchlist:
  - { code: "688012", name: "中微公司" }
  - { code: "300750", name: "宁德时代" }

3. 测试运行(console 预览,不真推微信)

python schedule.py test

这会立即执行一次扫描,推送内容打印到控制台。确认信号格式无误后再接微信。

接入微信推送

⚠️ 微信 ClawBot 原生 iLink API 不支持主动推送(必须用户先发消息触发)。 本项目依赖社区方案实现定时主动推送,任选其一:

方案 A:wxclawbot-cli(推荐,最简单)

# 1. 安装 CLI
npm install -g @claw-lab/wxclawbot-cli

# 2. 扫码登录(按提示用微信扫码)
wxclawbot login

# 3. 验证账号
wxclawbot accounts --json

然后修改 config.yaml

notify:
  enabled: true
  backend: "wxclawbot-cli"
  wxclawbot_cli:
    bin: "wxclawbot"
    to: ""              # 留空=推给绑定账号;填 user@im.wechat=指定用户

方案 B:weclawbot-api(自建 HTTP 服务,适合服务器常驻)

# 1. Docker 部署
docker run -d --name weclawbot-api -p 26322:26322 cp0204/weclawbot-api

# 2. 进入容器扫码登录
docker exec -it weclawbot-api bot
# 在微信发一条消息给 ClawBot 激活

# 3. 获取 bot_id 和 api_token
#    在微信给 bot 发 /bots 命令

然后修改 config.yaml

notify:
  enabled: true
  backend: "weclawbot-api"
  weclawbot_api:
    base_url: "http://127.0.0.1:26322"
    bot_id: "xxx@im.bot"
    token: "你的api_token"

定时调度

# 注册(每工作日 15:30 运行)
python schedule.py register --time 15:30

# 查看任务状态
python schedule.py query

# 立即测试
python schedule.py test

# 删除任务
python schedule.py delete

register 提示权限不足,以管理员身份打开 cmd 手动执行脚本输出的 schtasks 命令。

推送消息样例

📊 股票信号日报 | 2026-07-21
━━━━━━━━━━━━━━━━━━━━━━━━━━
🟦🟥 中微公司 688012
  摘要: 向下反转(顶转跌) + 单日大涨+19.1%
  ↘️ [缠论] 向下反转(顶转跌)
     2026-07-01→2026-07-20 完成反方向笔,高500.00/低332.99
  🚀 [异动] 单日大涨+19.1%
     收407.89,前收342.50

━━━━━━━━━━━━━━━━━━━━━━━━━━
共 1 只股票,2 条信号
⏰ 15:30:12 自动生成

调参说明

参数 位置 说明
engines.move.move_pct config.yaml 单日涨跌幅阈值,默认 5%
engines.move.break_days config.yaml 突破 N 日新高新低,默认 20
engines.smc.swing_length config.yaml SMC 摆动回看窗口,默认 5
dedup.days config.yaml 去重窗口,默认 5 天
notify.min_signals config.yaml 最少几条信号才推送,默认 1
notify.notify_when_empty config.yaml 无信号时是否推送"活着"提醒

故障排查

  • 拉数据失败:检查网络/akshare 版本,看 signal-watcher.run.log
  • czsc 报错:确认 pip install czsc 且版本 ≥0.9
  • 推送失败 wxclawbot 命令未找到npm i -g @claw-lab/wxclawbot-cli
  • 推送失败 连接失败:weclawbot-api 服务未启动,docker ps 确认
  • 任务没触发python schedule.py query 查状态;确认电脑开机且未休眠

About

Stock technical-pattern signal watcher with WeChat push — a multi-engine scanner (Chan-Lun/czsc, SMC, candlestick & anomaly) that sends a low-noise daily signal report after market close.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages