Camovia Tray™

Commodity Channel Index

CCI measures how far price has strayed from its statistical norm: beyond ±100 is "abnormal" — it works as both a breakout and an overbought/oversold tool, two faces of one indicator.

What it is

The Commodity Channel Index, published by Donald Lambert in 1980, computes how far the Typical Price (H+L+C ÷3) deviates from its moving average, normalized by a 0.015 constant so that roughly 70–80% of readings fall between ±100. Beyond ±100, price is statistically "abnormal" — Lambert intended this as an early-trend signal, but the market developed a second use as an overbought/oversold reversion tool. One indicator, two faces.

Origin

CCI was created by analyst-mathematician Donald Lambert and published in 1980 in Commodities magazine (later Stocks & Commodities). It was born in commodity futures — hence the name. Lambert's key contribution is the 0.015 constant: it makes the ±100 levels mean the same thing across instruments regardless of price scale, enabling cross-market comparison.

Download Camovia Tray free — check quotes, manage positions, and hide in one click from your system tray.

Download Free

The formula

Three steps:

Typical Price TP = (High + Low + Close) ÷ 3
CCI = (TP − SMA(TP, N)) ÷ (0.015 × Mean Deviation)
N defaults to 14 (MT5 default 14)

Mean Deviation is the average of |TP − SMA| across the window — less sensitive to outliers than standard deviation. The 0.015 constant is Lambert's normalization: without it, instruments of different price scales would have incomparable CCI values; with it, ±100 is universal.

Worked example

A small numeric example of "straying from the norm":

  1. An instrument's 14-day TP averages 100 with a mean deviation of 2 — "normal" wiggle is about ±2.
  2. Today TP = 105: a deviation of +5, 2.5× the normal size.
  3. CCI = 5 ÷ (0.015 × 2) = 166.7 — far beyond +100: statistically abnormal.

"Abnormal" has two readings: a new trend starting (breakout use — Lambert's intent) or an extreme about to revert (overbought use — the market's later development). Which reading is right depends on the regime — structurally identical to the two faces of a Bollinger touch.

How to read it

CCI ranges and the two usage systems:

Range Common interpretation
Above +100 Abnormally strong: breakout use = new uptrend; reversion use = overbought
0 – +100 Normal, bullish tilt
Near 0 The equilibrium midline
0 – −100 Normal, bearish tilt
Below −100 Abnormally weak: breakout use = new downtrend; reversion use = oversold

The fork depends on regime: Lambert's original logic (follow the break) works best at trend births; the reversion logic (fade ±100) wins in clear ranges. Pairing with ADX for regime detection is the mainstream approach.

Common signals & usage

Breakout beyond ±100 (Lambert's original)

CCI crossing above +100 marks a new uptrend (below −100, a downtrend) — the original "chase the abnormal" use, with stops for the pullback risk.

Reversion at ±100

In a range, CCI spiking above +100 and crossing back down = the reversion sell; symmetric at −100 — statistically driven, banned in trends.

Divergence

Price new high without a CCI new high — fading momentum; CCI divergences often lead RSI's by half a step (more sensitive to extremes).

Zero-line filter

CCI crossing 0 is a rough mid-term momentum switch — noisy alone, use only as a secondary filter.

Limitations & common mistakes

  • Mixing the two faces is the cardinal error: the breakout use chases strength, the reversion use fades it — the same signal means opposite things. Pick the regime first.
  • Never touch the 0.015 constant: changing it redefines the whole scale — tune sensitivity via the period N, not the constant.
  • Fat tails and flattening coexist: CCI reacts to extremes faster than RSI, yet strong trends can pin it beyond ±100 for long stretches — same flattening risk as RSI.
  • Mean deviation is blunter than std-dev: CCI reacts more mildly than Bollinger to one huge bar — watching both is complementary.
  • Lower-timeframe noise: 15-minute CCI ping-pongs across ±100 — reversion trades there need strict regime filtering.

CCI in MT5

CCI is a built-in MT5 oscillator (single line). The MQL5 function for programmatic use is iCCI:

int iCCI(string symbol, ENUM_TIMEFRAMES period, int ma_period, ENUM_APPLIED_PRICE applied_price);
MQL5 function iCCI()
Default period ma_period=14
Default applied price PRICE_TYPICAL (note: not CLOSE)
Variant iCCIX() (extended typical-price version)
Display window Sub-window (guides at ±100)

iCCI defaults to PRICE_TYPICAL — one of the few built-ins not using the close, faithful to Lambert's paper (TP carries intraday high/low information). iCCIX is an extended variant on the same algorithm. Changing the applied price changes the character of the readings — check conventions when comparing analyses.

Behavior across timeframes

15-minute

The reversion use's high-frequency home — but false signals abound; filter with a larger timeframe

1-hour / 4-hour

The main field for breakout use (±100 crosses with an ADX filter)

Daily

Lambert's native habitat: the 14-period ±100 system is most classic here

Weekly

Weekly CCI beyond ±200 often marks the start of multi-month moves

Indicator combinations

Common pairings for CCI:

  • With ADX: ADX > 25 → follow the break (CCI crosses with the trend); ADX < 20 → fade the extremes — the regime referee plus a double-edged blade. ADX
  • With RSI: both are oscillators with different engines (mean deviation vs gain/loss ratio) — joint extremes make the strongest divergence signals. RSI
  • With MA: MA200 sets the macro direction; CCI only times entries at extremes in that direction — trend filter plus abnormality timing. MA

FAQ

Q What is the 0.015 constant in CCI?

Lambert's normalization constant: multiplying the mean deviation by 0.015 scales all instruments to a common frame where ~70–80% of readings fall within ±100. It is part of the formula, not a tunable parameter — adjust the period N for sensitivity instead.

Q Should I buy or sell when CCI crosses +100?

Both answers are correct in the right regime: Lambert's original logic reads +100 as a new uptrend (buy); the range-regime logic reads it as overbought (sell). Use ADX or price structure to pick the regime, then the usage.

Q How is CCI different from RSI?

Same oscillator family, different engines: CCI is based on deviation of the typical price from its MA (normalized by mean deviation) — faster at extremes, unbounded; RSI is based on gain/loss ratios — bounded 0–100 and smoother. CCI flags divergences earlier; RSI is steadier.

Q Why does MT5's CCI default to Typical price?

Lambert's original paper uses TP=(H+L+C)/3 — it carries intraday high/low information that fits the statistical "deviation from norm" concept better than closes. MT5 follows the original. Third-party implementations using CLOSE will read differently.

Q How do I add CCI in MT5?

Menu: Insert → Indicators → Oscillators → Commodity Channel Index, or drag it from the Navigator. Defaults: period 14, applied price Typical; add custom levels like ±200 in the levels tab for extreme readings.

Turn MT5 / MT4 into a Tray Tool

Check quotes, manage positions, and hide in one click.

Download Camovia Tray

This page is educational content about a technical indicator. It is not investment advice. Indicator signals can and do fail — always combine them with your own risk management.