diff --git a/README.md b/README.md index b23e446..ee65c87 100644 --- a/README.md +++ b/README.md @@ -113,7 +113,46 @@ easy-tdx indicator MACD -m SH -c 600519 --period 5MIN --count 50 easy-tdx indicator RSI -m SZ -c 000001 --no-ohlcv ``` -支持 30 个指标:MACD, KDJ, RSI, BOLL, DMI, ATR, WR, CCI, BIAS, OBV, VR, EMV, MFI, BRAR, ASI, TRIX, DPO, MTM, ROC, EXPMA, BBI, PSY, DFMA, CR, KTN, XSII, MASS, TAQ。 +### 捉妖大师(重点) + +捉妖大师是多周期涨幅共振指标,通过 20/60/120 日涨幅及指数平滑判断短中长线趋势是否同向,用于筛选趋势刚启动的强势股。 + +```bash +easy-tdx indicator ZHUOYAO -m SH -c 600519 --count 30 --table + +# 自定义周期参数 +easy-tdx indicator ZHUOYAO -m SZ -c 000001 --params N1=90,N2=45,N3=15 + +# 结合其他指标一起看 +easy-tdx indicator ZHUOYAO,MACD,KDJ -m SH -c 600519 --count 20 --table +``` + +输出列说明: + +| 列名 | 含义 | +|------|------| +| `ZY_LONG` | 长线 — 120 日涨幅的 10 日指数平滑 | +| `ZY_MID` | 中线 — 60 日涨幅(%) | +| `ZY_SHORT` | 短线 — 20 日涨幅(%) | +| `ZY_TREND` | 趋势 — 中线的 10 日指数平滑 | + +**核心信号:** 四线全部 > 0 且短线 > 中线 > 长线 = 短中长趋势完全一致向上,是强势股特征。详见 [捉妖大师指标详解](docs/indicator-zhuoyao.md)。 + +```python +# Python API 用法 +from easy_tdx import MacClient, Market + +with MacClient.from_best_host() as c: + df = c.get_stock_kline_with_indicators( + Market.SH, "600519", + indicators=["ZHUOYAO"], + count=30, + ) + # df 包含: datetime, open, close, high, low, vol, amount + # + ZY_LONG, ZY_MID, ZY_SHORT, ZY_TREND +``` + +支持 30 个指标:MACD, KDJ, RSI, BOLL, DMI, ATR, WR, CCI, BIAS, OBV, VR, EMV, MFI, BRAR, ASI, TRIX, DPO, MTM, ROC, EXPMA, BBI, PSY, DFMA, CR, KTN, XSII, MASS, TAQ, ZHUOYAO。 ### 财务 @@ -155,7 +194,7 @@ easy-tdx ex tick HK_MAIN_BOARD 00700 --table # 港股分时 | `market-stat` | 全市场涨跌统计 | | `server-info` | 服务器交易时段 | | `symbol-info` | 个股特征快照 | -| `indicator` | 技术指标计算(30 个:MACD/KDJ/RSI/BOLL/DMI/ATR...) | +| `indicator` | 技术指标计算(31 个:MACD/KDJ/RSI/BOLL/DMI/ATR...) | | `indicator-list` | 列出可用技术指标 | | `f10` | F10 公司信息 | | `fund-flow` | 历史资金流向 | @@ -255,7 +294,7 @@ with MacClient.from_best_host() as c: print(info["name"], info["description"], info["outputs"]) ``` -支持 30 个技术指标: +支持 31 个技术指标: | 指标 | 输入 | 输出列 | |------|------|--------| @@ -287,6 +326,7 @@ with MacClient.from_best_host() as c: | XSII | close, high, low | XSII_TD1, XSII_TD2, XSII_TD3, XSII_TD4 | | MASS | high, low | MASS, MASS_MA | | TAQ | high, low | TAQ_UP, TAQ_MID, TAQ_DOWN | +| ZHUOYAO | close | ZY_LONG, ZY_MID, ZY_SHORT, ZY_TREND | #### 分时 @@ -590,7 +630,7 @@ src/easy_tdx/ ├── client.py # TdxClient / AsyncTdxClient(标准协议) ├── unified.py # UnifiedTdxClient(统一入口) ├── config.py # 服务器地址、端口、超时配置 -├── indicator.py # 技术指标计算(30 个,基于 MyTT) +├── indicator.py # 技术指标计算(31 个,基于 MyTT) ├── MyTT.py # 麦语言技术指标算法库 ├── mac/ │ ├── client.py # MacClient / AsyncMacClient(MAC 协议) @@ -634,6 +674,15 @@ ruff format --check src/ tests/ # format check ## Changelog +### 1.4.1 (2026-05-28) + +**捉妖大师指标** — 新增 ZHUOYAO 多周期涨幅共振指标,通过 20/60/120 日涨幅及指数平滑判断短中长线趋势是否同向,用于筛选趋势刚启动的强势股。 + +- 新增 `ZHUOYAO` 指标:输出 ZY_LONG/ZY_MID/ZY_SHORT/ZY_TREND 四条线 +- CLI: `easy-tdx indicator ZHUOYAO -m SH -c 600519 --table` +- Python API: `indicators=["ZHUOYAO"]` +- 详见 [捉妖大师指标详解](docs/indicator-zhuoyao.md) + ### 1.4.0 (2026-05-28) **技术指标计算** — 集成 [MyTT](https://github.com/mpquant/MyTT) 麦语言指标库,支持 30 个常用技术指标,一步获取 K 线 + 指标值。 diff --git a/docs/indicator-zhuoyao.md b/docs/indicator-zhuoyao.md new file mode 100644 index 0000000..f3b8ae0 --- /dev/null +++ b/docs/indicator-zhuoyao.md @@ -0,0 +1,84 @@ +# 捉妖大师 (ZHUOYAO) 技术指标 + +## 指标定义 + +多周期涨幅共振指标,通过 20/60/120 日涨幅百分比及指数平滑,判断短中长线趋势是否同向。 + +``` +长线1 = (C / REF(C,120) - 1) × 100 # 120日涨幅(%) +长线 = EXPMA(长线1, 10) # 长线的10日指数平滑 +中线 = (C / REF(C,60) - 1) × 100 # 60日涨幅(%) +短线 = (C / REF(C,20) - 1) × 100 # 20日涨幅(%) +趋势 = EXPMA(中线, 10) # 中线的10日指数平滑 +``` + +返回 `(长线, 中线, 短线, 趋势)` 四条线,均以零轴为多空分界。 + +## 调用方式 + +```python +from easy_tdx.MyTT import ZHUOYAO + +# close: numpy 数组,至少 120+ 个数据点 +LONG, MID, SHORT, TREND = ZHUOYAO(close) + +# 自定义周期 +LONG, MID, SHORT, TREND = ZHUOYAO(close, N1=120, N2=60, N3=20, M=10) +``` + +参数说明: + +| 参数 | 默认值 | 含义 | +|------|--------|------| +| N1 | 120 | 长线回望周期 | +| N2 | 60 | 中线回望周期 | +| N3 | 20 | 短线回望周期 | +| M | 10 | EXPMA 平滑周期 | + +## 核心逻辑 + +本质是 **多时间框架 ROC (Rate of Change) 共振系统**: + +- **短线** = ROC(20):捕捉 20 日内的短期动量方向 +- **中线** = ROC(60):反映季度级别的中期趋势强度 +- **长线** = EMA(ROC(120), 10):半年级别的长线趋势,经过平滑降噪 +- **趋势** = EMA(ROC(60), 10):中线的平滑版本,用于过滤中线噪音 + +零轴是所有线的多空分界线:正值 = 该周期内上涨,负值 = 该周期内下跌。 + +## 交易信号 + +### 1. 多线共振(核心信号) + +| 状态 | 条件 | 含义 | +|------|------|------| +| 全线多头 | 四线 > 0,且 短线 > 中线 > 长线 | 短中长趋势完全一致向上,强势股特征 | +| 全线空头 | 四线 < 0,且 短线 < 中线 < 长线 | 各周期同步下跌,应回避 | +| 多空分歧 | 线的方向不一致 | 趋势不明,等待收敛 | + +### 2. 穿越信号 + +- **短线穿越零轴**:20 日动量反转,短线进场或离场信号 +- **中线穿越趋势**:ROC(60) 与其平滑线金叉/死叉,中期趋势转向确认 +- **长线拐头**:长线从下降转为上升,大级别底部信号 + +### 3. "捉妖"条件(强势股筛选) + +同时满足以下条件时,可能是趋势刚启动的强势股: + +1. 短线 > 0(短期动量向上) +2. 中线 > 0(中期趋势向上) +3. 长线从负转正或即将转正(长线趋势刚反转) +4. 短线 > 中线 > 趋势(动量加速,不是减速) + +### 4. 风险信号 + +- 短线远高于中线(乖离过大):短期过热,有回调风险 +- 中线 > 0 但趋势 < 0:中期反弹但平滑趋势未确认,可能是假突破 +- 四线同时从高位回落:多周期共振见顶 + +## 注意事项 + +- 前置数据不足时(< N1=120 根 K 线),长线值为 NaN,属于正常现象 +- 指标是价格幅度的度量,不直接产生买卖信号,需结合成交量、K 线形态综合判断 +- "妖股"往往波动剧烈,共振信号出现后也可能快速消失,不宜单独作为唯一依据 diff --git a/pyproject.toml b/pyproject.toml index 6013958..1505a97 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "easy-tdx" -version = "1.4.0" +version = "1.4.1" description = "通达信 TCP 协议行情数据客户端,支持在线行情与离线本地数据读取" readme = "README.md" requires-python = ">=3.10" diff --git a/src/easy_tdx/indicator.py b/src/easy_tdx/indicator.py index 28bdb20..750071a 100644 --- a/src/easy_tdx/indicator.py +++ b/src/easy_tdx/indicator.py @@ -177,6 +177,16 @@ _reg( "ASI 振动升降指标", ) +# ── 捉妖大师(仅需 close)───────────────────────────────────────────── +_reg( + "ZHUOYAO", + ("close",), + ("ZY_LONG", "ZY_MID", "ZY_SHORT", "ZY_TREND"), + MyTT.ZHUOYAO, + {"N1": 120, "N2": 60, "N3": 20, "M": 10}, + "ZHUOYAO 捉妖大师 多周期涨幅共振", +) + # ── 仅需 high + low ──────────────────────────────────────────────────── _reg( "TAQ", ("high", "low"), ("TAQ_UP", "TAQ_MID", "TAQ_DOWN"), MyTT.TAQ, {"N": 20}, "TAQ 唐安奇通道"