//+---------------------------------------------------------+ //| 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=0 && CCIb4<0 && EWO>0) { val1[shift]=Low[shift]-8*Point; if (shift < 2 ) { UD=" UP."; DoAlert(UD); } } // if ( TTb4TT1) 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); } } //+------------------------------------------------------------------+