每日收盘后自动扫描股票池的技术形态信号(缠论 + 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— 运行日志
pip install -r requirements.txt编辑 config.yaml 的 watchlist:
watchlist:
- { code: "688012", name: "中微公司" }
- { code: "300750", name: "宁德时代" }python schedule.py test这会立即执行一次扫描,推送内容打印到控制台。确认信号格式无误后再接微信。
⚠️ 微信 ClawBot 原生 iLink API 不支持主动推送(必须用户先发消息触发)。 本项目依赖社区方案实现定时主动推送,任选其一:
# 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=指定用户# 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查状态;确认电脑开机且未休眠