trading: 日内T/长桥/六合彩文档与脚本 + quant-factor-mining 新目录

This commit is contained in:
2026-09-25 01:25:38 +08:00
parent 734b168082
commit 3f17a4eb1f
23 changed files with 1821 additions and 376 deletions
+11 -5
View File
@@ -1,8 +1,8 @@
---
name: intraday-trading
description: "港美股日内自动交易:盘前选股→五步预检→手动确认→开仓→止损止盈→收盘平仓。信号由定时任务分析生成,开仓需用户Y确认。港股9:30-16:00,美股21:30-04:00(北京时间)。融资15-20%,选股池精简1-5只。"
version: 1.2.0
tags: [trading, hk, us, intraday, auto, longport]
description: "港美股日内自动交易:盘前选股→五步预检→手动确认→开仓→止损止盈→收盘平仓。信号由定时任务分析生成,开仓需用户Y确认。港股9:30-16:00,美股21:30-04:00(北京时间)。融资15-20%,选股池精简1-5只。🧙 九转 (TD Sequential) v3.1 替代海龟 — 4 个脚本共享 `~/.hermes/scripts/lib/td9.py` (daily_t_analysis / cn_dividend_buy_timing / scan_cn / dca_scanner)。2026-08-23 用户明示'没空做日内了,用神奇九转'。"
version: 1.3.0
tags: [trading, hk, us, intraday, auto, longport, td9, nine-turns, lib-share, 2026-08-23]
---
# 港美股日内自动交易
@@ -192,7 +192,7 @@ else:
### 监控脚本
- `hk_intraday_monitor.py` - 港股日内监控+自动下单(9:30-15:45循环)
- `us_intraday_monitor.py` - 美股日内监控+自动下单(21:30-04:00循环)
- `us_intraday_monitor.py` - 美股日内监控+自动下单(21:30-03:45循环)
### 平仓脚本
- `hk_intraday_close.py` - 港股平仓(15:45运行)
@@ -314,6 +314,9 @@ else:
- **🔴 cron `script` 字段必须包 proxychains4 wrapper (2026-07-09)**: 所有用 LongPort SDK 下单的 cron 任务(hk_intraday_monitor / hk_intraday_close / us_intraday_monitor / us_intraday_close / rgti_* 等),cron 的 `script` 字段值必须显式包 proxychains 走 Clash 香港出口,否则绕过 602315 geo-block 失败。**典型错误**: 改了 `us_intraday_monitor.py` 加 `LONGBRIDGE_REGION=ap` + cron script 包 proxychains ✅,但忘了同样处理 `hk_intraday_monitor.py` ❌ → 港股 cron 推送报 602315。**必须四个脚本一起改**: us/hk × monitor/close。完整三件套见 `longbridge-cli` skill "CRITICAL: Mainland China Access" 章节。
- **🔴 LONGBRIDGE_REGION='ap' 必须写进脚本内部**: 仅 cron env 注入不够稳(hermes cron 的 env 字段有限制),改成在每个脚本 `import` 之前 `os.environ['LONGBRIDGE_REGION'] = 'ap'`,见 `~/.hermes/scripts/{us,hk}_intraday_{monitor,close}.py` 第 5 行。
- **🔴 cron script 路径要用绝对路径 (2026-07-09)**: proxychains 包装的 cron 命令 `script` 字段必须是 `proxychains4 -f /home/openclaw/.proxychains/proxychains.conf python3 /home/openclaw/.hermes/scripts/<name>.py` 这种完整路径,不能只写脚本名 — cron 找不到 `python3` 和 `proxychains4` 的相对位置。
- **🔴 纯算法函数先单元测试再集成 (2026-08-23)**: 改 `daily_t_analysis.py` 的算法函数 (`td9_levels` / `bollinger_levels` / `rsi_levels` 等) 时,**先在 `/tmp/test_<func>.py` 里独立测试 5-6 个边界 case**(连续跌/涨、<13根、平盘、振荡、部分跌),确认算法对了再跑全脚本。`daily_t_analysis.py` 顶部 `from longport import openapi` 会拉真实 API + proxychains,慢且依赖重,调试算法不要每次都拉行情。
- **🔴 no_agent=true cron 改逻辑时只改脚本,不动 cron prompt (2026-08-23)**: `cb187ab5f9fc daily-t-analysis` 是 `no_agent=true`,`script=daily_t_analysis.py`,cron job 直接把脚本 stdout 推给 QQ。换策略/换指标只改 `.py` 文件 + git commit/push,无需编辑 cron prompt。下次推送自动用新逻辑。
- **🔴 用户偏好: 横向 N 列 markdown 表, 1 票 1 列 (2026-07-29)** : daily_t_analysis 输出必须是"横向 markdown 表, 1 票 1 列",用户原话"表格, 我能左右滑动的"。**禁止** 1 票 1 表。同一规则适用于 dividend_alert / cn_dividend_buy_timing 等所有持仓推送。
## 参考
@@ -324,7 +327,9 @@ else:
## Daily-T-Analysis cron 参考
详见 `references/daily-t-analysis-cron.md` — daily_t_analysis.py 位于 `~/.hermes/scripts/` (Hermes-Scripts 仓库), cron `cb187ab5f9fc` 每天 BJT 21:00 推送持仓做T点位 + 多策略建议 (综合策略/海龟/Bollinger/Wave/RSI/MACD)。
详见 `references/daily-t-analysis-cron.md` — daily_t_analysis.py 位于 `~/.hermes/scripts/` (Hermes-Scripts 仓库), cron `cb187ab5f9fc` 每天 BJT 21:00 推送持仓做T点位 + 多策略建议 (综合策略/九转/Bollinger/Wave/RSI/MACD)。
🧙 九转 (TD Sequential) 算法实现 + 单元测试 + 输出格式详见 `references/td9-td-sequential.md` (2026-08-23 替代海龟)。
## 用户偏好 (2026-07-08)
@@ -332,3 +337,4 @@ else:
- **写脚本优先 `cat > /tmp/*.py << PYEOF` + `python3 /tmp/*.py`**: execute_code 频繁被 security scanner 拦截(BLOCKED: script timed out without user response),terminal+heredoc+python3 路径更稳,凭证也更安全(临时文件 + shred)。
- **不编造、不静默**: 拒绝回答时如实说"VPN未开不能下单",不要假装执行成功也不要自作主张走别的路径。
- **无效信号识别**: 无交易员姓名的格式(如 `📊 币种 X ETH` 或 `⚡ 跟单建议 ... (B类减仓)` 但上下文不明) = 脚本模拟/补推信号,不跟单、不推QQ。
- **没空做日内时用九转替代海龟 (2026-08-23)**: 用户不喜欢复杂的入场规则(海龟 20 日高低 + 2ATR 止损),日常推送更倾向"动量耗尽"类的计数指标。九转 (TD Sequential) 是更轻量的方案,只数连续 close<close[-4] 或 close>close[-4] 的根数,达 9 为完成信号,辅助做 T 反转判断。
@@ -17,14 +17,21 @@
| 表 | 列 | 行 |
|---|---|---|
| **基本面** | 票代码 | 现价/盈亏%/趋势/ATR%/支撑阻力/**策略** |
| **策略点位** | 票代码 | 当下入场/止损/🐢海龟入/🐢止损/📊BB上/📊BB下/🌊W50%/🌊止损/📈RSI(2)/📉MACD |
| **策略点位** | 票代码 | 当下入场/止损/🧙九转(计数+方向)/🧙九转入/🧙止损/📊BB上/📊BB下/🌊W50%/🌊止损/📈RSI(2)/📉MACD |
| **性价比** | 票代码 | 评级/预期利润 |
每张表都**横向滑动**(1 票 1 列),QQ mobile 用户可以左右翻比较。
**v3.0** 包含: 综合策略(7 类) + 5 策略点位(海龟/Bollinger/Wave/RSI/MACD)。
**v2.0** 包含: 5 策略点位(横向 1 票 1 表)。
**v1.0** 包含: 综合策略(纵向 1 票 1 块)。
**v3.1** 包含: 综合策略(7 类) + 5 策略点位(🧙九转/Bollinger/Wave/RSI/MACD)。
- 🧙 九转 (TD Sequential, Tom DeMark) 替代了 v3.0 的海龟 — 用户 2026-08-23 表示"没空做日内了,用神奇九转"
- 九转规则: 连续 9 根 close[i] < close[i-4] = 买入计数 9 (done); 连续 9 根 close[i] > close[i-4] = 卖出计数 9
- 输出三行: 计数/方向(多/空)/入场参考(完成时才有)/止损参考(完成时 = 第 9 根收盘)
- 算法实现 + 单元测试: 见 `references/td9-td-sequential.md`
**v3.0** 包含: 综合策略(7 类) + 5 策略点位(海龟/Bollinger/Wave/RSI/MACD)。⚠️ 已弃用海龟。
**v2.0** (2026-07-29): 加 5 策略点位 (横向 1 票 1 表)。
**v1.0** (2026-07-29): 加综合策略 + 置信度。
**原始版本**: 只输出支撑/阻力 + 低吸/高抛。
## 已知 Pitfall
@@ -34,40 +41,43 @@
- MACD 需要 ≥26 根 → **常常拿不到完整数据**, MACD 行可能不显示
- Wave 用 [-10:] 10 根 → OK
- Bollinger/Turtle/综合策略 用 [-20:] → OK
- Bollinger/九转 用 [-20:] → OK (九转实际只用 13 根)
- RSI(14) 需要 15 根 → OK
- RSI(2) 需要 3 根 → OK
**对策**: 推送里 MACD 用 `if macd:` 保护。
### 九转 (TD Sequential) 数据要求
- 九转至少 13 根 K 线 (1 + 4 + 8, 因为要比较 close[i] 和 close[i-4])
- 长桥 candlesticks 返 ~30 根 → 足够
- 输出约定: count>=9 显示"完成✓", 5<=count<9 显示"进行中…", count<5 不显示
## 相关 skill
- `intraday-regime-detector` — 元策略判别 (R²/ADF/vol), 输出"市场状态 + 推荐策略"
- `strategy-management` — 4 策略 (RSI2/VWAP/海龟/早盘动量) + ATR 出场点位
⚠️ daily_t_analysis 的"海龟"是简化版 (只用 20 日高低点 + 2 ATR 止损),与 strategy-management 的海龟策略定义有差异 — 后者更复杂。
⚠️ daily_t_analysis v3.0 已弃用海龟,v3.1+ 用九转替代 — 与 strategy-management 的海龟策略定义仍有差异(后者是 Donchian 通道 + ATR 仓位管理的完整版,九转只是动量耗尽计数)。
## 版本
- **v3.0 (2026-07-29)**: 横向 N 列 markdown 表 (基本 + 策略点位 + 性价比)
- commit `c1891f3` → Hermes-Scripts
- v2.0 (2026-07-29): 加 5 策略点位 (海龟/Bollinger/Wave/RSI/MACD)
- commit `450326d` → Hermes-Scripts
- v1.0 (2026-07-29): 加综合策略 + 置信度
- commit `b566350` → Hermes-Scripts
- 原始版本: 只输出支撑/阻力 + 低吸/高抛
## 推送实测 (v3.0 2026-07-30)
## 推送实测 (v3.1 2026-08-23)
```
| 指标 | UNH.US | RGTI.US | QQQI.US | 3416.HK |
|:---|:---|:---|:---|:---|
| **现价** | 420.57 USD | 13.22 USD | 51.00 USD | 8.655 HKD |
| 盈亏% | 🔴-1.3% | 🔴-35.5% | 🔴-3.3% | 🔴-6.8% |
| 趋势 | 📉空头 | 📉空头 | 📉空头 | 📈多头 |
| ATR% | 3.2% | 8.7% | 2.1% | 0.3% |
| 支撑/阻力 | 412.54/431.68 | 13.13/16.12 | 50.96/53.84 | 8.630/8.670 |
| **策略** | 反弹做空 ★★☆ | 超跌反弹 ★★☆ | 反弹做空 ★★☆ | 观望 ★☆☆ |
| 指标 | UNH.US | RGTI.US | QQQI.US | 3416.HK | 3415.HK |
|:---|:---|:---|:---|:---|:---|
| **现价** | 390.11 USD | 17.91 USD | 54.24 USD | 8.595 HKD | 79.800 HKD |
| 盈亏% | 🔴-8.4% | 🔴-12.6% | 🟢+2.8% | 🔴-7.5% | 🟢+0.6% |
| 趋势 | 📉空头 | ↗️偏多 | ↘️偏弱 | ↗️偏多 | ↘️偏弱 |
| ATR% | 2.4% | 6.3% | 1.0% | 0.9% | 0.6% |
| 支撑/阻力 | 383.83/398.90 | 15.66/18.95 | 53.91/55.98 | 8.405/8.595 | 79.700/81.040 |
| **策略** | 反弹做空 ★★☆ | 波段做T ★★☆ | 观望 ★☆☆ | 观望 ★☆☆ | 观望 ★☆☆ |
**🎯 策略点位**
| 指标 | UNH.US | RGTI.US | QQQI.US | 3416.HK | 3415.HK |
|:---|:---|:---|:---|:---|:---|
| 🧙 九转 | 多 九转买… 7/9 | - 九转… 0/9 | - 九转… 0/9 | - 九转… 0/9 | - 九转… 0/9 |
| 🧙 九转入 | - | - | - | - | - |
| 🧙 止损 | - | - | - | - | - |
```
## 关联 cron 推送 (都用同样横向 N 列模式)
@@ -77,4 +87,4 @@
- `8000d3cfed23` A股高息股买入时机 (11:30 BJT) — 8 列横向 + 点位 4 列
- `cb187ab5f9fc` 每日做T (21:00 BJT) — 横向 4 列
**统一 commit**: `0be6e69` 全部切换到横向表 (dividend_alert + cn_dividend_buy_timing) + `c1891f3` (daily_t_analysis)。
**统一 commit**: `0be6e69` 全部切换到横向表 (dividend_alert + cn_dividend_buy_timing) + `c1891f3` (daily_t_analysis) + `8669225` (九转替换海龟)。
@@ -0,0 +1,140 @@
# 神奇九转 (TD Sequential) — 算法 + lib 抽取 + 实战参考
## 位置
**主库**: `~/.hermes/scripts/lib/td9.py` (2026-08-23 抽到公用 lib, 4 个脚本共享)
```python
from lib.td9 import td9_levels, td9_summary
td9 = td9_levels(closes, current) # dict 或 None
summary = td9_summary(td9) # 一行短字符串
```
**禁止**: 在任何脚本里复制 `td9_levels()` 本地实现。要改算法只改 `lib/td9.py`, 4 个脚本自动同步。
## 用途
`daily_t_analysis.py` v3.1 (2026-08-23 替代 v3.0 海龟) 的核心策略之一。每日持仓推送里给每只票算九转计数 + 方向 + (完成时) 入场/止损参考。**2026-08-23 抽到 `~/.hermes/scripts/lib/td9.py` 公用库, 4 个脚本接入**: `daily_t_analysis.py` / `cn_dividend_buy_timing.py` / `scan_cn.py` / `dca_scanner.py`。
## 算法 (Tom DeMark TD Sequential)
```python
def td9_levels(closes, current):
"""买入九转: 连续 9 根 close[i] < close[i-4]
卖出九转: 连续 9 根 close[i] > close[i-4]
数据要求: 至少 13 根 K 线 (1 + 4 + 8)"""
if len(closes) < 13:
return None
# 从最新一根往回数,遇不符合条件就 break
buy_count = sum(1 for i in range(len(closes)-1, 3, -1)
if closes[i] < closes[i-4]
for _ in iter(lambda: True, True)
if closes[i] < closes[i-4] else break_counting())
# 实际用 for-else 模式实现更清晰:
buy_count = 0
for i in range(len(closes) - 1, 3, -1):
if closes[i] < closes[i - 4]:
buy_count += 1
else:
break
sell_count = 0
for i in range(len(closes) - 1, 3, -1):
if closes[i] > closes[i - 4]:
sell_count += 1
else:
break
```
**完成判定**: `count >= 9` → `done=True`,方向由买/卖计数决定。
**未完成但有意义**: `count >= 5` → 显示进行中。
**入场/止损参考 (仅完成时)**:
- 入场 = 当前价 (策略风格: 完成次日 close > 完成当日 high 触发,实际推送里用 current 简化)
- 止损 = 第 9 根 K 线收盘价 (`closes[len-9]`)
## 输出行 (横向 N 列 markdown 表)
```
| 🧙 九转 | 多 九转买✓ 9/9 | 空 九转卖… 5/9 | - 九转… 0/9 |
| 🧙 九转入 | 385.50 | - | - |
| 🧙 止损 | 380.10 | - | - |
```
- `✓` = 完成 (done=True, count>=9) → 入场/止损有数字
- `…` = 进行中 (count>=5 但 <9) → 入场/止损是 `-`
- 无显示 = count<5 或横盘
## 单元测试 (2026-08-23 验证 6/6 通过)
测试脚本保存在 `/tmp/test_td9.py`,**验证算法独立于 longbridge SDK**(避免每次都拉真实行情调试):
```python
import sys; sys.path.insert(0, '/home/openclaw/.hermes/scripts')
from daily_t_analysis import td9_levels
# 1. 连续跌 14 根 → count=10, done=True, dir=多 (count 可以 >9,继续算"超耗")
assert td9_levels([100-i for i in range(14)], 86)['count'] >= 9
# 2. 连续涨 14 根 → count>=9, dir=空
assert td9_levels([80+i for i in range(14)], 93)['direction'] == '空'
# 3. <13 根 → None
assert td9_levels([100-i for i in range(12)], 89) is None
# 4. 平盘 14 根 → count=0, dir=-
assert td9_levels([100]*14, 100)['count'] == 0
# 5. 振荡 (跌3涨3跌3涨3) → count=0
assert td9_levels([100,99,98,97,98,99,100,99,98,99,100,99,98,99], 99)['count'] == 0
# 6. 部分跌 (前 5 平 + 后 10 跌) → count 在 6 左右, done=False
closes = [95]*5 + [100, 99, 98, 97, 96, 95, 94, 93, 92, 91]
assert td9_levels(closes, 91)['count'] >= 5 and not td9_levels(closes, 91)['done']
```
## 工作流教训 (2026-08-23)
1. **算法函数要先单元测试再集成测试** — `daily_t_analysis.py` 顶部 `from longport import openapi` 会拉真实 API,慢且依赖 proxychains。把纯算法函数 (`td9_levels`, `bollinger_levels`, `rsi_levels` 等) 单独 test 一次,确认逻辑对了再跑全脚本。
2. **no_agent=true cron 只需改脚本,不动 cron prompt** — cron `cb187ab5f9fc` 的 `script=daily_t_analysis.py` 直接调脚本 stdout,无需编辑 cron prompt。
3. **改完即提交 + push** — 同步 `~/.hermes/scripts/` (Hermes-Scripts 仓库) 到 git.hi6k.com,避免下次部署丢失。
4. **horizontal N 列 markdown 表 (QQ mobile 可滑动) 是用户偏好** — 1 票 1 列,不要 1 票 1 表。详见 `daily-t-analysis-cron.md`。
## 4 个使用脚本 (2026-08-23)
| 脚本 | cron job | 角色 | TD9 用法 |
|---|---|---|---|
| `daily_t_analysis.py` | `cb187ab5f9fc` BJT 21:00 | 持仓做 T 分析 | 表格 + 🧙九转(计数+方向) + 🧙九转入 + 🧙止损 三行 |
| `cn_dividend_buy_timing.py` | `8000d3cfed23` BJT 11:30 | A股每日买入时机 | **入场增强**: `recommend_entry()` 接 td9; 卖出完成 → 🔴升🟡 + 用九转止损价 |
| `scan_cn.py` | `5d62894cdaee` BJT 周四 19:30 | A股周扫描 | 阶梯入场表后 + 🧙九转 + 🧙止损 两行 |
| `dca_scanner.py` | `84c46e13db14` / `89a3e7a6e6fe` BJT 周四 20:00/21:30 | 港美股周扫描 | 同 scan_cn, 阶梯入场表后 + 🧙两行 |
## 入场时机增强 (cn_dividend_buy_timing.py 详解)
TD9 在 `recommend_entry(div_yield, current, ma50, support, atr_pct, trend, td9=None)` 里是**信号增强层**, 不替代 MA50/支撑/趋势等基础条件:
| TD9 状态 | 对原入场判别的影响 |
|---|---|
| 买入计数 ≥7 (未完成, 跌势末期) | 🟢今天买 理由加 "+ 🧙九转买 N/9 (跌势末期)" |
| 卖出计数 ≥7 (未完成, 涨势末期) | 🟢今天买 理由加 "⚠️🧙九转卖 N/9 (涨势末期,回撤将至)" |
| **卖出完成 (done=True, 涨势到顶)** | 🔴不入场 **升级为 🟡等回撤 ★★☆, 止损用九转止损价 (第9根收盘)** |
| 买入计数 <5 或 无九转信号 | 不影响原判别 |
**典型效果** (2026-08-23 实测):
- 中国神华 (601088.SH): 九转卖出完成 11/9 → 原本 🔴不入场 → 升级 🟡等回撤 + 九转止损 44.70
- 建设银行 (601939.SH): 九转卖出完成 10/9 → 同升级
- 邮储银行 (601658.SH): 九转 0/9 → 走原流程, 高息+价<MA50+贴近支撑 → 🟢今天买 ★★★
**核心价值**: 在用户"吃股息"前提下, 九转避免在涨势到顶 (td9_sell_done) 时买入, 用九转止损价作为新的入场触发参考。
## 不替代
- `strategy-management` skill 的"海龟"是复杂版(Donchian 通道 + ATR 仓位管理) — 九转只是做 T 计数指标,不是完整交易系统
- `intraday-regime-detector` 的元策略判别(R²/ADF/vol) — 九转只算单票的动量耗尽信号,不管市场状态
## Pitfalls
- **🔴 单元测试先于集成**: 改 `td9_levels` 逻辑时先在 `/tmp/test_td9.py` 跑 6 个边界 case, 再 import 到全脚本里跑。`daily_t_analysis.py` 顶部 `from longport import openapi` 会拉真实 API + proxychains, 慢且依赖重, 每次跑调试算法不划算。
- **🔴 td9_levels 抽到 lib 别再 copy-paste**: 4 个脚本都依赖 `~/.hermes/scripts/lib/td9.py` 公用库。**禁止** 在任何脚本里复制 `td9_levels()` 实现 — 修改逻辑时只改 `lib/td9.py`, 4 个脚本自动同步。
- **🔴 输出格式必须横向 N 列 (用户偏好 2026-07-29)**: 九转在表格里和其他指标一样, 1 票 1 列。`td9_summary()` 返回的短字符串是 cell 内容, 直接拼到 `| col1 | col2 | ... |` 行里。
- **🔴 长桥 30 根 K 线限**: K 线少于 13 根时 `td9_levels` 返回 None, 调用方需要保护 (`if td9:`)。`cn_dividend_buy_timing.py` 已经过滤 (`len(closes) >= 13`), 其他新脚本接入时也要保护。
- **🔴 九转只是动量耗尽计数**: 不是趋势反转确认。完成信号 (count≥9) 后价格可能继续原方向运行 1-3 根, 实战要结合 MA50 / 支撑 / 趋势等基础条件。**单独用九转做单**风险高。