EWOCCI_Indicator.2_v1

Download script
EWOCCI_Indicator.2_v1

This tool is designed to identify potential trend reversals and momentum shifts on your trading charts by combining three distinct types of technical analysis: price levels, momentum oscillators, and moving average crossovers.

How the Logic Works

The script continuously monitors the market to find specific "confluence" points—moments where multiple mathematical conditions align simultaneously to suggest a change in price direction. It focuses on three primary components:

1. Price Pivot Calculation The tool establishes a baseline by looking at previous daily price data. It calculates a "Pivot" point by averaging the high, low, and closing prices of a specific candle. This acts as a structural reference point to help understand where the market has recently balanced itself.

2. Momentum & Trend Tracking (The EWO Method) To determine the strength of the current trend, the script calculates an "Elliot Wave" style indicator (EWO). It does this by measuring the distance between two different Moving Averages:

  • A short-term average (faster)
  • A long-term average (slower) By subtracting the long-term average from the short-term average, the script can see if the price momentum is accelerating upward or pulling downward.

3. CCI Crossings The script also utilizes the Commodity Channel Index (CCI), which helps identify when an asset is overbought, oversold, or experiencing a significant change in direction. It specifically looks for "crosses"—moments where the indicator moves from negative to positive (or vice versa) across the zero line.

Signal Execution

The script triggers visual signals on your chart only when all three components agree:

  • Buy Signal (Up): Triggered when the momentum indicator is positive (trending up), and the CCI has just crossed from negative territory into positive territory. This suggests that both the underlying trend and immediate momentum are shifting toward the upside.
  • Sell Signal (Down): Triggered when the momentum indicator is negative (trending down), and the CCI has just crossed from positive territory into negative territory. This suggests a synchronized shift toward the downside.

User Experience Features

  • Visual Aids: The script automatically places labels and dotted lines on your chart to highlight the calculated Pivot levels, providing extra context for your trade entries.
  • Automated Alerts: When the specific conditions for a Buy or Sell signal are met in real-time, the script can trigger an audible alert on your platform, ensuring you don't miss a potential entry point while away from the screen.
  • Smart Filtering: The logic includes a "New Bar" check to ensure that alerts are only triggered once per candle, preventing the software from spamming multiple notifications for the same price movement.
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
12 Views
0 Downloads
0 Favorites
EWOCCI_Indicator.2_v1
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+---------------------------------------------------------+
//| T3 Trix crossing  signals.mq4 
//|
//| Perky..(Based on xxDavidxSxx's Ewocci Method)
//+------------------------------------------------------------------+
#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,MA34;
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);
      PrevHigh  = iHigh(NULL,PERIOD_D1,SignalCandle);
      PrevLow   = iLow(NULL,PERIOD_D1,SignalCandle);
      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);
    MA34=iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN,SignalCandle+shift);
    EWO=MA5-MA34;  // 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", Orange);
      }
       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, Orange);
      }
//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()," EWOCCI cross ",UD);

}


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

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

Comments