TAMomentum
TA.CCI()
商品通道指标 (Commodity Channel Index)
衡量价格偏离统计平均值的程度,识别异常价格和趋势变化。
语法
python
TA.CCI(high, low, close, timeperiod=14)参数
| 参数名 | 类型 | 必选 | 默认值 | 说明 |
|---|---|---|---|---|
| high | any | 否 | - | 最高价数组 |
| low | any | 否 | - | 最低价数组 |
| close | any | 否 | - | 收盘价数组 |
| timeperiod | any | 否 | - | 时间周期,默认 14 |
返回值
返回 CCI 值数组,通常在 -200 到 +200 之间波动
计算方法
CCI = (TP - SMA(TP)) / (0.015 × MD)
其中:
- TP (典型价格) = (High + Low + Close) / 3
- MD (平均偏差) = 平均绝对偏差
信号解读
超买超卖
- CCI > +100: 超买区域
- CCI < -100: 超卖区域
- CCI > +200: 极度超买
- CCI < -200: 极度超卖
零轴穿越
- CCI 上穿 0: 上升趋势开始
- CCI 下穿 0: 下降趋势开始
背离
- 顶背离: 价格新高,CCI 未新高
- 底背离: 价格新低,CCI 未新低
基础示例
python
def main():
records = exchange.GetRecords()
highs = [r['High'] for r in records]
lows = [r['Low'] for r in records]
closes = [r['Close'] for r in records]
cci = TA.CCI(highs, lows, closes, 20)
Log(f"CCI: {cci[-1]:.2f}")
if cci[-1] > 100:
Log("CCI 超买:", cci[-1])
elif cci[-1] < -100:
Log("CCI 超卖:", cci[-1])
else:
Log("CCI 正常区间:", cci[-1])高级应用
1. CCI 趋势跟踪策略
python
def main():
records = exchange.GetRecords()
highs = [r['High'] for r in records]
lows = [r['Low'] for r in records]
closes = [r['Close'] for r in records]
cci = TA.CCI(highs, lows, closes, 20)
# 零轴上方
if cci[-1] > 0 and cci[-2] <= 0:
Log("CCI 上穿零轴,上升趋势确认")
# 零轴下方
elif cci[-1] < 0 and cci[-2] >= 0:
Log("CCI 下穿零轴,下降趋势确认")
# 突破 +100
if cci[-1] > 100 and cci[-2] <= 100:
Log("CCI 突破 +100,强势上涨")
# 跌破 -100
elif cci[-1] < -100 and cci[-2] >= -100:
Log("CCI 跌破 -100,强势下跌")2. CCI 背离检测
python
def detect_cci_divergence(prices, cci_values, period=10):
"""检测 CCI 背离"""
if len(prices) < period or len(cci_values) < period:
return None
# 顶背离
if (prices[-1] > max(prices[-period:-1]) and
cci_values[-1] < max(cci_values[-period:-1])):
return "顶背离"
# 底背离
if (prices[-1] < min(prices[-period:-1]) and
cci_values[-1] > min(cci_values[-period:-1])):
return "底背离"
return None
def main():
records = exchange.GetRecords()
highs = [r['High'] for r in records]
lows = [r['Low'] for r in records]
closes = [r['Close'] for r in records]
cci = TA.CCI(highs, lows, closes, 20)
divergence = detect_cci_divergence(closes, cci, 10)
if divergence == "顶背离":
Log("CCI 顶背离,价格可能回调")
elif divergence == "底背离":
Log("CCI 底背离,价格可能反弹")3. CCI 极值反转策略
python
def main():
records = exchange.GetRecords()
highs = [r['High'] for r in records]
lows = [r['Low'] for r in records]
closes = [r['Close'] for r in records]
cci = TA.CCI(highs, lows, closes, 14)
# 极度超卖后反转
if cci[-2] < -200 and cci[-1] > -200:
Log("CCI 从极度超卖区域反转,买入信号")
# 极度超买后反转
elif cci[-2] > 200 and cci[-1] < 200:
Log("CCI 从极度超买区域反转,卖出信号")参数优化建议
| 周期 | 推荐参数 | 特点 |
|---|---|---|
| 短线 | CCI(14) | 标准配置 |
| 中线 | CCI(20) | 较平滑 |
| 长线 | CCI(30) | 减少噪音 |
与其他指标配合
CCI + KDJ
python
cci = TA.CCI(highs, lows, closes, 20)
k, d = TA.STOCH(highs, lows, closes, 9, 3, 0, 3, 0)
# 双重超卖确认
if cci[-1] < -100 and k[-1] < 20:
Log("CCI + KDJ 双重超卖")CCI + BOLL
python
cci = TA.CCI(highs, lows, closes, 20)
upper, middle, lower = TA.BOLL(closes, 20, 2)
# 超卖 + 触及下轨
if cci[-1] < -100 and closes[-1] <= lower[-1]:
Log("CCI超卖 + 布林下轨,强支撑位")注意事项
⚠️ 重要提醒:
- 无固定边界: CCI 没有固定的上下限,可能超过 ±200
- 趋势跟踪: CCI 既可用于超买超卖,也可用于趋势跟踪
- 周期选择: 较长周期更适合趋势判断
- 假突破: 震荡市场中容易出现假突破
相关指标
- WILLR - 威廉指标 - 类似的超买超卖指标
- RSI - 相对强弱指标 - 另一种超买超卖指标