EWOCCI_Indicator

Download script
EWOCCI_Indicator

This script is designed to act as a visual signaling tool for traders, identifying specific moments in the market where price momentum and trend direction align. Instead of just looking at a single price movement, it analyzes three different layers of data simultaneously to confirm whether a "Buy" (Up) or "Sell" (Down) signal is valid.

How the Logic Works

The script monitors the market by combining three distinct technical components:

1. Momentum Analysis (CCI) The tool uses a "Commodity Channel Index" (CCI) to measure how far the current price is moving away from its average. It specifically looks for "crosses." When the CCI moves from a negative value to a positive one, it suggests upward momentum is building. Conversely, moving from positive to negative suggests downward momentum.

2. Trend Strength (The EWO Component) To ensure the signals aren't just temporary spikes, the script calculates a trend variance (referred to in the logic as an Elliot Wave component). It compares two different Moving Averages:

  • A short-term average (5 periods)
  • A long-term average (35 periods) By subtracting the long-term average from the short-term one, the script determines the "gap" between current price behavior and historical averages. This helps confirm if the market is actually trending in a specific direction or just moving sideways.

3. Pivot Point Reference The script identifies a "Pivot" point based on the High, Low, and Close prices of the previous day. It marks this on your chart as a horizontal reference line (a Magenta dotted line). This provides a visual anchor to help you see where the price is relative to the previous day's balanced range.

Signal Execution

The script generates signals only when multiple conditions are met simultaneously:

  • Bullish Signal (UP): Triggered when the Momentum Index (CCI) crosses into positive territory AND the Trend Strength (EWO) is positive. When this happens, a light blue arrow appears below the price candle.
  • Bearish Signal (DOWN): Triggered when the Momentum Index (CCI) crosses into negative territory AND the Trend Strength (EWO) is negative. When this happens, a red arrow appears above the price candle.

User Experience Features

  • Visual Alerts: The script places arrows directly on your chart so you can see historical signals at a glance.
  • Real-Time Notifications: If enabled, the script will trigger an audible alert and a pop-up message on your screen the moment a new signal is confirmed on the current candle.
  • Smart Filtering: The alert system includes a "New Bar" check, which prevents the script from sending multiple repetitive alerts for the same price movement; it only triggers once per candle.
Price Data Components
Series array that contains close prices for each barSeries array that contains the highest prices of each barSeries array that contains the lowest prices of each bar
Indicators Used
Commodity channel indexMoving average indicator
Miscellaneous
Implements a curve of type %1
15 Views
0 Downloads
0 Favorites
EWOCCI_Indicator
//+---------------------------------------------------------+
//| T3 Trix crossing  signals.mq4 
//|
//| Perky..
//+------------------------------------------------------------------+
#property  copyright "Author - Perky Aint no Porky"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 LightBlue
#property indicator_width1 3
#property indicator_color2 Red
#property indicator_width2 3

//---- input parameters
extern int smoothing=13;
extern int  timeframe=0;
extern int       A_t3_period=18; 
extern int       num_bars=350; 

extern int CountBars=350;
extern bool UseAlert=True;
extern bool SignalCandle=1;

//---- buffers
double val1[];
double val2[];
double CCI,CCIb4;
double EWO;
 double MA5,MA35;
int Timer;
string UD="";
double PrevPrice;
double PrevHigh  ;
double PrevLow  ;
double P  ;
double Price;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,108);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,108);
   SetIndexBuffer(0,val1);
   SetIndexBuffer(1,val2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2                                            |
//+------------------------------------------------------------------+
int start()
  {   
  // if (CountBars>=500) CountBars=500;
  // SetIndexDrawBegin(0,500-CountBars);
  // SetIndexDrawBegin(1,500-CountBars);
  int i,shift,counted_bars=IndicatorCounted();


   //---- check for possible errors
  // if(counted_bars<0) return(-1);

   //---- initial zero
  // if(counted_bars<1)
   //  {
    //  for(i=1;i<=CountBars;i++) val1[CountBars-i]=0.0;
    //  for(i=1;i<=CountBars;i++) val2[CountBars-i]=0.0;
    // } 

for ( shift = CountBars; shift>=0; shift--) 
{ 
      PrevPrice = iClose(NULL,PERIOD_D1,SignalCandle+1);
      PrevHigh  = iHigh(NULL,PERIOD_D1,SignalCandle+1);
      PrevLow   = iLow(NULL,PERIOD_D1,SignalCandle+1);
      P = (PrevHigh + PrevLow + PrevPrice)/3;
      Price = iClose(NULL,PERIOD_H1,1); //gets close of last closed candle

   
    CCI =iCCI(NULL,0,55,PRICE_CLOSE,SignalCandle+shift);
    CCIb4=iCCI(NULL,0,55,PRICE_CLOSE,SignalCandle+shift+1);
    //Elliot Wave
    MA5=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,SignalCandle+shift);
    MA35=iMA(NULL,0,35,0,MODE_SMA,PRICE_MEDIAN,SignalCandle+shift);
    EWO=MA5-MA35;  // yes thats it - Elliot Wave
//Comment ( "mtfstochs=",mtfstochs,"mtfstochsb4=",mtfstochsb4,"\nmtfstochs1=",mtfstochs1,"mtfstochs1b4=",mtfstochs1b4);
 	   val1[shift]=0;
		val2[shift]=0;

if(ObjectFind("P label") != 0)
      {
      ObjectCreate("P label", OBJ_TEXT, 0, Time[20], P);
      ObjectSetText("P label", "Pivot", 8, "Arial", Magenta);
      }
       if(ObjectFind("P line") != 0)
      {
      ObjectCreate("P line", OBJ_HLINE, 0, Time[40], P);
      ObjectSet("P line", OBJPROP_STYLE, STYLE_DOT);
      ObjectSet("P line", OBJPROP_COLOR, Magenta);
      }
//if ( TTb4>TT1b4 && TT<TT1 ) 
 
 if ( CCI>=0 && CCIb4<0 &&   EWO>0)

{
		val1[shift]=Low[shift]-8*Point;
	
	if (shift < 2 )
	
	{
	   UD=" UP.";
		DoAlert(UD);
	}

}
// if ( TTb4<TT1b4 && TT>TT1) 
 if ( CCI<=0 && CCIb4> 0 &&  EWO<0)
{
	val2[shift]=High[shift]+8*Point;
	
	
	 if (shift < 2 )
  { 
  UD=" DOWN.";	
  DoAlert(UD);
  }
}



}
   //return(0);
  }
 
void DoAlert(string UD)
{
   if (!NewBar() || !UseAlert)
      return;
     Alert (Symbol()," ",Period(),"T3 TRIX cross ",UD);

}


  bool NewBar()
{
   static datetime dt  = 0;
   if (dt != Time[0])
   {
      dt = Time[0];
      return(true);
   }
  
}

//+------------------------------------------------------------------+

Comments