Files
Hermes-Skills/dividend-scanner/SKILL.md
T
mike 657dc41c46 Initial commit: Trading skills collection
- OKX交易自动化 (okx-auto-position, okx-crypto, okx-exchange)
- 交易信号处理 (signal-confirmation-templates, trading-signal-aggregator)
- 量化因子挖掘 (quant-factor-mining)
- 长桥集成 (longbridge-cli, longbridge-python-sdk)
- 六合彩分析 (lottery-hk)
- 股息投资 (dividend-investing, dividend-scanner)
- 日内交易 (intraday-trading)
- 同花顺 (tonghuashun)
2026-07-05 02:39:41 -04:00

9.5 KiB
Raw Blame History

name, description, trigger
name description trigger
dividend-scanner 高息股扫描与DCA监控系统 - 三市场(港股/美股/A股)自动扫描候选、监控持仓买入信号 DCA监控、高息扫描、股息率筛选、dividend scan、阶梯买入

高息股扫描与DCA监控

系统架构

~/.hermes/scripts/
├── dividend_alert.py    # 股息登记日前一天提醒(A/HK/US三市场,无Token依赖)
├── dca_scanner.py       # 港股/美股扫描(LongPort API
├── scan_cn.py           # A股扫描(LongPort价格+预设股息率)
├── dca_monitor.py       # 持仓监控(买入信号),支持 --market=us/hk/cn
├── dca_positions.json   # 持仓配置(含阶梯价位、股息率、派息频率)
├── scan_hk.sh           # shell包装脚本
├── scan_us.sh
├── scan_cn.sh
├── dca_monitor_us.sh    # DCA美股监控wrapper(解决no_agent参数问题)
├── rgti_alert.py        # RGTI价格提醒
├── rgti_auto_monitor.py # RGTI半自动做T挂单
└── rgti_alert_state.json

