/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/
#property copyright "Copyright © 2005, Jason Robinson"
#property link      "http://wssfx.com"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red

double g_ibuf_76[];
double g_ibuf_80[];
double gd_92;
double gd_100;
double g_ima_108;
double g_ima_116;
double g_ima_124;
double g_ima_132;
double g_ima_140;
double g_ima_148;
double g_ima_156;
double g_ima_164;
double g_ima_172;
extern int TimeFrame = 0;
extern int FasterMA = 5;
extern int FasterShift = -5;
extern int FasterMode = 1;
extern int MediumMA = 21;
extern int MediumShift = -5;
extern int MediumMode = 1;
extern int SlowerMA = 31;
extern int SlowerShift = 0;
extern int SlowerMode = 1;
extern int SoundAlert = 1;
extern int ArrowWidth = 2;
int Trend=0, MaxShift=0;

int init() {
   SetIndexStyle(0, DRAW_ARROW, EMPTY,ArrowWidth);
   SetIndexArrow(0, 233);
   SetIndexBuffer(0, g_ibuf_76);
   SetIndexStyle(1, DRAW_ARROW, EMPTY,ArrowWidth);
   SetIndexArrow(1, 234);
   SetIndexBuffer(1, g_ibuf_80);
   MaxShift=MathMin(FasterShift,MathMin(MediumShift,SlowerShift));
   return (0);
}

int deinit() {
   return (0);
}

int start() {
   int li_8,x,y,z;
   int li_12 = IndicatorCounted();
   if (li_12 < 0) return (-1);
   if (li_12 > 0) li_12--;
   int li_0 = Bars - li_12+TimeFrame/Period();
   int l=MathAbs(MaxShift);
   for (int l_index_4 = 0; l_index_4 <= li_0; l_index_4++) {
      li_8 = l_index_4;
      gd_92 = 0;
      gd_100 = 0;
      for (li_8 = l_index_4; li_8 <= l_index_4 + 9; li_8++) gd_100 += MathAbs(High[li_8] - Low[li_8]);
      gd_92 = gd_100 / 10.0;
      x=iBarShift(NULL,TimeFrame,Time[l_index_4 + l]);
      y=iBarShift(NULL,TimeFrame,Time[l_index_4 + 1+l]);
      z=iBarShift(NULL,TimeFrame,Time[l_index_4 - 1+l]);
      g_ima_108 = iMA(NULL, TimeFrame, FasterMA, FasterShift, FasterMode, PRICE_CLOSE, x);
      g_ima_116 = iMA(NULL, TimeFrame, FasterMA, FasterShift, FasterMode, PRICE_CLOSE, y);
      g_ima_124 = iMA(NULL, TimeFrame, FasterMA, FasterShift, FasterMode, PRICE_CLOSE, z);
      g_ima_132 = iMA(NULL, TimeFrame, MediumMA, MediumShift, MediumMode, PRICE_CLOSE, x);
      g_ima_140 = iMA(NULL, TimeFrame, MediumMA, MediumShift, MediumMode, PRICE_CLOSE, y);
      g_ima_148 = iMA(NULL, TimeFrame, MediumMA, MediumShift, MediumMode, PRICE_CLOSE, z);
      g_ima_156 = iMA(NULL, TimeFrame, SlowerMA, SlowerShift, SlowerMode, PRICE_CLOSE, x);
      g_ima_164 = iMA(NULL, TimeFrame, SlowerMA, SlowerShift, SlowerMode, PRICE_CLOSE, y);
      g_ima_172 = iMA(NULL, TimeFrame, SlowerMA, SlowerShift, SlowerMode, PRICE_CLOSE, z);
      if ((g_ima_108 > g_ima_156 && g_ima_116 <= g_ima_164 && g_ima_124 > g_ima_172 && g_ima_132 > g_ima_156) || (g_ima_108 > g_ima_156 && g_ima_132 > g_ima_156 && g_ima_140 <= g_ima_164 &&
         g_ima_148 > g_ima_172)) {
            g_ibuf_76[l_index_4] = Low[l_index_4] - gd_92 / 2.0;
            }
      else if ((g_ima_108 < g_ima_156 && g_ima_116 >= g_ima_164 && g_ima_124 < g_ima_172 && g_ima_132 < g_ima_156) || (g_ima_108 < g_ima_156 && g_ima_132 < g_ima_156 && g_ima_140 >= g_ima_164 &&
         g_ima_148 < g_ima_172)) {
            g_ibuf_80[l_index_4] = High[l_index_4] + gd_92 / 2.0;
            }
   }
   Comment("Trend: ",Trend,"\n",
           "MaxShift: ",l);
   if (g_ibuf_76[1]!=EMPTY_VALUE  && SoundAlert != 0 && Trend<1) {
      Trend=1;
      Alert(Symbol(), " 3 MA Cross Up @  Hour ", Hour(), "  Minute ", Minute());
   }
   if (g_ibuf_80[1]!=EMPTY_VALUE && SoundAlert != 0 && Trend>-1) {
      Trend=-1;
      Alert(Symbol(), " 3 MA Cross Down @  Hour ", Hour(), "  Minute ", Minute());
   }
   return (0);
}