Woodies CCI
Woodies CCI
伍迪CCI指标(Woodies CCI)
一、指标简介
伍迪CCI(Woodies Commodity Channel Index)是对经典CCI(商品通道指数)的改良版本。
它的核心思想是通过两条CCI曲线(快CCI与慢CCI)和颜色变化的直方图,帮助投资者更清晰地识别市场的多空转折点与趋势强弱。
在A股市场中,伍迪CCI常被用来:
判断股价是否处于超买或超卖状态;
辨别趋势的延续或反转信号;
辅助短线交易捕捉阶段性拐点。
二、指标原理与组成
伍迪CCI由以下三部分构成:
慢速CCI(周期一般为14):
表示市场的中期趋势,是主线指标。
快速CCI(周期一般为6):
变化较敏感,用于提前捕捉慢速CCI的转折信号。
彩色直方图(Histogram):
用颜色展示慢速CCI的变化节奏,让趋势视觉化:
红色:慢CCI在零线上方 → 市场偏强;
绿色:慢CCI在零线下方 → 市场偏弱;
灰色:慢CCI刚刚穿越零线 → 趋势切换期;
黄色:趋势处于观察阶段,等待进一步确认。
这种颜色变化能让投资者直观看出多空力量的变化,尤其在震荡市中有助于避免情绪化交易。
三、计算方法
伍迪CCI的计算与传统CCI基本一致,只是在参数和显示方式上有所改进。
计算公式如下:
$$
CCI = \frac{(价格 - N周期平均价格)}{0.015 \times 平均绝对偏差}
$$
其中:
价格 = (最高价 + 最低价 + 收盘价)/ 3
N周期平均价格 = 最近N根K线的平均价格
0.015 为标准化系数,使数值大致落在±100区间内
在伍迪CCI中:
慢速CCI(周期14)为主要参考;
快速CCI(周期6)用于识别短期动能变化。
四、信号解读与实战应用
零线作为多空分界线
CCI > 0:市场偏强,属于多头区域;
CCI < 0:市场偏弱,属于空头区域。
超买与超卖信号
CCI > +100 → 市场进入超买区,注意短线回调风险;
CCI < -100 → 市场进入超卖区,短线或有反弹机会。
交叉信号
快CCI上穿慢CCI → 可能是短期买入信号;
快CCI下穿慢CCI → 可能是短期卖出信号。
颜色切换逻辑(重点)
当慢CCI刚穿越零线 → 直方图灰色(趋势切换中);
若5根K线内保持方向 → 直方图变黄(趋势确认中);
之后若持续上方运行 → 变绿(多头);
若持续下方运行 → 变红(空头)。
在A股实盘中,投资者常将伍迪CCI与均线系统或成交量指标结合使用,以过滤假信号。
五、参数设置建议
伍迪CCI通常只有两个参数:
CCI周期(如14):决定慢速CCI的平滑程度;
TCCI周期(如6):决定快速CCI的敏感度。
短线交易者可尝试更短周期(如10和5),中线持股者可采用更长周期(如20和10)。
六、使用注意事项
伍迪CCI是一种震荡型指标,在趋势行情中表现较好,在极端单边行情中可能出现滞后。
当价格长期维持在零线上方或下方时,代表趋势强劲,应顺势操作。
不建议单独使用,应结合成交量、均线系统或K线形态共同判断。
七、总结
伍迪CCI是对传统CCI的视觉与结构优化,它通过:
双CCI交互;
彩色直方图变化;
清晰的零线判别逻辑,
帮助投资者更直观地把握市场节奏。
在A股实战中,伍迪CCI可作为趋势确认与转折识别的辅助工具,特别适合短线或波段交易者,用于把握多空切换的关键时点。
脚本
1)脚本整体概览
这是一个很常见的 Woodies CCI 风格实现:用 两条 CCI(快速 CCI 和 慢速 CCI)配合一个彩色直方图来显示慢速 CCI 的方向性与强弱,用以捕捉多空转折与动能延续。
2)逐行解释
indicator(title="Woodies CCI", timeframe="", timeframe_gaps=true)
indicator(...):定义指标元信息。
timeframe="":表示跟随图表时间周期(不强制某个周期)。
timeframe_gaps=true:在多 timeframe 环境下允许时间间隙显示(一般默认即可)。
cciTurboLength = input.int(title="CCI Turbo Length", defval=6, minval=3, maxval=14)
cci14Length = input.int(title="CCI 14 Length", defval=14, minval=7, maxval=20)
两个参数输入,分别是快速(Turbo)CCI 周期与慢速 CCI 周期。给了合理的默认和范围,便于短线/中线切换。
source = close
cciTurbo = ta.cci(source, cciTurboLength)
cci14 = ta.cci(source, cci14Length)
source = close:CCI 的数据源是收盘价(也可以用典型价 (hlc3))。
ta.cci(source, length):内置的 CCI 计算函数,返回当前及历史柱的 CCI 值。
last5IsDown = cci14[5] < 0 and cci14[4] < 0 and cci14[3] < 0 and cci14[2] < 0 and cci14[1] < 0
last5IsUp = cci14[5] > 0 and cci14[4] > 0 and cci14[3] > 0 and cci14[2] > 0 and cci14[1] > 0
在检查慢速 CCI 的过去 1..5 根柱(注意索引:cci14[1] 是上一根柱,cci14[5] 是向前5根柱)。这是用来判断过去5根柱是否都在零线同侧,从而决定直方图颜色。
注意:这段逻辑不包含当前柱 cci14(索引 0),仅基于历史 1~5 根柱的状态。这是合乎 Woodies 视觉判断的常见做法,但使用时要明确含义。
histogramColor = last5IsUp ? #009688 : last5IsDown ? #F44336 : cci14 < 0 ? #009688 : #F44336
这里是一个三元嵌套表达式用于决定直方图颜色。此处有逻辑错误/反转:
当 cci14 < 0(慢CCI在零线下),通常应显示“空头色”(例如红色),但原代码在该分支返回了绿色 (#009688)。这会导致颜色和含义互换,造成误导。
我会在修正版中把颜色判断理顺成符合直觉的规则(零线下红,零线上绿,刚过零/观察期为灰/黄)。
plot(cci14, title="CCI Turbo Histogram", color=histogramColor, style=plot.style_histogram)
plot(cciTurbo, title="CCI Turbo", color=#009688 , style=plot.style_line)
plot(cci14, title="CCI 14", color= #F44336, style=plot.style_line)
这里有两个重复问题要注意:
plot(cci14, title="CCI Turbo Histogram", ...):你用 cci14(慢CCI)画成直方图,但标题写成 "CCI Turbo Histogram"(容易引起歧义)。通常直方图是慢速 CCI 的柱状显示,所以标题应更明确(比如 "CCI14 Histogram")。
你同时 plot(cci14) 两次:一次作为直方图,一次作为红色折线。重复绘制同一数据没必要(可以只保留一种绘制方式,或分别绘制“柱状 + 细线”但要避免标题冲突)。
hline(0, title="Zero Line", color=#787B86, linestyle=hline.style_solid)
hline(100, title="Hundred Line", color=#787B86, linestyle=hline.style_dotted)
hline(-100, title="Minus Line", color=#787B86, linestyle=hline.style_dotted)
标准的 CCI 参考线:零轴、±100(超买/超卖)。这部分没问题,颜色和样式可根据视觉偏好调整。
3)实战解读
颜色直观判断:绿色 → 多头区域,红色 → 空头区域;灰/黄 → 刚穿越/等待确认。颜色含义在实盘非常重要,必须保证与数值逻辑一致(前面代码有误需修正)。
交叉判定:
快CCI 上穿 慢CCI 且慢CCI > 0:优先的买入信号(趋势确认后入场);
快CCI 下穿 慢CCI 且慢CCI < 0:优先的卖出/离场信号。
超买/超卖:CCI > +100 提防短线回调;CCI < -100 可关注反弹,但要结合成交量与价量配合。
4)常见问题与改进建议
颜色逻辑必须与数值一致(你的原代码反转了零线下的颜色)。
避免重复绘制同一数据(你对 cci14 同时画柱状和线并用不同标题,会令人迷惑)。
索引检查:cci14[5] 要保证图上有至少 5 根历史柱,否则会产生 na(在回测/回溯时要注意起始部分)。可用 bar_index 或 na 检查保护。
避免“重绘”问题:本脚本只用历史和当前 CCI 值,不涉及未来数据,因此不会重绘。但在做信号(例如用 security() 请求其他 timeframe)时要小心 lookahead 参数。
颜色命名/配色:行业常规是:绿色 → 看多,红色 → 看空,灰/黄色 → 中性/确认期。确保所有分支映射正确。
5)改进后的完整脚本
下面是我把颜色、标题、重复绘制、历史索引防护都修正后的脚本。并附带两个简单的告警条件(买入/卖出)作为参考:
//@version=5
indicator(title="Woodies CCI (修正版)", shorttitle="Woodies CCI", timeframe="", timeframe_gaps=true)
// 参数
cciTurboLength = input.int(title="CCI Turbo Length", defval=6, minval=3, maxval=14)
cci14Length = input.int(title="CCI 14 Length", defval=14, minval=7, maxval=20)
source = close
// 计算 CCI(使用内置函数)
cciTurbo = ta.cci(source, cciTurboLength)
cci14 = ta.cci(source, cci14Length)
// 确保有足够历史数据来判断过去5根柱(避免 na)
has5bars = bar_index >= 5
last5IsDown = has5bars and cci14[5] < 0 and cci14[4] < 0 and cci14[3] < 0 and cci14[2] < 0 and cci14[1] < 0
last5IsUp = has5bars and cci14[5] > 0 and cci14[4] > 0 and cci14[3] > 0 and cci14[2] > 0 and cci14[1] > 0
// 直方图颜色逻辑(修正:零线下为红,零线上为绿)
colorBull = color.new(color.green, 0) // 多头色
colorBear = color.new(color.red, 0) // 空头色
colorNeutral = color.new(color.gray, 0) // 刚穿越
colorWatch = color.new(color.yellow, 0) // 观察期
histColor = last5IsUp ? colorBull :
last5IsDown ? colorBear :
(cci14 > 0 ? colorBull : colorBear) // 若非前两种情况,仅用 cci14 的正负决定颜色
// 直方图与线条绘制(不重复)
plot(cci14, title="CCI 14 (Histogram)", style=plot.style_histogram, color=histColor, linewidth=2)
plot(cciTurbo, title="CCI Turbo (Fast CCI)", color=colorBull, style=plot.style_line, linewidth=1)
plot(cci14, title="CCI 14 (Line)", color=colorBear, style=plot.style_line, linewidth=1, display=display.none) // 可选:隐藏线型,只保留柱状
// 参考线
hline(0, title="Zero Line", color=color.gray, linestyle=hline.style_solid)
hline(100, title="Hundred Line", color=color.gray, linestyle=hline.style_dotted)
hline(-100, title="-100 Line", color=color.gray, linestyle=hline.style_dotted)
// 简单信号示例(仅供学习演示,非交易建议)
// 快线上穿慢线 & 慢线在零上 -> 买入信号
buySignal = ta.crossover(cciTurbo, cci14) and cci14 > 0
// 快线下穿慢线 & 慢线在零下 -> 卖出信号
sellSignal = ta.crossunder(cciTurbo, cci14) and cci14 < 0
plotshape(buySignal, title="Buy Signal", location=location.belowbar, style=shape.arrowup, size=size.tiny, color=color.green, text="Buy")
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, style=shape.arrowdown, size=size.tiny, color=color.red, text="Sell")
// 示例告警(在策略/指标中创建告警时可选)
alertcondition(buySignal, title="Woodies CCI Buy", message="Woodies CCI: FastCCI 上穿 SlowCCI 且 SlowCCI > 0 —— 可考虑买入/建仓(结合其它条件)")
alertcondition(sellSignal, title="Woodies CCI Sell", message="Woodies CCI: FastCCI 下穿 SlowCCI 且 SlowCCI < 0 —— 可考虑卖出/离场(结合其它条件)")
说明:
我把直方图的标题与数据对齐(CCI 14 (Histogram) 对应 cci14),并修正颜色分支为更直观的规则。
增加了 has5bars 保护防止脚本在起始段出现 na。
plot(..., display=display.none) 用法:如果你只想看柱状图而不画重复折线,可以隐藏线型;我用作示例。
提供了 alertcondition,方便你在聚观点(或 TradingView)上创建告警通知。
6)参数调优建议
日线短波段:可以保持 cciTurbo=6,cci14=14(默认);适合波段与短线把握日内或日周频率拐点。
更短周期(更灵敏):cciTurbo=4、cci14=10 —— 更早捕捉动量,但假信号增多。
更长周期(更稳):cciTurbo=8、cci14=20 —— 更平滑,适合中线趋势判断。
在A股偏震荡市场,可结合成交量放大或 均线趋势(例如5/20均线) 过滤信号,避免追涨杀跌。
7)实盘使用注意
任何基于指标的入场都应配合仓位控制和出场规则(止损/止盈)。CCI 所给信号在极端单边行情下可能滞后或持续处于超买/超卖区间。
指标是辅助工具,不是“必胜法”。建议用历史回测与小仓位实盘验证参数设定与报警策略再放大投入。