FX_Sniper's_T3_CCI
Download scriptThis tool, known as the FX Sniper's T3 CCI, is a specialized technical analysis indicator designed to help traders identify price momentum and potential trend reversals. It works by combining two distinct types of mathematical filtering to create a smoother, more reliable visual signal than standard market indicators.
Core Logic Overview
The indicator operates through a three-step process: raw data collection, advanced smoothing, and directional visualization.
1. Foundation: The CCI Base The script begins by gathering "Commodity Channel Index" (CCI) data. In plain terms, the CCI measures how far the current market price is moving away from its average price over a specific timeframe. It tells you if the market is currently "overbought" (too high) or "oversold" (too low).
2. The T3 Smoothing Engine The primary "secret sauce" of this script is the T3 algorithm. Standard indicators often suffer from "lag" (reacting too slowly to price changes) or "noise" (giving too many false signals because the line is jumpy).
The T3 logic uses a sophisticated weighted calculation to:
- Reduce Noise: It filters out minor, insignificant price flickers that aren't part of a real trend.
- Minimize Lag: Unlike other smoothing methods that make the indicator feel "heavy" or slow, the T3 algorithm is specifically engineered to stay as close to the actual price action as possible while remaining smooth.
3. Multi-Layered Output Instead of just showing you one line, the script splits the information into three distinct visual components:
- The Main Line: This represents the primary smoothed momentum of the market.
- The Upward Component (Green): The script isolates only the positive momentum. When the value is above zero, it highlights the strength of the upward move.
- The Downward Component (Red): The script isolates only the negative momentum. When the value falls below zero, it highlights the strength of the downward move.
How to Interpret the Logic
By combining these elements, the tool allows you to see not just where the price is going, but the intensity of that movement. Because it uses the T3 filter, the transitions between "Up" and "Down" are intended to be more deliberate and stable, helping traders distinguish between a temporary price fluctuation and a sustained shift in market direction.
//+------------------------------------------------------------------+
//| FX Sniper's T3 CCI.mq4 |
//| FX Sniper |
//| |
//+------------------------------------------------------------------+
#property copyright "FX Sniper: T3-CCI :-)"
#property link "http://dunno.com :-)/"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Blue
#property indicator_color2 Green
#property indicator_color3 Red
//----
extern int CCI_Period = 14;
extern int T3_Period = 5;
extern double b = 0.618;
//----
double e1, e2, e3, e4, e5, e6;
double c1, c2, c3, c4;
double n, w1, w2, b2, b3;
double cci[];
double cciHup[];
double cciHdn[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators setting
SetIndexBuffer(0, cci);
SetIndexBuffer(1, cciHup);
SetIndexBuffer(2, cciHdn);
//----
SetIndexStyle(0, DRAW_LINE);
SetIndexStyle(1, DRAW_HISTOGRAM);
SetIndexStyle(2, DRAW_HISTOGRAM);
//----
IndicatorShortName("FXST3CCI(" + CCI_Period + ", " + T3_Period + ")");
SetIndexLabel(0, "FXST3CCI");
SetIndexLabel(1, NULL);
SetIndexLabel(2, NULL);
//---- variable reset
b2 = b*b;
b3 = b2*b;
c1 = -b3;
c2 = (3*(b2 + b3));
c3 = -3*(2*b2 + b + b3);
c4 = (1 + 3*b + b3 + 3*b2);
n = T3_Period;
//----
if(n < 1)
n = 1;
n = 1 + 0.5*(n - 1);
w1 = 2 / (n + 1);
w2 = 1 - w1;
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars = IndicatorCounted();
//---- check for possible errors
if(counted_bars < 0)
return(-1);
//---- last counted bar will be recounted
if(counted_bars > 0)
counted_bars--;
limit = Bars - counted_bars;
//---- indicator calculation
for(int i = Bars - 1; i >= 0; i--)
{
cci[i] = iCCI(NULL, 0, CCI_Period, PRICE_TYPICAL, i);
e1 = w1*cci[i] + w2*e1;
e2 = w1*e1 + w2*e2;
e3 = w1*e2 + w2*e3;
e4 = w1*e3 + w2*e4;
e5 = w1*e4 + w2*e5;
e6 = w1*e5 + w2*e6;
cci[i] = c1*e6 + c2*e5 + c3*e4 + c4*e3;
//----
if(cci[i] >= 0)
cciHup[i] = cci[i];
else
cciHup[i] = 0;
//----
if(cci[i] < 0 )
cciHdn[i] = cci[i];
else
cciHdn[i] = 0;
}
//----
return(0);
}
//+------------------------------------------------------------------+
Comments