/*
   Generated by EX4-TO-MQ4 decompiler V4.0.220.2c []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/
#property copyright "jpkfox"
#property link      "http://www.strategybuilderfx.com/forums/showthread.php?t=15274&page=1&pp=8"

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 LimeGreen
#property indicator_color2 Red
#property indicator_color3 Yellow

extern int MAMode = 0;
extern int MAPeriod = 50;
extern double AngleTreshold = 0.25;
extern int StartMAShift = 2;
extern int EndMAShift = 0;
double g_ibuf_100[];
double g_ibuf_104[];
double g_ibuf_108[];

int init() {
   IndicatorBuffers(3);
   SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2);
   SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 2);
   SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID, 2);
   IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 2.0);
   if (!SetIndexBuffer(0, g_ibuf_100) && !SetIndexBuffer(1, g_ibuf_104) && !SetIndexBuffer(2, g_ibuf_108)) Print("cannot set indicator buffers!");
   IndicatorShortName("MAAngle(" + MAPeriod + "," + AngleTreshold + "," + StartMAShift + "," + EndMAShift + ")");
   return (0);
}

int start() {
   double l_ima_0;
   double l_ima_8;
   double ld_16;
   if (MAMode >= 4) MAMode = 0;
   if (EndMAShift >= StartMAShift) {
      Print("Error: EndMAShift >= StartMAShift");
      StartMAShift = 6;
      EndMAShift = 0;
   }
   int li_48 = IndicatorCounted();
   if (li_48 < 0) return (-1);
   if (li_48 > 0) li_48--;
   int li_40 = Bars - li_48;
   double ld_unused_32 = 0.0349065556;
   double ld_24 = 10000.0;
   string ls_64 = StringSubstr(Symbol(), 3, 3);
   if (ls_64 == "JPY") ld_24 = 100.0;
   int li_60 = StartMAShift - EndMAShift;
   ld_24 /= li_60;
   for (int l_index_44 = 0; l_index_44 < li_40; l_index_44++) {
      l_ima_0 = iMA(NULL, 0, MAPeriod, 0, MAMode, PRICE_MEDIAN, l_index_44 + EndMAShift);
      l_ima_8 = iMA(NULL, 0, MAPeriod, 0, MAMode, PRICE_MEDIAN, l_index_44 + StartMAShift);
      ld_16 = ld_24 * (l_ima_0 - l_ima_8) / 2.0;
      g_ibuf_104[l_index_44] = 0.0;
      g_ibuf_100[l_index_44] = 0.0;
      g_ibuf_108[l_index_44] = 0.0;
      if (ld_16 > AngleTreshold) g_ibuf_100[l_index_44] = ld_16;
      else {
         if (ld_16 < -AngleTreshold) g_ibuf_104[l_index_44] = ld_16;
         else g_ibuf_108[l_index_44] = ld_16;
      }
   }
   return (0);
}
