/*
   G e n e r a t e d  by ex4-to-mq4 decompiler FREEWARE 4.0.509.5
   Website:  Htt p://WWw .metaqu ot ES. n eT
   E-mail : s u P POrT @ M Et a q UotEs .n e t
*/
#property copyright "Copyright © 2011, MaryJane"
#property link      "http://www.forexfactory.com/MaryJane"

#property indicator_separate_window
#property indicator_minimum 0.0
#property indicator_maximum 100.0
#property indicator_levelcolor DarkGray
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 3
#property indicator_level1 12.0
#property indicator_level2 88.0

extern int RsiPeriod = 4;
extern int EmaPeriod = 4;
extern int AlertCandle = 1;
extern int AlertLevelUp = 12;
extern int AlertLevelDown = 88;
extern bool ShowChartAlerts = FALSE;
extern string AlertEmailSubject = "";
bool Gi_108 = -999999;
bool G_bars_112 = -999999;
datetime G_time_116 = -999999;
string Gs_120 = "SVE RSI I-Fish UP";
string Gs_128 = "SVE RSI I-Fish DOWN";
double Gda_136[];
double Gda_140[];
double Gda_144[];
double Gda_148[];
double Gda_152[];
double Gda_156[];
double Gda_160[];
double Gda_164[];
double Gda_168[];
double Gda_172[];
double G_ibuf_176[];
double G_ibuf_180[];
double G_ibuf_184[];
double G_ibuf_188[];
double G_ibuf_192[];
double G_ibuf_196[];

// E37F0136AA3FFAF149B351F6A4C948E9
int init() {
   IndicatorBuffers(6);
   SetIndexStyle(0, DRAW_LINE);
   SetIndexBuffer(0, G_ibuf_196);
   SetIndexBuffer(1, G_ibuf_184);
   SetIndexBuffer(2, G_ibuf_188);
   SetIndexBuffer(3, G_ibuf_176);
   SetIndexBuffer(4, G_ibuf_180);
   SetIndexBuffer(5, G_ibuf_192);
   Gi_108 = FALSE;
   G_bars_112 = FALSE;
   return (0);
}

// 52D46093050F38C27267BCE42543EF60
int deinit() {
   return (0);
}

// EA2B2676C28C0DB26D39331A336C6B92
int start() {
   int Li_0 = IndicatorCounted();
   if (Li_0 < 0) return (-1);
   if (Li_0 > 0) Li_0--;
   int Li_4 = Bars - 1 - Li_0;
   if (Time[0] != Gi_108) f0_0();
   for (int Li_8 = Li_4; Li_8 >= 0; Li_8--) Gda_136[Li_8] = iMA(NULL, 0, 2, 0, MODE_LWMA, PRICE_CLOSE, Li_8);
   for (Li_8 = Li_4; Li_8 >= 0; Li_8--) Gda_140[Li_8] = iMAOnArray(Gda_136, 0, 2, 0, MODE_LWMA, Li_8);
   for (Li_8 = Li_4; Li_8 >= 0; Li_8--) Gda_144[Li_8] = iMAOnArray(Gda_140, 0, 2, 0, MODE_LWMA, Li_8);
   for (Li_8 = Li_4; Li_8 >= 0; Li_8--) Gda_148[Li_8] = iMAOnArray(Gda_144, 0, 2, 0, MODE_LWMA, Li_8);
   for (Li_8 = Li_4; Li_8 >= 0; Li_8--) Gda_152[Li_8] = iMAOnArray(Gda_148, 0, 2, 0, MODE_LWMA, Li_8);
   for (Li_8 = Li_4; Li_8 >= 0; Li_8--) Gda_156[Li_8] = iMAOnArray(Gda_152, 0, 2, 0, MODE_LWMA, Li_8);
   for (Li_8 = Li_4; Li_8 >= 0; Li_8--) Gda_160[Li_8] = iMAOnArray(Gda_156, 0, 2, 0, MODE_LWMA, Li_8);
   for (Li_8 = Li_4; Li_8 >= 0; Li_8--) Gda_164[Li_8] = iMAOnArray(Gda_160, 0, 2, 0, MODE_LWMA, Li_8);
   for (Li_8 = Li_4; Li_8 >= 0; Li_8--) Gda_168[Li_8] = iMAOnArray(Gda_164, 0, 2, 0, MODE_LWMA, Li_8);
   for (Li_8 = Li_4; Li_8 >= 0; Li_8--) Gda_172[Li_8] = iMAOnArray(Gda_168, 0, 2, 0, MODE_LWMA, Li_8);
   for (Li_8 = Li_4; Li_8 >= 0; Li_8--) {
      G_ibuf_184[Li_8] = (5.0 * Gda_136[Li_8] + 4.0 * Gda_140[Li_8] + 3.0 * Gda_144[Li_8] + 2.0 * Gda_148[Li_8] + Gda_152[Li_8] + Gda_156[Li_8] + Gda_160[Li_8] + Gda_164[Li_8] +
         Gda_168[Li_8] + Gda_172[Li_8]) / 20.0;
   }
   for (Li_8 = Li_4; Li_8 >= 0; Li_8--) G_ibuf_188[Li_8] = (iRSIOnArray(G_ibuf_184, 0, RsiPeriod, Li_8) - 50.0) / 10.0;
   for (Li_8 = Li_4; Li_8 >= 0; Li_8--) G_ibuf_176[Li_8] = iMAOnArray(G_ibuf_188, 0, EmaPeriod, 0, MODE_EMA, Li_8);
   for (Li_8 = Li_4; Li_8 >= 0; Li_8--) G_ibuf_180[Li_8] = iMAOnArray(G_ibuf_176, 0, EmaPeriod, 0, MODE_EMA, Li_8);
   for (Li_8 = Li_4; Li_8 >= 0; Li_8--) G_ibuf_192[Li_8] = G_ibuf_176[Li_8] + (G_ibuf_176[Li_8] - G_ibuf_180[Li_8]);
   for (Li_8 = Li_4; Li_8 >= 0; Li_8--) G_ibuf_196[Li_8] = 50.0 * ((MathExp(2.0 * G_ibuf_192[Li_8]) - 1.0) / (MathExp(2.0 * G_ibuf_192[Li_8]) + 1.0) + 1.0);
   f0_2();
   return (0);
}

