From 4c5817f7b08703d7564731daac0ca33c912693e6 Mon Sep 17 00:00:00 2001 From: GitHub Date: Thu, 28 May 2026 22:31:17 +0800 Subject: [PATCH] feat: add BIAS_SIGNAL indicator (30-day bias with signal lines) Add BIAS_SIGNAL indicator derived from TongDaXin's 30-day bias formula. Outputs BS_X (raw bias), BS_SMA (short signal line), BS_LMA (long signal line) for trend direction and reversal detection via asymmetric bull/bear logic. Co-Authored-By: Claude Opus 4.7 --- README.md | 61 ++++++++++++- docs/indicator-bias-signal.md | 167 ++++++++++++++++++++++++++++++++++ src/easy_tdx/MyTT.py | 6 ++ src/easy_tdx/indicator.py | 8 ++ 4 files changed, 239 insertions(+), 3 deletions(-) create mode 100644 docs/indicator-bias-signal.md diff --git a/README.md b/README.md index ee65c87..65fa37f 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,7 @@ easy-tdx indicator ATR -m SH -c 600519 --table # ATR 真实波幅 easy-tdx indicator WR -m SH -c 600519 --table # WR 威廉指标 easy-tdx indicator CCI -m SH -c 600519 --table # CCI 顺势指标 easy-tdx indicator BIAS -m SZ -c 000001 --table # BIAS 乖离率 +easy-tdx indicator BIAS_SIGNAL -m SH -c 600519 --table # 30日乖离率信号 easy-tdx indicator OBV -m SZ -c 000001 --table # OBV 能量潮 # 多指标同时计算 @@ -138,6 +139,46 @@ easy-tdx indicator ZHUOYAO,MACD,KDJ -m SH -c 600519 --count 20 --table **核心信号:** 四线全部 > 0 且短线 > 中线 > 长线 = 短中长趋势完全一致向上,是强势股特征。详见 [捉妖大师指标详解](docs/indicator-zhuoyao.md)。 +### 30日乖离率信号(重点) + +30日乖离率信号指标,在标准乖离率(BIAS)基础上叠加短/长信号线,通过三者位置关系判断趋势方向和转折点。源自通达信经典指标。 + +```bash +easy-tdx indicator BIAS_SIGNAL -m SH -c 600519 --count 60 --table + +# 自定义周期参数 +easy-tdx indicator BIAS_SIGNAL -m SZ -c 000001 --params P=5,M=20 + +# 结合其他指标一起看 +easy-tdx indicator BIAS_SIGNAL,MACD,KDJ -m SH -c 600519 --count 30 --table +``` + +输出列说明: + +| 列名 | 含义 | +|------|------| +| `BS_X` | M日乖离率 — 当前价格偏离30日均线的百分比 | +| `BS_SMA` | 短周期信号线 — 乖离率的 P 日均线,过滤短期噪音 | +| `BS_LMA` | 长周期信号线 — 乖离率的 M 日均线,捕捉中期趋势方向 | + +**核心信号:** X > S_SMA 且 X_LMA 上升 = 多头确认(通达信红色);S_SMA > X 或 X_LMA 下降 = 空头预警(通达信绿色)。多空判断非对称设计——多头需两个条件同时满足,空头只需其一,偏向保守预警。详见 [30日乖离率信号指标详解](docs/indicator-bias-signal.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=["BIAS_SIGNAL"], + count=60, + ) + # df 包含: datetime, open, close, high, low, vol, amount + # + BS_X, BS_SMA, BS_LMA +``` + +支持 32 个指标:MACD, KDJ, RSI, BOLL, DMI, ATR, WR, CCI, BIAS, BIAS_SIGNAL, OBV, VR, EMV, MFI, BRAR, ASI, TRIX, DPO, MTM, ROC, EXPMA, BBI, PSY, DFMA, CR, KTN, XSII, MASS, TAQ, ZHUOYAO。 + ```python # Python API 用法 from easy_tdx import MacClient, Market @@ -152,7 +193,7 @@ with MacClient.from_best_host() as c: # + 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。 +支持 32 个指标:MACD, KDJ, RSI, BOLL, DMI, ATR, WR, CCI, BIAS, BIAS_SIGNAL, OBV, VR, EMV, MFI, BRAR, ASI, TRIX, DPO, MTM, ROC, EXPMA, BBI, PSY, DFMA, CR, KTN, XSII, MASS, TAQ, ZHUOYAO。 ### 财务 @@ -194,7 +235,7 @@ easy-tdx ex tick HK_MAIN_BOARD 00700 --table # 港股分时 | `market-stat` | 全市场涨跌统计 | | `server-info` | 服务器交易时段 | | `symbol-info` | 个股特征快照 | -| `indicator` | 技术指标计算(31 个:MACD/KDJ/RSI/BOLL/DMI/ATR...) | +| `indicator` | 技术指标计算(32 个:MACD/KDJ/RSI/BOLL/DMI/ATR...) | | `indicator-list` | 列出可用技术指标 | | `f10` | F10 公司信息 | | `fund-flow` | 历史资金流向 | @@ -327,6 +368,7 @@ with MacClient.from_best_host() as c: | 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 | +| BIAS_SIGNAL | close | BS_X, BS_SMA, BS_LMA | #### 分时 @@ -630,7 +672,7 @@ src/easy_tdx/ ├── client.py # TdxClient / AsyncTdxClient(标准协议) ├── unified.py # UnifiedTdxClient(统一入口) ├── config.py # 服务器地址、端口、超时配置 -├── indicator.py # 技术指标计算(31 个,基于 MyTT) +├── indicator.py # 技术指标计算(32 个,基于 MyTT) ├── MyTT.py # 麦语言技术指标算法库 ├── mac/ │ ├── client.py # MacClient / AsyncMacClient(MAC 协议) @@ -674,6 +716,19 @@ ruff format --check src/ tests/ # format check ## Changelog +### 1.4.3 (2026-05-28) + +**30日乖离率信号指标** — 新增 BIAS_SIGNAL 指标,在标准乖离率基础上叠加短/长信号线,通过三者位置关系判断趋势方向和转折点。源自通达信经典指标。 + +- 新增 `BIAS_SIGNAL` 指标:输出 BS_X/BS_SMA/BS_LMA 三条线 +- CLI: `easy-tdx indicator BIAS_SIGNAL -m SH -c 600519 --table` +- Python API: `indicators=["BIAS_SIGNAL"]` +- 详见 [30日乖离率信号指标详解](docs/indicator-bias-signal.md) + +### 1.4.2 (2026-05-28) + +修复 1.4.1 发布遗漏:MyTT.py 中 ZHUOYAO 函数定义未包含在 1.4.1 的 PyPI 包中。 + ### 1.4.1 (2026-05-28) **捉妖大师指标** — 新增 ZHUOYAO 多周期涨幅共振指标,通过 20/60/120 日涨幅及指数平滑判断短中长线趋势是否同向,用于筛选趋势刚启动的强势股。 diff --git a/docs/indicator-bias-signal.md b/docs/indicator-bias-signal.md new file mode 100644 index 0000000..31349d8 --- /dev/null +++ b/docs/indicator-bias-signal.md @@ -0,0 +1,167 @@ +# 30日乖离率信号 (BIAS_SIGNAL) 技术指标 + +## 指标定义 + +在标准乖离率(BIAS)的基础上,叠加短期信号线和长期信号线,通过三者之间的位置关系判断趋势方向和转折点。 + +### 通达信原公式 + +``` +P:=10; +M:=30; +X:(CLOSE-MA(CLOSE,M))/MA(CLOSE,M)*100; +S_SMA:MA(X,P); +X_LMA:MA(X,M); + +IF(X>S_SMA AND X_LMA>REF(X_LMA,1),X_LMA,DRAWNULL),COLORRED; +IF(S_SMA>X OR X_LMA 0**:价格在 M 日均线上方(偏多) +- **X < 0**:价格在 M 日均线下方(偏空) +- **X 在零轴附近震荡**:价格围绕均线缠绕,无明确方向 + +## 交易信号 + +### 1. 趋势方向判断(通达信颜色逻辑) + +通达信原版的颜色规则等价于: + +| 状态 | 条件 | 含义 | +|------|------|------| +| 多头(红) | `X > S_SMA` **且** `X_LMA > REF(X_LMA,1)` | 乖离率高于短期均线(偏强),且长期信号线在上升(趋势确认) | +| 空头(绿) | `S_SMA > X` **或** `X_LMA < REF(X_LMA,1)` | 乖离率低于短期均线(偏弱),或长期信号线在下降(趋势走弱) | + +注意条件是非对称的:多头需要两个条件**同时满足**,空头只需满足其一。这意味着指标偏向保守——宁可错过一些多头机会,也要尽早预警空头风险。 + +### 2. 金叉/死叉信号 + +- **X 上穿 S_SMA**(金叉):短期乖离率走强,价格开始加速偏离均线。如果 X 同时上穿零轴,信号更强 +- **X 下穿 S_SMA**(死叉):短期乖离率走弱,价格向均线回归。如果在高位发生,是明确的卖出信号 +- **S_SMA 上穿 X_LMA**:短期信号确认中期趋势向上,趋势行情确认 + +### 3. X_LMA 拐头信号 + +X_LMA 是 X 的 M 日均线,变化缓慢但方向性强: + +- **X_LMA 从下降转为上升**:中期趋势从空头转多头,是趋势转折的确认信号 +- **X_LMA 从上升转为下降**:中期趋势从多头转空头,即使价格还在上涨也要警惕 + +### 4. 极值信号 + +- **X 远高于 S_SMA 和 X_LMA**(如 X > 10):短期严重超买,价格远超均线,回调风险大 +- **X 远低于 S_SMA 和 X_LMA**(如 X < -10):短期严重超卖,可能存在反弹机会 +- 极值判断需要结合个股历史波动率,没有统一阈值 + +### 5. 典型入场场景 + +**多头入场**(四个条件同时满足): +1. X 从下方上穿零轴(价格站上30日均线) +2. X > S_SMA(乖离率在走强) +3. X_LMA 拐头向上(中期趋势确认) +4. 成交量配合放大(量价共振) + +**空头离场/做空**: +1. X 从高位下穿 S_SMA(短期走弱) +2. X_LMA 开始走平或拐头向下 +3. 价格跌破30日均线(X < 0 确认) + +## 参数调优 + +### P(短期信号线周期) + +| P 值 | 特点 | +|------|------| +| 5 | 信号灵敏,假信号多,适合短线交易 | +| 10 | 默认值,信号频率和准确性较平衡 | +| 20 | 信号少但可靠,适合中长线 | + +### M(乖离率 + 长期信号线周期) + +| M 值 | 特点 | +|------|------| +| 20 | 更贴近价格,适合波段交易 | +| 30 | 默认值,一个月级别,适合中线趋势跟踪 | +| 60 | 更平滑,信号少但级别大,适合中长线 | + +### 调参建议 + +- 大盘蓝筹股波动小,M 可以用默认 30 或调大到 60 +- 小盘成长股波动大,P 调小到 5-7 可以更早捕捉拐点 +- 参数无需频繁调整,固定 P=10, M=30 对大多数个股有效 + +## 与其他指标的配合 + +| 配合指标 | 作用 | +|----------|------| +| MACD | BIAS_SIGNAL 判断趋势方向,MACD 确认动量强弱 | +| VOL(成交量) | 乖离率扩大时需要成交量配合,无量乖离不可靠 | +| BOLL | BOLL 上轨/下轨可以辅助判断 X 的极值区域 | +| KDJ | BIAS_SIGNAL 确认趋势方向后,KDJ 寻找具体买卖点 | + +## 注意事项 + +- 数据不足时(< 2M 根 K 线),X_LMA 收敛不充分,前期值不准确 +- 该指标本质是均线偏离度的趋势分析,**震荡市中反复穿越零轴会产生大量假信号** +- 乖离率的绝对值因个股波动率而异,不同股票间不应直接比较 X 的数值 +- 指标不直接产生买卖信号,需结合成交量、K 线形态和基本面综合判断 diff --git a/src/easy_tdx/MyTT.py b/src/easy_tdx/MyTT.py index 214cde4..c4a4901 100644 --- a/src/easy_tdx/MyTT.py +++ b/src/easy_tdx/MyTT.py @@ -315,4 +315,10 @@ def ZHUOYAO(CLOSE, N1=120, N2=60, N3=20, M=10): #捉妖大师指标:中长 TREND = EMA(MID, M) #趋势 EXPMA(中线,10) return RD(LONG), RD(MID), RD(SHORT), RD(TREND) +def BIAS_SIGNAL(CLOSE, P=10, M=30): #乖离率信号指标:M日乖离 + 短/长信号线趋势判断 + X = (CLOSE - MA(CLOSE, M)) / MA(CLOSE, M) * 100 #M日乖离率 + S_SMA = MA(X, P) #短周期信号线 MA(X,P) + X_LMA = MA(X, M) #长周期信号线 MA(X,M) + return RD(X), RD(S_SMA), RD(X_LMA) + #望大家能提交更多指标和函数 https://github.com/mpquant/MyTT diff --git a/src/easy_tdx/indicator.py b/src/easy_tdx/indicator.py index 750071a..6b213e4 100644 --- a/src/easy_tdx/indicator.py +++ b/src/easy_tdx/indicator.py @@ -186,6 +186,14 @@ _reg( {"N1": 120, "N2": 60, "N3": 20, "M": 10}, "ZHUOYAO 捉妖大师 多周期涨幅共振", ) +_reg( + "BIAS_SIGNAL", + ("close",), + ("BS_X", "BS_SMA", "BS_LMA"), + MyTT.BIAS_SIGNAL, + {"P": 10, "M": 30}, + "BIAS_SIGNAL 30日乖离率信号(乖离率+短/长信号线)", +) # ── 仅需 high + low ──────────────────────────────────────────────────── _reg(