//+------------------------------------------------------------------+ //| ma crosses.mq4 | //+------------------------------------------------------------------+ #include #include #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Aqua #property indicator_color2 Red extern int FastMa = 5; extern string fmodenote = "Fast Ma Methods or Modes"; extern string note2 = "0=sma, 1=ema, 2=smma, 3=lwma"; extern int FastMAMethod = 3; extern string fpt = "Fast Ma Price Types"; extern string note2a = "0=close,1=open,2=high,3=low"; extern string note2b = "4=median,5=typical,6=weighted"; extern int FastMAPrice = 0; extern int SlowMa = 13; extern string smodenote = "Slow Ma Methods or Modes"; extern string snote2 = "0=sma, 1=ema, 2=smma, 3=lwma"; extern int SlowMAMethod = 3; extern string spt = "Slow Ma Price Types"; extern string snote2a = "0=close,1=open,2=high,3=low"; extern string snote2b = "4=median,5=typical,6=weighted"; extern int SlowMAPrice = 0; extern string note = "turn on Alert = true; turn off = false"; extern bool alertsOn = true; extern bool alertsOnCurrent = true; extern bool alertsMessage = true; extern bool alertsSound = true; extern bool alertsEmail = false; extern string Sound.For.Long = "alert.wav"; extern string Sound.For.Short = "alert2.wav"; extern string note7 = "Arrow Type"; extern string note8 = "0=default,1=Thick,2=Thin,3=Hollow"; extern string note9 = "4=Round,5=Fractal,6=Diagonal Thin"; extern string note10 = "7=Diagonal Thick,8=Diagonal Hollow"; extern string note11 = "9=Thumb,10=Finger"; extern int ArrowType = 2; extern int arrowthickness = 2; // // // // // double CrossUp[]; double CrossDn[]; double trend[]; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(3); if (ArrowType == 0) { SetIndexBuffer(0, CrossUp); SetIndexStyle(0,DRAW_ARROW,0,arrowthickness); SetIndexArrow(0,119); SetIndexBuffer(1, CrossDn ); SetIndexStyle(1,DRAW_ARROW,0,arrowthickness); SetIndexArrow(1,119); } if (ArrowType == 1) { SetIndexBuffer(0, CrossUp); SetIndexStyle(0, DRAW_ARROW,0,arrowthickness); SetIndexArrow(0, 233); SetIndexBuffer(1, CrossDn); SetIndexStyle(1, DRAW_ARROW,0,arrowthickness); SetIndexArrow(1, 234); } else if (ArrowType == 2) { SetIndexBuffer(0, CrossUp); SetIndexStyle(0, DRAW_ARROW,0,arrowthickness); SetIndexArrow(0, 225); SetIndexBuffer(1, CrossDn); SetIndexStyle(1, DRAW_ARROW,0,arrowthickness); SetIndexArrow(1, 226); } else if (ArrowType == 3) { SetIndexBuffer(0, CrossUp); SetIndexStyle(0, DRAW_ARROW,0,arrowthickness); SetIndexArrow(0, 241); SetIndexBuffer(1, CrossDn); SetIndexStyle(1, DRAW_ARROW,0,arrowthickness); SetIndexArrow(1, 242); } else if (ArrowType == 4) { SetIndexBuffer(0, CrossUp); SetIndexStyle(0, DRAW_ARROW,0,arrowthickness); SetIndexArrow(0, 221); SetIndexBuffer(1, CrossDn); SetIndexStyle(1, DRAW_ARROW,0,arrowthickness); SetIndexArrow(1, 222); } else if (ArrowType == 5) { SetIndexBuffer(0, CrossUp); SetIndexStyle(0, DRAW_ARROW,0,arrowthickness); SetIndexArrow(0, 217); SetIndexBuffer(1, CrossDn); SetIndexStyle(1, DRAW_ARROW,0,arrowthickness); SetIndexArrow(1, 218); } else if (ArrowType == 6) { SetIndexBuffer(0, CrossUp); SetIndexStyle(0, DRAW_ARROW,0,arrowthickness); SetIndexArrow(0, 228); SetIndexBuffer(1, CrossDn); SetIndexStyle(1, DRAW_ARROW,0,arrowthickness); SetIndexArrow(1, 230); } else if (ArrowType == 7) { SetIndexBuffer(0, CrossUp); SetIndexStyle(0, DRAW_ARROW,0,arrowthickness); SetIndexArrow(0, 236); SetIndexBuffer(1, CrossDn); SetIndexStyle(1, DRAW_ARROW,0,arrowthickness); SetIndexArrow(1, 238); } else if (ArrowType == 8) { SetIndexBuffer(0, CrossUp); SetIndexStyle(0, DRAW_ARROW,0,arrowthickness); SetIndexArrow(0, 246); SetIndexBuffer(1, CrossDn); SetIndexStyle(1, DRAW_ARROW,0,arrowthickness); SetIndexArrow(1, 248); } else if (ArrowType == 9) { SetIndexBuffer(0, CrossUp); SetIndexStyle(0, DRAW_ARROW,0,arrowthickness); SetIndexArrow(0, 67); SetIndexBuffer(1, CrossDn); SetIndexStyle(1, DRAW_ARROW,0,arrowthickness); SetIndexArrow(1, 68); } else if (ArrowType == 10) { SetIndexBuffer(0, CrossUp); SetIndexStyle(0, DRAW_ARROW,0,arrowthickness); SetIndexArrow(0, 71); SetIndexBuffer(1, CrossDn); SetIndexStyle(1, DRAW_ARROW,0,arrowthickness); SetIndexArrow(1, 72); } SetIndexBuffer(2, trend); return(0); } int deinit() { return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // // // // int start() { int counted_bars=IndicatorCounted(); int i,limit; if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit = MathMin(Bars-counted_bars,Bars-1); // // // // // for(i=limit; i>=0; i--) { double fastMA = iMA(NULL,0,FastMa,0,FastMAMethod,FastMAPrice,i); double slowMA = iMA(NULL,0,SlowMa,0,SlowMAMethod,SlowMAPrice,i); trend[i] = trend[i+1]; if (fastMA>slowMA) trend[i] = 1; if (fastMA