4.9 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, object-oriented design to ensure stability and maintainability.
-
Self-Contained Calculators: Each indicator in the suite (
CCI_Pro,CCI_Oscillator_Pro,CCI_PercentB_Pro) uses its own dedicated, self-contained calculator. Each calculator contains the full, multi-stage logic required for its specific output. This approach prioritizes stability and clarity for each individual component. -
Object-Oriented Inheritance: Within each calculator, an elegant inheritance model (
...Calculatorand...Calculator_HA) is used. The Heikin Ashi child class inherits all the complex logic from its base class and only overrides the initial data preparation step. -
Stability via Full Recalculation: All indicators employ a "brute-force" full recalculation within
OnCalculatefor maximum stability. -
Mathematically Precise Implementation: The engine adheres strictly to the mathematical definition of CCI, using a nested loop structure to calculate the Mean Absolute Deviation (MAD) precisely for each bar.
4. Parameters
- CCI Period (
InpCCIPeriod): The lookback period for the base CCI calculation. - Applied Price (
InpSourcePrice): The source price for the base CCI. This unified dropdown allows selection from all standard and Heikin Ashi price types. - 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. - 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.