OPEN-SOURCE SCRIPT
CCI with Subjective Normalization

CCI (Commodity Channel Index) with Subjective Normalization
This indicator computes the classic CCI over a user-defined length, then applies a subjective mean and scale to transform the raw CCI into a pseudo Z‑score range. By adjusting the “Subjective Mean” and “Subjective Scale” inputs, you can shift and rescale the oscillator to highlight significant tops and bottoms more clearly in historical data.
1. CCI Calculation:
- Uses the standard formula \(\text{CCI} = \frac{\text{price} - \text{SMA(price, length)}}{0.015 \times \text{mean deviation}}\) over a user-specified length (default 500 bars).
2. Subjective Normalization:
- After CCI is calculated, it is divided by “Subjective Scale” and offset by “Subjective Mean.”
- This step effectively re-centers and re-scales the oscillator, helping you align major lows or highs at values like –2 or +2 (or any desired range).
3. Usage Tips:
- CCI Length controls how far back the script measures average price and deviation. Larger values emphasize multi-year cycles.
- Subjective Mean and Scale let you align the oscillator’s historical lows and highs with numeric levels you prefer (e.g., near ±2).
- Adjust these parameters to fit your particular market analysis or to match known cycle tops/bottoms.
4. Plot & Zero Line:
- The indicator plots the normalized CCI in yellow, along with a zero line for quick reference.
- Positive values suggest price is above its long-term mean, while negative values suggest it’s below.
This approach offers a straightforward momentum oscillator (CCI) combined with a customizable normalization, making it easier to spot historically significant overbought/oversold conditions without writing complex code yourself.
This indicator computes the classic CCI over a user-defined length, then applies a subjective mean and scale to transform the raw CCI into a pseudo Z‑score range. By adjusting the “Subjective Mean” and “Subjective Scale” inputs, you can shift and rescale the oscillator to highlight significant tops and bottoms more clearly in historical data.
1. CCI Calculation:
- Uses the standard formula \(\text{CCI} = \frac{\text{price} - \text{SMA(price, length)}}{0.015 \times \text{mean deviation}}\) over a user-specified length (default 500 bars).
2. Subjective Normalization:
- After CCI is calculated, it is divided by “Subjective Scale” and offset by “Subjective Mean.”
- This step effectively re-centers and re-scales the oscillator, helping you align major lows or highs at values like –2 or +2 (or any desired range).
3. Usage Tips:
- CCI Length controls how far back the script measures average price and deviation. Larger values emphasize multi-year cycles.
- Subjective Mean and Scale let you align the oscillator’s historical lows and highs with numeric levels you prefer (e.g., near ±2).
- Adjust these parameters to fit your particular market analysis or to match known cycle tops/bottoms.
4. Plot & Zero Line:
- The indicator plots the normalized CCI in yellow, along with a zero line for quick reference.
- Positive values suggest price is above its long-term mean, while negative values suggest it’s below.
This approach offers a straightforward momentum oscillator (CCI) combined with a customizable normalization, making it easier to spot historically significant overbought/oversold conditions without writing complex code yourself.
Script de código abierto
Siguiendo fielmente el espíritu de TradingView, el creador de este script lo ha publicado en código abierto, permitiendo que otros traders puedan revisar y verificar su funcionalidad. ¡Enhorabuena al autor! Puede utilizarlo de forma gratuita, pero tenga en cuenta que la publicación de este código está sujeta a nuestras Normas internas.
Exención de responsabilidad
La información y las publicaciones que ofrecemos, no implican ni constituyen un asesoramiento financiero, ni de inversión, trading o cualquier otro tipo de consejo o recomendación emitida o respaldada por TradingView. Puede obtener información adicional en las Condiciones de uso.
Script de código abierto
Siguiendo fielmente el espíritu de TradingView, el creador de este script lo ha publicado en código abierto, permitiendo que otros traders puedan revisar y verificar su funcionalidad. ¡Enhorabuena al autor! Puede utilizarlo de forma gratuita, pero tenga en cuenta que la publicación de este código está sujeta a nuestras Normas internas.
Exención de responsabilidad
La información y las publicaciones que ofrecemos, no implican ni constituyen un asesoramiento financiero, ni de inversión, trading o cualquier otro tipo de consejo o recomendación emitida o respaldada por TradingView. Puede obtener información adicional en las Condiciones de uso.