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

189 lines
9.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: dividend-scanner
description: 高息股扫描与DCA监控系统 - 三市场(港股/美股/A股)自动扫描候选、监控持仓买入信号
trigger: 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包装:
```bash
#!/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开发者后台](https://open.longportapp.com/) 刷新Token。
2. **Token截断(401004**`.bashrc``LONGBRIDGE_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-24**`dca_scanner.py``format_result()` 在无符合条件的标的时返回空字符串,主程序过滤空输出不print。`no_agent: true` 任务无stdout=不推送。避免用户收到"暂无符合条件的标的"的空消息。
9. **Proxy冲突**:服务器 `HTTP_PROXY=http://127.0.0.1:7890` 环境变量是全局的。Python requests 自动读取,导致国内 API 请求失败(ProxyError)。**所有国内 API 调用前必须先 unset proxy**`os.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%/年
```