/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Aqua
#property indicator_color2 Magenta
#property indicator_width1 3
#property indicator_width2 2
extern int TimeFrame = 0;
extern int  Length   = 13;
extern int  Smooth1  = 25;
extern int  Smooth2  =  2;
extern int  Signal   =  5;
extern int mode = 0;
extern int retard = 0;
extern int  Price    = PRICE_CLOSE;
extern bool SoundAlert = False;
double g_ibuf_84[];
double g_ibuf_88[];
double g_bars_92;
int gi_100;

int init() {
   string ls_unused_0;
   SetIndexStyle(0, DRAW_LINE);
   SetIndexStyle(1, DRAW_LINE);
   SetIndexBuffer(0, g_ibuf_84);
   SetIndexBuffer(1, g_ibuf_88);
   SetIndexArrow(0, 233);
   SetIndexArrow(1, 234);
   SetIndexLabel(0, "Up Signal");
   SetIndexLabel(1, "Down Signal");
   switch (TimeFrame) {
   case 1:
      ls_unused_0 = "Period_M1";
      break;
   case 5:
      ls_unused_0 = "Period_M5";
      break;
   case 15:
      ls_unused_0 = "Period_M15";
      break;
   case 30:
      ls_unused_0 = "Period_M30";
      break;
   case 60:
      ls_unused_0 = "Period_H1";
      break;
   case 240:
      ls_unused_0 = "Period_H4";
      break;
   case 1440:
      ls_unused_0 = "Period_D1";
      break;
   case 10080:
      ls_unused_0 = "Period_W1";
      break;
   case 43200:
      ls_unused_0 = "Period_MN1";
      break;
   default:
      ls_unused_0 = "Current Timeframe";
   }
   IndicatorShortName(" ");
   SetIndexLabel(0, NULL);
   SetIndexLabel(1, NULL);
   SetIndexLabel(2, NULL);
   SetIndexLabel(3, NULL);
   SetIndexLabel(4, NULL);
   return (0);
}

int start() {
   int lia_0[];
   int li_4 = 0;
   int l_ind_counted_8 = IndicatorCounted();
   ArrayCopySeries(lia_0, 5, Symbol(), TimeFrame);
   int li_12 = Bars - 1;
   int l_index_16 = 0;
   li_4 = 0;
   while (l_index_16 < li_12) {
      if (Time[l_index_16] < lia_0[li_4]) li_4++;
      g_ibuf_84[l_index_16] = iCustom(Symbol(), TimeFrame, "Stochastic momentum (SMI)",Length,Smooth1,Smooth2,Signal,mode,retard,Price , 0, li_4);
      g_ibuf_88[l_index_16] = iCustom(Symbol(), TimeFrame, "Stochastic momentum (SMI)",Length,Smooth1,Smooth2,Signal,mode,retard,Price , 1, li_4);
      if (g_ibuf_84[l_index_16] > g_ibuf_88[l_index_16] && g_ibuf_84[l_index_16] != EMPTY_VALUE && g_ibuf_88[l_index_16] != EMPTY_VALUE) gi_100 = 1;
      if ( g_ibuf_84[l_index_16] < g_ibuf_88[l_index_16] && g_ibuf_84[l_index_16] != EMPTY_VALUE && g_ibuf_88[l_index_16] != EMPTY_VALUE) gi_100 = 2;
      if (g_ibuf_84[l_index_16] > g_ibuf_88[l_index_16] && g_ibuf_84[l_index_16] != EMPTY_VALUE && g_ibuf_88[l_index_16] != EMPTY_VALUE && SoundAlert == TRUE &&
         Bars > g_bars_92) {
         Alert("SMI_mtf_ UP " + Symbol() + " on the " + Period() + " minute chart");
         g_bars_92 = Bars;
         gi_100 = 2;
      }
      if (gi_100 == 2 && g_ibuf_84[l_index_16] < g_ibuf_88[l_index_16] && g_ibuf_84[l_index_16] != EMPTY_VALUE && g_ibuf_88[l_index_16] != EMPTY_VALUE && SoundAlert == TRUE &&
         Bars > g_bars_92) {
         Alert("SMI_mtf_DOWN " + Symbol() + " on the " + Period() + " minute chart");
         g_bars_92 = Bars;
         gi_100 = 1;
      }
      l_index_16++;
   }
   return (0);
}



