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 <noreply@anthropic.com>
This commit is contained in:
GitHub
2026-05-28 22:31:17 +08:00
co-authored by Claude Opus 4.7
parent 7572b16614
commit 4c5817f7b0
4 changed files with 239 additions and 3 deletions
+167
View File
@@ -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<REF(X_LMA,1),X_LMA,DRAWNULL),COLORGREEN;
ZERO:0;
```
### MyTT 等价实现
```python
def BIAS_SIGNAL(CLOSE, P=10, M=30):
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)
```
输出三条线:`(X, S_SMA, X_LMA)`
## 调用方式
```python
from easy_tdx.MyTT import BIAS_SIGNAL
# close: numpy 数组,建议至少 60+ 个数据点(M=30 的两倍以确保信号线收敛)
X, S_SMA, X_LMA = BIAS_SIGNAL(close)
# 自定义周期
X, S_SMA, X_LMA = BIAS_SIGNAL(close, P=10, M=30)
```
参数说明:
| 参数 | 默认值 | 含义 |
|------|--------|------|
| P | 10 | 短期信号线平滑周期 |
| M | 30 | 乖离率计算周期 + 长期信号线平滑周期 |
CLI 使用:
```bash
easy-tdx indicator BIAS_SIGNAL -m SH -c 601088 --count 120 --table
```
## 核心逻辑
### 三线含义
| 线 | 公式 | 含义 |
|----|------|------|
| X | `(C - MA(C,M)) / MA(C,M) × 100` | M日乖离率原始值,衡量当前价格偏离30日均线的百分比 |
| S_SMA | `MA(X, P)` | X 的 P 日均线,过滤短期噪音,作为短期趋势参考 |
| X_LMA | `MA(X, M)` | X 的 M 日均线,捕捉乖离率本身的中期趋势方向 |
### 与标准 BIAS 的关系
标准 BIAS 指标(MyTT 已有)直接返回 6/12/24 日乖离率原始值。`BIAS_SIGNAL` 的不同之处在于:
1. **聚焦单一周期**M=30),而非多周期并列
2. **叠加信号线**S_SMA 和 X_LMA 构成双重平滑,过滤假信号
3. **自带趋势判断**,通过 X 与 S_SMA 的位置关系 + X_LMA 的方向来判断多空
本质上这是一个 **乖离率的二阶分析系统**:先算乖离率,再对乖离率做趋势分析。
### 零轴意义
- **X > 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 线形态和基本面综合判断