5.3 KiB
Commodity Channel Index (CCI) Professional Suite
1. Summary (Introduction)
The Commodity Channel Index (CCI), developed by Donald Lambert, is a versatile momentum oscillator that measures the current price level relative to an average price level. It is widely used to identify overbought/oversold conditions and cyclical turns.
Our professional suite provides a complete, unified family of indicators based on the CCI, all built upon our robust, modular framework:
CCI_Pro.mq5: The main indicator. It plots the CCI line, a configurable moving average signal line, and optional Bollinger Bands calculated on the CCI itself.CCI_Oscillator_Pro.mq5: Displays the difference between the CCI and its signal line as a histogram, providing a clear visual of momentum acceleration/deceleration.CCI_PercentB_Pro.mq5: A %B oscillator that shows the CCI's position relative to its Bollinger Bands, scaled from 0 to 100.
All indicators in the suite can be calculated using either standard or Heikin Ashi price data.
2. Mathematical Foundations and Calculation Logic
The suite is constructed in a layered process, starting with the base CCI.
Calculation Steps (Algorithm)
- Calculate the CCI Value: The standard CCI is calculated based on the Typical Price, its SMA, and the Mean Absolute Deviation (MAD).
\text{CCI}_i = \frac{\text{Typical Price}_i - \text{SMA}_i}{0.015 \times \text{MAD}_i} - Calculate the Signal Line: A moving average of the CCI line is calculated.
- Calculate the Bollinger Bands: Standard Bollinger Bands are calculated on the CCI line, centered around the Signal Line.
\text{StdDev}_t = \text{StandardDeviation}(\text{CCI}, \text{Bands Period})_t\text{Upper Band}_t = \text{Signal Line}_t + (\text{Bands Deviation} \times \text{StdDev}_t)\text{Lower Band}_t = \text{Signal Line}_t - (\text{Bands Deviation} \times \text{StdDev}_t)
- Calculate the Oscillators:
- CCI Oscillator:
\text{Oscillator}_i = \text{CCI}_i - \text{Signal Line}_i - Percent B (%B):
\text{\%B}_i = 100 \times \frac{\text{CCI}_i - \text{Lower Band}_i}{\text{Upper Band}_i - \text{Lower Band}_i}
- CCI Oscillator:
3. MQL5 Implementation Details
Our MQL5 implementation follows a modern, component-based, object-oriented design to ensure stability and maintainability.
-
Unified Calculation Engine (
CCI_Calculator.mqh): The core logic is encapsulated in a robust engine.- Composition: The calculator internally uses our universal
MovingAverage_Engine.mqhto handle the smoothing of the Signal Line. This allows for advanced smoothing types (like DEMA or TEMA) beyond the standard SMA. - Reusability: The
CCI_Oscillator_ProandCCI_PercentB_Procalculators use composition to include the mainCCCI_Calculator, ensuring that all indicators in the suite share the exact same mathematical foundation.
- Composition: The calculator internally uses our universal
-
Optimized Incremental Calculation (O(1)): Unlike basic implementations that recalculate the entire history on every tick, this indicator employs an intelligent incremental algorithm.
- State Tracking: It utilizes
prev_calculatedto process only new bars. - Persistent Buffers: Internal buffers (SMA, MAD) persist their state between ticks.
- Robust Offset Handling: The engine correctly handles the initialization periods of the chained calculations.
- State Tracking: It utilizes
-
Object-Oriented Design:
- An elegant inheritance model (
CCCI_CalculatorandCCCI_Calculator_HA) allows all indicators in the family to dynamically choose the correct calculation engine at runtime based on user input.
- An elegant inheritance model (
4. Parameters
- CCI Period (
InpCCIPeriod): The lookback period for the base CCI calculation. - Applied Price (
InpSourcePrice): The source price for the base CCI. (Standard or Heikin Ashi). - Overlay Settings:
- Display Mode (
InpDisplayMode): (Only forCCI_Pro) Toggles betweenCCI_Only,CCI_and_MA, andCCI_and_Bands. - MA Period (
InpMAPeriod): The period for the signal line, which also serves as the center for the Bollinger Bands. - MA Method (
InpMAMethod): The type of moving average for the signal line. Supports: SMA, EMA, SMMA, LWMA, TMA, DEMA, TEMA. - Bands Period (
InpBandsPeriod): The lookback period for the standard deviation calculation of the Bollinger Bands. - Bands Deviation (
InpBandsDev): The standard deviation multiplier for the Bollinger Bands.
- Display Mode (
5. Usage and Interpretation
CCI_Pro:- Overbought/Oversold: Readings above +100 and below -100.
- Crossovers: CCI line crossing its signal line.
- Bollinger Bands: The bands show the volatility of the CCI itself. A "squeeze" on the CCI bands can foreshadow a significant breakout in price momentum.
CCI_Oscillator_Pro:- Visualizes the momentum of the CCI relative to its signal line. A zero-line cross confirms a signal line crossover on the
CCI_Pro. Growing bars indicate accelerating momentum, while shrinking bars indicate decelerating momentum.
- Visualizes the momentum of the CCI relative to its signal line. A zero-line cross confirms a signal line crossover on the
CCI_PercentB_Pro:- Overbought/Oversold: Provides a normalized (0-100) view of overbought/oversold conditions. Readings above 80-100 or below 0-20 are significant.
- "Headroom": Shows how much "room" the CCI has to move before it becomes extreme relative to its own recent volatility.