股息登记日提醒系统(dividend_alert.py

用途

每天自动扫描明天除权的股票,在登记日前一天推送给用户,让用户有足够的买入时间窗口。

数据源(无需API Key

市场 数据源 函数/API
🇨🇳 A股 AKShare(百度) ak.news_trade_notify_dividend_baidu(date='YYYYMMDD')
🇭🇰 港股 AKShare(百度) 同上(交易所=HK
🇺🇸 美股 Nasdaq API https://api.nasdaq.com/api/calendar/dividends?date=YYYY-MM-DD

数据格式说明

A股/港股(百度接口):

  • 分红字段已经是 元/10股港元/10股,不要乘以10
  • 返回字段:股票代码, 除权日, 分红, 送股, 转增, 交易所, 股票简称, 报告期
  • A股除以权除息日查询,登记日=除权日的前一个交易日
  • 可以查未来日期,支持周末自动跳过

美股(Nasdaq API):

  • dividend_Rate: 本次每股分红金额(美元)
  • indicated_Annual_Dividend: 年化分红
  • record_Date: 登记日(美股登记日通常=除权日)
  • 优先股/REIT占多数,注意区分

实现要点

  • proxy处理:服务器在EDT时区,请求国内API需先 unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY,否则Python requests走127.0.0.1:7890代理会报ProxyError
  • 时间处理:北京时间运行,用 datetime.utcnow() + timedelta(hours=8) 转换
  • 周末跳过while d.weekday() >= 5: d += timedelta(days=1)
  • no_agent模式cron任务用 no_agent=True,脚本stdout直接推送给用户,不需要LLM推理
  • 输出格式emoji标记+分类(A/HK/US三栏),每行一个股票+分红金额+除权日期

Cron配置

30 20 * * 1-5   # EDT 20:30 = 北京 次日 8:30 AM
# Mon 20:30 EDT → Tue 08:30 BJT (查Wed除权)
# Thu 20:30 EDT → Fri 08:30 BJT (查Mon除权,跳过周末)

使用方式

用户看到推送后,当天开盘买入仍能赶上登记日,享有本次分红权。

高息股扫描 vs 股息登记日提醒(区别)

维度 高息扫描 分红提醒
时机 每周五收盘后 每天 20:30 EDT
目的 长期候选池价格监控 + DCA建仓 明日除权提醒
输出 当前价、股息率、涨跌、阶梯买入点 明天除权的股票 + 预计股息率
动作 关注买入机会 提醒买入搭车分红
数据源 LongPort实时报价 AKShare除权日历 + Nasdaq
池子 固定候选池(~24只港股/15只美股/20只A股) 全市场除权数据

不重复,互补关系。 扫描说"这票便宜可以囤",提醒说"明天发钱今天上车"。

Cron任务配置

任务 时间(EDT) 北京时间 频率 脚本
港股高息扫描 周五 20:00 周六 8:00AM 每周五 scan_hk.sh
A股高息扫描 周五 19:30 周六 7:30AM 每周五 scan_cn.sh
美股高息扫描 周五 21:30 周六 9:30AM 每周五 scan_us.sh
美股盘中监控(夜间) 22:30 10:30AM 工作日 dca_monitor_us.sh
美股盘中监控(凌晨) 02:00 14:00 工作日 dca_monitor_us.sh
股息登记日前一天提醒 20:30 次日8:30AM 每天 dividend_alert.py

📌 高息扫描已从每天改为每周五收盘后推送,分红提醒保持每天不变。扫描是"哪些高息股现在值得买",提醒是"明天分红今天买入"。

用户偏好(关键)

  1. 吃股息为主,不做短线投机。当用户问"买点"时,默认用股息率/除权日期/分红增长角度分析,而不是技术面支撑阻力。
  2. 时间显示用北京时间(UTC+8),不要用服务器EDT时间。
  3. 输出格式:emoji标记 + 简洁卡片状,数据密集但视觉清爽,≤500字。

关键实现细节

Shell包装脚本(必须)

Cron的script字段不能带参数。Python脚本需要参数时,用.sh包装:

#!/bin/bash
cd /home/openclaw/.hermes/scripts
python3 dca_scanner.py hk

Cron系统对.sh文件自动用bash执行,不需要chmod +x。

A股数据源

  • LongPort有CN行情ctx.quote(["601088.SH"]) 可以获取A股实时价格
  • 东方财富API:从美国服务器无法直连,需走Mihomo代理(127.0.0.1:7890),且不稳定
  • 股息率LongPort的CalcIndex.DividendYield对A股可能不可靠,用预设数据更稳
  • 股票名称:东方财富API的f14字段可能返回代码而非名称,必须用name_map兜底

输出格式(用户偏好)

🥇 冀中能源 [煤炭]
   000937.SZ
   💰 现价: 5.28  📉 -2.9%
   📊 股息率: 11.0%  派息: 年度
   🪜 阶梯: T1:5.12(-3%) → T2:4.96(-6%) → T3:4.75(-10%)
  • emoji标记 + 简洁一行一个信息
  • 阶梯买入价:现价的-3%/-6%/-10%
  • 总字数≤500

市场过滤(dca_monitor.py

--market=us 参数按positions.json的market字段过滤。无参数则监控全部。

候选股池

港股(≥7%股息率)

银行:建行/工行/农行/中行 能源:中海油/中国神华/中石油 REIT:领展/顺丰房托/置富/越秀/冠君 电信:中国移动/香港电讯

美股(≥7%股息率)

BDCARCC/HTGC/PSEC/MAIN/ABR/OFS mREITNLY/AGNC/TWO/CIM/NYMT/STWD 其他:SBR/PDI/PTY

A股(≥5%股息率)

煤炭:冀中能源/中国神华/平煤股份 白酒:洋河/五粮液/泸州老窖/古井贡/茅台 银行:交行/工行/建行/农行/中行/兴业/光大 其他:宁沪高速/浙能电力/长江电力

Pitfalls

  1. 全量脚本同时失败=Token过期:港股/美股/A股三市场扫描+DCA监控全部报401003错误时,不要逐个排查。100%是LongPort access token过期。快速诊断:cd ~/.hermes/scripts && bash scan_hk.sh,看是否返回 code=401003 token expired。修复:去 LongPort开发者后台 刷新Token。
  2. Token截断(401004.bashrcLONGBRIDGE_ACCESS_TOKEN=m_eyJh...jb-k 可能是占位符(中间有...)。此时报错是401004而非401003。权威token在 ~/.env
  3. API限流:多个脚本同时调LongPort会触发429002错误。避免10分钟内的高频轮询。
  4. USOption权限LongPort返回"You do not have access to USOption"不影响正股数据。
  5. A股名称:东方财富f14字段不可靠,必须维护name_map。
  6. 代理依赖:东方财富API从美国服务器不稳定,A股扫描优先用LongPort。
  7. 用户不喜欢轮询:最低30分钟间隔。
  8. 无候选时不推送(2026-06-24dca_scanner.pyformat_result() 在无符合条件的标的时返回空字符串,主程序过滤空输出不print。no_agent: true 任务无stdout=不推送。避免用户收到"暂无符合条件的标的"的空消息。
  9. Proxy冲突:服务器 HTTP_PROXY=http://127.0.0.1:7890 环境变量是全局的。Python requests 自动读取,导致国内 API 请求失败(ProxyError)。所有国内 API 调用前必须先 unset proxyos.environ.pop('http_proxy', None) 等四个变量都要清。美股 Nasdaq API 直连无此问题。
  10. 百度接口港股过滤:返回数据的 交易所 字段,HK=港股、SH/SZ/BJ=A股。注意港股代码前有空格(如 06808),需要 strip()
  11. 除权日与登记日关系:A股登记日=除权日前一交易日。美股登记日通常=除权日当天。
  12. 百度接口日期格式news_trade_notify_dividend_baidu(date='YYYYMMDD') 参数是纯数字字符串,不要带横杠。支持查未来日期。

股息分析工作流(用户问"买点"时)

当用户说"分析XX的买点"时,先问清楚是吃股息还是做短线。用户偏好是吃股息,分析框架:

吃股息分析步骤

  1. 查分红历史ak.stock_history_dividend_detail(symbol) 拿历年数据
  2. 算当前股息率 → 每股分红 / 当前股价
  3. 算分红增长率 → 5年CAGR、同比变化
  4. 查除权时间线 → 已除权还是未除权?最近一次除权日即已错过,等下一波
  5. 查盈利预测 → EPS 看分红可持续性(分红率=每股分红/EPS)
  6. 查财务健康 → 货币资金、经营现金流(确保有钱分红)
  7. 避坑:不要给 MACD/均线/支撑阻力等技术面分析

输出格式(emoji卡片)

💰 XX年全年分红: XX元/10股 = X.XX元/股
📊 当前价格: XX.XX元 (除权后)
📊 股息率: X.XX%
📈 X年股息CAGR: X.X%/年