// 001265269AEC7C79F32AB4F9E855729E
void f0_0() {
   if (G_bars_112 == Bars) {
      ArrayResize(Gda_136, Bars - 1);
      ArrayResize(Gda_140, Bars - 1);
      ArrayResize(Gda_144, Bars - 1);
      ArrayResize(Gda_148, Bars - 1);
      ArrayResize(Gda_152, Bars - 1);
      ArrayResize(Gda_156, Bars - 1);
      ArrayResize(Gda_160, Bars - 1);
      ArrayResize(Gda_164, Bars - 1);
      ArrayResize(Gda_168, Bars - 1);
      ArrayResize(Gda_172, Bars - 1);
   }
   ArraySetAsSeries(Gda_136, FALSE);
   ArrayResize(Gda_136, Bars);
   ArraySetAsSeries(Gda_136, TRUE);
   ArraySetAsSeries(Gda_140, FALSE);
   ArrayResize(Gda_140, Bars);
   ArraySetAsSeries(Gda_140, TRUE);
   ArraySetAsSeries(Gda_144, FALSE);
   ArrayResize(Gda_144, Bars);
   ArraySetAsSeries(Gda_144, TRUE);
   ArraySetAsSeries(Gda_148, FALSE);
   ArrayResize(Gda_148, Bars);
   ArraySetAsSeries(Gda_148, TRUE);
   ArraySetAsSeries(Gda_152, FALSE);
   ArrayResize(Gda_152, Bars);
   ArraySetAsSeries(Gda_152, TRUE);
   ArraySetAsSeries(Gda_156, FALSE);
   ArrayResize(Gda_156, Bars);
   ArraySetAsSeries(Gda_156, TRUE);
   ArraySetAsSeries(Gda_160, FALSE);
   ArrayResize(Gda_160, Bars);
   ArraySetAsSeries(Gda_160, TRUE);
   ArraySetAsSeries(Gda_164, FALSE);
   ArrayResize(Gda_164, Bars);
   ArraySetAsSeries(Gda_164, TRUE);
   ArraySetAsSeries(Gda_160, FALSE);
   ArrayResize(Gda_160, Bars);
   ArraySetAsSeries(Gda_160, TRUE);
   ArraySetAsSeries(Gda_168, FALSE);
   ArrayResize(Gda_168, Bars);
   ArraySetAsSeries(Gda_168, TRUE);
   ArraySetAsSeries(Gda_172, FALSE);
   ArrayResize(Gda_172, Bars);
   ArraySetAsSeries(Gda_172, TRUE);
   Gi_108 = Time[0];
   G_bars_112 = Bars;
}

// 3E850E0492611BC4EC9CFAEED504BFC8
int f0_2() {
   string Ls_0;
   if (AlertCandle >= 0 && Time[0] > G_time_116) {
      if (G_ibuf_196[AlertCandle] > AlertLevelUp && G_ibuf_196[AlertCandle + 1] <= AlertLevelUp) {
         Ls_0 = Symbol() + "," + f0_1(Period()) + ": " + Gs_120;
         if (ShowChartAlerts) Alert(Ls_0);
         if (AlertEmailSubject > "") SendMail(AlertEmailSubject, Ls_0);
      }
      if (G_ibuf_196[AlertCandle] < AlertLevelDown && G_ibuf_196[AlertCandle + 1] >= AlertLevelDown) {
         Ls_0 = Symbol() + "," + f0_1(Period()) + ": " + Gs_128;
         if (ShowChartAlerts) Alert(Ls_0);
         if (AlertEmailSubject > "") SendMail(AlertEmailSubject, Ls_0);
      }
      G_time_116 = Time[0];
   }
   return (0);
}

// 1BA399D3D422CBE74D474C4355C7665D
string f0_1(int A_timeframe_0) {
   if (A_timeframe_0 == 0) A_timeframe_0 = Period();
   if (A_timeframe_0 >= PERIOD_MN1) return ("MN");
   if (A_timeframe_0 >= PERIOD_W1) return ("W1");
   if (A_timeframe_0 >= PERIOD_D1) return ("D1");
   if (A_timeframe_0 >= PERIOD_H4) return ("H4");
   if (A_timeframe_0 >= PERIOD_H1) return ("H1");
   if (A_timeframe_0 >= PERIOD_M30) return ("M30");
   if (A_timeframe_0 >= PERIOD_M15) return ("M15");
   if (A_timeframe_0 >= PERIOD_M5) return ("M5");
   if (A_timeframe_0 >= PERIOD_M1) return ("M1");
   return ("");
}
