The Weighted WCCI is a sophisticated technical analysis tool designed to help traders visualize market momentum and identify potential trend reversals or strengths. It works by analyzing price fluctuations and applying specific mathematical "weighting" to smooth out noise while highlighting significant movements.
Core Functionality
1. Dual Momentum Tracking The indicator monitors two different types of Price Channel Indexes (CCI). One is a standard CCI, which tracks immediate momentum, while the other is a "Turbo" version that looks at slightly different timeframes. By comparing these two, the tool helps identify whether the current market move is part of a sustained trend or just a temporary spike.
2. Dynamic Weighting Mechanism What sets this tool apart from standard indicators is its weighting logic. It calculates a dynamic multiplier based on market volatility (using the Average True Range).
- If volatility is high, the indicator adjusts the weight of the momentum signals.
- If volatility is low, it stabilizes the data. This ensures that the lines on your chart react appropriately to the current "temperature" of the market, preventing false signals during periods of extreme price swings or stagnant trading.
3. Overbought and Oversold Boundaries The script establishes specific safety boundaries (levels) on the chart. These act as visual "ceilings" and "floors." When the momentum lines reach these extremes, it alerts the trader that the market may be overextended, potentially signaling that a correction or trend reversal is imminent.
4. Trend Counting and Tracking Beyond just drawing lines, the script actively monitors the direction of the market. It tracks whether the current momentum is moving upward or downward and maintains a live count of how many consecutive bars the market has maintained that specific direction. This provides a clear visual cue regarding the strength and duration of a prevailing trend.
Visual Interpretation
The indicator populates your trading platform with several distinct visual elements:
- Momentum Lines: Smooth lines representing the weighted CCI values.
- Histograms: Vertical bars that provide a more aggressive look at current momentum levels.
- Trigger Levels: Dashed lines that serve as specific entry or exit reference points.
- On-Screen Status: A live text comment on the chart that informs you exactly which direction the market is trending and for how many bars that trend has persisted.
Summary of Benefits
By combining multi-timeframe momentum, volatility-based weighting, and an automated trend counter, this tool helps traders filter out "market noise." It allows you to see not just where the price is going, but how much strength is behind the move and whether that move is reaching a point of exhaustion.
//+------------------------------------------------------------------+
//| Weighted WCCI.mq4 |
//| Copyright © 2005, Luis Guilherme Damiani |
//| http://www.damianifx.com.br |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Luis Guilherme Damiani"
#property link "http://www.damianifx.com.br"
//----
#property indicator_separate_window
#property indicator_buffers 8
#property indicator_color1 Red
#property indicator_color2 DodgerBlue
#property indicator_color3 CadetBlue
#property indicator_color4 Red
#property indicator_color5 Red
#property indicator_color6 RoyalBlue
#property indicator_color7 RoyalBlue
#property indicator_color8 PaleGreen
//---- input parameters
extern int TCCIp=7;
extern int CCIp=13;
extern double overbslevel=200.0;
extern double triglevel=50.0;
extern double weight=1.0;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double ExtMapBuffer7[];
double ExtMapBuffer8[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexLabel(0,"Turbo CCI");
SetIndexStyle(1,DRAW_LINE,1,3);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexLabel(2,"CCI");
SetIndexStyle(2,DRAW_HISTOGRAM);
SetIndexBuffer(2,ExtMapBuffer3);
SetIndexStyle(3,DRAW_LINE,1,3);
SetIndexLabel(3,"CCI");
SetIndexBuffer(3,ExtMapBuffer4);
SetIndexStyle(4,DRAW_LINE,1,3);
SetIndexBuffer(4,ExtMapBuffer5);
SetIndexStyle(5,DRAW_LINE,STYLE_DASH,1);
SetIndexBuffer(5,ExtMapBuffer6);
SetIndexStyle(6,DRAW_LINE,STYLE_DASH,1);
SetIndexBuffer(6,ExtMapBuffer7);
SetIndexStyle(7,DRAW_LINE,STYLE_DASH,1);
SetIndexBuffer(7,ExtMapBuffer8);
//----
SetIndexDrawBegin(0,50);
SetIndexDrawBegin(1,50);
SetIndexDrawBegin(2,50);
SetIndexDrawBegin(3,50);
SetIndexDrawBegin(4,50);
SetIndexDrawBegin(5,50);
SetIndexDrawBegin(6,50);
SetIndexDrawBegin(7,50);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int trend_counter=0;
string trend="ZERO";
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
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=-1;
int limit=Bars-counted_bars;
//if (limit>Bars-CCIp-1)limit=Bars-CCIp-1;
//Comment(Bars+" "+limit);
double Kw=0.0;
int alt=0;
//----
for(int shift=0; shift<=limit;shift++)
{
double CCI=iCCI(NULL,0,CCIp,PRICE_TYPICAL,shift);
double TCCI=iCCI(NULL,0,TCCIp,PRICE_TYPICAL,shift);
//----
if (weight==0)Kw=0;
else
{ Kw=weight*iATR(NULL,0,7,shift)/iATR(NULL,0,49,shift);
CCI=CCI*Kw;
TCCI=TCCI*Kw;
}
if(TCCI>overbslevel+50)TCCI=overbslevel+50;
if(CCI>overbslevel+50)CCI=overbslevel+50;
if(CCI<-overbslevel-50)CCI=-overbslevel-50;
if(TCCI<-overbslevel-50)TCCI=-overbslevel-50;
ExtMapBuffer1[shift]=TCCI;
ExtMapBuffer2[shift]=CCI;
ExtMapBuffer3[shift]=CCI;
ExtMapBuffer4[shift]=overbslevel;
ExtMapBuffer5[shift]=-overbslevel;
ExtMapBuffer6[shift]=triglevel;
ExtMapBuffer7[shift]=-triglevel;
ExtMapBuffer8[shift]=0;
if (shift==0)
{ if (CCI>0)
if (trend=="UP" && limit>1)trend_counter+=1; else {trend_counter=1;trend="UP";}
else if (trend=="DOWN" && Bars-counted_bars>1) trend_counter+=1; else {trend_counter=1;trend="DOWN";}
//----
Comment("CCI is trending ",trend," during last ",trend_counter," bar(s)");
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
Comments