EWOCCI_Indicator.2_v1
Download scriptThis 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.
/*-----------------------------+
| |
| 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