/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 White
#property indicator_color3 Red
#property indicator_color4 White

int g_color_76 = Red;
int g_color_80 = White;
int g_color_84 = Red;
int g_color_88 = White;
extern bool SoundOn = False;
double g_ibuf_96[];
double g_ibuf_100[];
double g_ibuf_104[];
double g_ibuf_108[];
double gd_112;
double gd_120;
double gd_128;
double gd_136;
double gd_144;
int gi_152 = 0;
datetime g_time_156;

int init() {
   gd_112 = Point;
   if (Digits == 5 || Digits == 3) gd_112 = 10.0 * gd_112;
   SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 1, g_color_76);
   SetIndexBuffer(0, g_ibuf_96);
   SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 1, g_color_80);
   SetIndexBuffer(1, g_ibuf_100);
   SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID, 3, g_color_84);
   SetIndexBuffer(2, g_ibuf_104);
   SetIndexStyle(3, DRAW_HISTOGRAM, STYLE_SOLID, 3, g_color_88);
   SetIndexBuffer(3, g_ibuf_108);
   SetIndexDrawBegin(0, 10);
   SetIndexDrawBegin(1, 10);
   SetIndexDrawBegin(2, 10);
   SetIndexDrawBegin(3, 10);
   SetIndexBuffer(0, g_ibuf_96);
   SetIndexBuffer(1, g_ibuf_100);
   SetIndexBuffer(2, g_ibuf_104);
   SetIndexBuffer(3, g_ibuf_108);
   plot_obj();
   return (0);
}

int deinit() {
   return (0);
}

int start() {
   plot_obj();
   return (0);
}

int plot_obj() {
   double ld_4;
   double ld_12;
   if (Bars <= 300) return (0);
   gi_152 = IndicatorCounted();
   if (gi_152 < 0) return (-1);
   if (gi_152 > 0) gi_152--;
   for (int li_0 = MathMax(Bars - gi_152 - 1, 300); li_0 >= 0; li_0--) {
      gd_120 = (gd_120 + gd_144) / 2.0;
      gd_144 = (Open[li_0] + High[li_0] + Low[li_0] + Close[li_0]) / 4.0;
      gd_128 = MathMax(High[li_0], MathMax(gd_120, gd_144));
      gd_136 = MathMin(Low[li_0], MathMin(gd_120, gd_144));
      ld_4 = MathMax(Open[li_0], Close[li_0]);
      ld_12 = MathMin(Open[li_0], Close[li_0]);
      if (Open[li_0] == Close[li_0]) ld_4 += gd_112 / 10.0;
      if (gd_120 < gd_144) {
         g_ibuf_96[li_0] = Low[li_0];
         g_ibuf_100[li_0] = High[li_0];
         g_ibuf_104[li_0] = ld_12;
         g_ibuf_108[li_0] = ld_4;
      } else {
         g_ibuf_96[li_0] = High[li_0];
         g_ibuf_100[li_0] = Low[li_0];
         g_ibuf_104[li_0] = ld_4;
         g_ibuf_108[li_0] = ld_12;
      }
   }
   if (SoundOn) {
      if (Time[0] > g_time_156) {
         if (g_ibuf_104[1] > g_ibuf_108[1] && g_ibuf_104[2] <= g_ibuf_108[2]) {
            g_time_156 = Time[0];
            Alert("Heiken Ashi Alert (", Symbol(), ", ", Period(), ")--Possible SELL ");
            PlaySound("Alert2.wav");
         } else {
            if (g_ibuf_104[1] < g_ibuf_108[1] && g_ibuf_104[2] >= g_ibuf_108[2]) {
               g_time_156 = Time[0];
               Alert("Heiken Ashi Alert (", Symbol(), ", ", Period(), ")--Possible BUY ");
               PlaySound("Alert2.wav");
            }
         }
      }
   }
   return (0);
}