/*
   Generated by EX4-TO-MQ4 decompiler FREEWARE V4.0.451.1 [-]
   Website: http://www.metaquotes.net
   E-mail : support@metaquotes.net
*/
#property copyright "Copyright � 2007, NiX @ www.forex-tsd.com"
#property link      "http://www.forex-tsd.com"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 White
#property indicator_color2 White
#property indicator_color3 LightGreen
#property indicator_color4 Red

extern int CountBars = 300;
extern string FS = " ** Filter sensitivity: High <-[1..3]-> Low ** ";
extern int Sensitivity = 2;
double g_ibuf_92[];
double g_ibuf_96[];
double g_ibuf_100[];
double g_ibuf_104[];
int gi_unused_108 = -1;

int init() {
   IndicatorBuffers(4);
   SetIndexStyle(2, DRAW_ARROW);
   SetIndexArrow(2, 233);
   SetIndexBuffer(2, g_ibuf_92);
   SetIndexStyle(3, DRAW_ARROW);
   SetIndexArrow(3, 234);
   SetIndexBuffer(3, g_ibuf_96);
   SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 3, White);
   SetIndexBuffer(0, g_ibuf_100);
   SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 3, White);
   SetIndexBuffer(1, g_ibuf_104);
   SetIndexEmptyValue(0, 0);
   SetIndexEmptyValue(1, 0);
   SetIndexEmptyValue(2, 0);
   SetIndexEmptyValue(3, 0);
   SetIndexLabel(2, "Buy Signal");
   SetIndexLabel(3, "Sell Signal");
   SetIndexLabel(0, "High");
   SetIndexLabel(1, "Low");
   SetIndexEmptyValue(0, EMPTY_VALUE);
   SetIndexEmptyValue(1, EMPTY_VALUE);
   SetIndexEmptyValue(2, EMPTY_VALUE);
   SetIndexEmptyValue(3, EMPTY_VALUE);
   string ls_0 = "Scalper Signal";
   IndicatorShortName(ls_0);
   if (Sensitivity < 1) Sensitivity = 1;
   if (Sensitivity > 3) Sensitivity = 3;
   return (0);
}

int deinit() {
   return (0);
}

double sellSignal(int ai_0) {
   bool li_4 = TRUE;
   if (Sensitivity > 2)
      if (iHigh(Symbol(), Period(), ai_0 + 6) >= iHigh(Symbol(), Period(), ai_0 + 5)) li_4 = FALSE;
   if (Sensitivity > 1)
      if (iHigh(Symbol(), Period(), ai_0 + 5) >= iHigh(Symbol(), Period(), ai_0 + 4)) li_4 = FALSE;
   if (Sensitivity > 0)
      if (iHigh(Symbol(), Period(), ai_0 + 4) >= iHigh(Symbol(), Period(), ai_0 + 3)) li_4 = FALSE;
   if (li_4) {
      if (iClose(Symbol(), Period(), ai_0 + 2) < iHigh(Symbol(), Period(), ai_0 + 3))
         if (iClose(Symbol(), Period(), ai_0 + 1) < iLow(Symbol(), Period(), ai_0 + 3)) return (iLow(Symbol(), Period(), ai_0 + 3) - 10.0 * Point);
   }
   return (0);
}

double buySignal(int ai_0) {
   bool li_4 = TRUE;
   if (Sensitivity > 2)
      if (iLow(Symbol(), Period(), ai_0 + 6) <= iLow(Symbol(), Period(), ai_0 + 5)) li_4 = FALSE;
   if (Sensitivity > 1)
      if (iLow(Symbol(), Period(), ai_0 + 5) <= iLow(Symbol(), Period(), ai_0 + 4)) li_4 = FALSE;
   if (Sensitivity > 0)
      if (iLow(Symbol(), Period(), ai_0 + 4) <= iLow(Symbol(), Period(), ai_0 + 3)) li_4 = FALSE;
   if (li_4) {
      if (iClose(Symbol(), Period(), ai_0 + 2) > iLow(Symbol(), Period(), ai_0 + 3))
         if (iClose(Symbol(), Period(), ai_0 + 1) > iHigh(Symbol(), Period(), ai_0 + 3)) return (iHigh(Symbol(), Period(), ai_0 + 3) + 10.0 * Point);
   }
   return (0);
}

int start() {
   if (!LicenceCHK()) return (0);
   int li_0 = IndicatorCounted();
   if (li_0 < 0) return (-1);
   if (li_0 > 0) li_0--;
   int li_4 = Bars - li_0;
   for (int count_8 = 0; count_8 < li_4; count_8++) {
      g_ibuf_92[count_8 + 3] = buySignal(count_8);
      g_ibuf_96[count_8 + 3] = sellSignal(count_8);
      if (buySignal(count_8) > 0.0 || sellSignal(count_8) > 0.0) {
         g_ibuf_100[count_8 + 3] = iHigh(Symbol(), Period(), count_8 + 3);
         g_ibuf_104[count_8 + 3] = iLow(Symbol(), Period(), count_8 + 3);
      }
   }
   return (0);
}

bool LicenceCHK() {
   if (IsDemo()) return (TRUE);
   if (TimeYear(TimeCurrent()) > 2020) {
      Comment("Demo Expired! - contact nix @ www.forex-tsd.com");
      Print("Demo Expired!");
      return (FALSE);
   }
   return (TRUE);
}