feat: add ZHUOYAO indicator (multi-period momentum resonance), bump to 1.4.1

Add 捉妖大师 (ZHUOYAO) indicator to the indicator registry. Outputs
ZY_LONG/ZY_MID/ZY_SHORT/ZY_TREND four lines based on 20/60/120-day
ROC with EMA smoothing for trend resonance detection.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
GitHub
2026-05-28 17:49:30 +08:00
co-authored by Claude Opus 4.7
parent bcddf5a052
commit 6b06f9eb40
4 changed files with 148 additions and 5 deletions
+53 -4
View File
@@ -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 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` | 全市场涨跌统计 | | `market-stat` | 全市场涨跌统计 |
| `server-info` | 服务器交易时段 | | `server-info` | 服务器交易时段 |
| `symbol-info` | 个股特征快照 | | `symbol-info` | 个股特征快照 |
| `indicator` | 技术指标计算(30 个:MACD/KDJ/RSI/BOLL/DMI/ATR... | | `indicator` | 技术指标计算(31 个:MACD/KDJ/RSI/BOLL/DMI/ATR... |
| `indicator-list` | 列出可用技术指标 | | `indicator-list` | 列出可用技术指标 |
| `f10` | F10 公司信息 | | `f10` | F10 公司信息 |
| `fund-flow` | 历史资金流向 | | `fund-flow` | 历史资金流向 |
@@ -255,7 +294,7 @@ with MacClient.from_best_host() as c:
print(info["name"], info["description"], info["outputs"]) 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 | | XSII | close, high, low | XSII_TD1, XSII_TD2, XSII_TD3, XSII_TD4 |
| MASS | high, low | MASS, MASS_MA | | MASS | high, low | MASS, MASS_MA |
| TAQ | high, low | TAQ_UP, TAQ_MID, TAQ_DOWN | | 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(标准协议) ├── client.py # TdxClient / AsyncTdxClient(标准协议)
├── unified.py # UnifiedTdxClient(统一入口) ├── unified.py # UnifiedTdxClient(统一入口)
├── config.py # 服务器地址、端口、超时配置 ├── config.py # 服务器地址、端口、超时配置
├── indicator.py # 技术指标计算(30 个,基于 MyTT ├── indicator.py # 技术指标计算(31 个,基于 MyTT
├── MyTT.py # 麦语言技术指标算法库 ├── MyTT.py # 麦语言技术指标算法库
├── mac/ ├── mac/
│ ├── client.py # MacClient / AsyncMacClientMAC 协议) │ ├── client.py # MacClient / AsyncMacClientMAC 协议)
@@ -634,6 +674,15 @@ ruff format --check src/ tests/ # format check
## Changelog ## 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) ### 1.4.0 (2026-05-28)
**技术指标计算** — 集成 [MyTT](https://github.com/mpquant/MyTT) 麦语言指标库,支持 30 个常用技术指标,一步获取 K 线 + 指标值。 **技术指标计算** — 集成 [MyTT](https://github.com/mpquant/MyTT) 麦语言指标库,支持 30 个常用技术指标,一步获取 K 线 + 指标值。
+84
View File
@@ -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 线形态综合判断
- "妖股"往往波动剧烈,共振信号出现后也可能快速消失,不宜单独作为唯一依据
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project] [project]
name = "easy-tdx" name = "easy-tdx"
version = "1.4.0" version = "1.4.1"
description = "通达信 TCP 协议行情数据客户端,支持在线行情与离线本地数据读取" description = "通达信 TCP 协议行情数据客户端,支持在线行情与离线本地数据读取"
readme = "README.md" readme = "README.md"
requires-python = ">=3.10" requires-python = ">=3.10"
+10
View File
@@ -177,6 +177,16 @@ _reg(
"ASI 振动升降指标", "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 ──────────────────────────────────────────────────── # ── 仅需 high + low ────────────────────────────────────────────────────
_reg( _reg(
"TAQ", ("high", "low"), ("TAQ_UP", "TAQ_MID", "TAQ_DOWN"), MyTT.TAQ, {"N": 20}, "TAQ 唐安奇通道" "TAQ", ("high", "low"), ("TAQ_UP", "TAQ_MID", "TAQ_DOWN"), MyTT.TAQ, {"N": 20}, "TAQ 唐安奇通道"