## 中枢（ZS / Zhong Shu）
----

中枢是缠论的核心概念，由至少3笔构成的**价格重叠区域**。中枢代表多空力量的均衡区域，价格突破中枢意味着趋势形成。

### 构成条件

至少3笔（1个完整的上下或下上运动），且存在共同的价格重叠区间。

```
     ●                    ●
    / \      ●           / \
   /   \    / \         /   \
  /     \  /   \  ●    /     \
 /  ZG---\/---------\--/---    \
●   -----/\---------/\-----●   ●
    ZD  /  \       /  \
       ●    \     /
             \   /
              \ /
               ●
```

### 关键属性

| 属性 | 公式 | 说明 |
| --- | --- | --- |
| `zg`（上沿） | `min(bis[:3]各笔的high)` | 中枢上边界 |
| `zd`（下沿） | `max(bis[:3]各笔的low)` | 中枢下边界 |
| `zz`（中轴） | `zd + (zg - zd) / 2` | 中枢中心价格 |
| `gg`（最高） | 所有笔的最高价 | 中枢区域最高 |
| `dd`（最低） | 所有笔的最低价 | 中枢区域最低 |
| `is_valid` | `zg > zd` | 中枢是否有效 |

### 中枢与趋势

- **中枢震荡**：价格在中枢内反复运动，无趋势
- **中枢上移**：新中枢的 zd > 前中枢的 zg → 上升趋势
- **中枢下移**：新中枢的 zg < 前中枢的 zd → 下降趋势
- **中枢扩展**：新笔突破中枢后又回到中枢内 → 震荡延续

### czsc 数据结构

```python
@dataclass
class ZS:
    bis: List[BI]    # 构成中枢的笔列表

    @property
    def zg(self): ...   # 上沿
    @property
    def zd(self): ...   # 下沿
    @property
    def zz(self): ...   # 中轴
    @property
    def gg(self): ...   # 最高
    @property
    def dd(self): ...   # 最低
    @property
    def is_valid(self): ...  # 是否有效
```

### 使用示例

```python
from czsc import CZSC, ZS

c = CZSC(bars)
# 用最近的笔检测中枢
for i in range(len(c.bi_list) - 3):
    zs = ZS(bis=c.bi_list[i:i+3])
    if zs.is_valid:
        print(f"中枢: ZG={zs.zg:.0f} ZD={zs.zd:.0f} ZZ={zs.zz:.0f}")
```
