//+------------------------------------------------------------------+
//| //| Ramdass - Conversion only
//+------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Green

//---- input parameters
extern int RISK = 3;
extern int CountBars = 300;
extern bool alerts = TRUE;

int prev_time;

//---- buffers
double val1[];
double val2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
   IndicatorBuffers(2);
   SetIndexStyle(0, DRAW_ARROW);
   SetIndexArrow(0, 234);
   SetIndexStyle(1, DRAW_ARROW);
   SetIndexArrow(1, 233);
   SetIndexBuffer(0, val1);
   SetIndexBuffer(1, val2);
   return (0);
}

//+------------------------------------------------------------------+
//| ASCTrend1sig                                                     |
//+------------------------------------------------------------------+
int start() {
   if (CountBars >= 1000) CountBars = 950;
   SetIndexDrawBegin(0, Bars - CountBars + 11 + 1);
   SetIndexDrawBegin(1, Bars - CountBars + 11 + 1);
   int i, shift, counted_bars = IndicatorCounted();
   int Counter,i1,value10,value11;
   double value1, x1, x2;
   double value2, value3;
   double TrueCount, Range, AvgRange, MRO1, MRO2;
   double Table_value2[1000];
   
   value10 = RISK << 1 + 3;
   x1 = RISK + 67;
   x2 = 33 - RISK;
   value11 = value10;
   if (Bars <= 12) return (0);
   if (counted_bars < 12) {
      for (i = 1; i <= 0; i++) val1[CountBars - i] = 0.0;
      for (i = 1; i <= 0; i++) val2[CountBars - i] = 0.0;
   }
   for (shift = CountBars - 11 - 1; shift >= 0; shift--) {
      Counter = shift;
      Range = 0.0;
      AvgRange = 0.0;
      for (Counter = shift; Counter <= shift + 9; Counter++) AvgRange += MathAbs(High[Counter] - Low[Counter]);
      Range = AvgRange / 10.0;
      Counter = shift;
      TrueCount = 0;
      while (Counter < shift + 9 && TrueCount < 1.0) {
         if (MathAbs(Open[Counter] - (Close[Counter + 1])) >= 2.0 * Range) TrueCount += 1.0;
         Counter++;
      }
      if (TrueCount >= 1.0) MRO1 = Counter;
      else MRO1 = -1;
      Counter = shift;
      TrueCount = 0;
      while (Counter < shift + 6 && TrueCount < 1.0) {
         if (MathAbs(Close[Counter + 3] - Close[Counter]) >= 4.6 * Range) TrueCount += 1.0;
         Counter++;
      }
      if (TrueCount >= 1.0) MRO2 = Counter;
      else MRO2 = -1;
      if (MRO1 > -1.0) value11 = 3;
      else value11 = value10;
      if (MRO2 > -1.0) value11 = 4;
      else value11 = value10;
      value2 = 100 - MathAbs(iWPR(NULL, 0, value11, shift));
      Table_value2[shift] = value2;
      val1[shift] = 0;
      val2[shift] = 0;
      value3 = 0;
      if (value2 < x2) {
         for (i1 = 1; Table_value2[shift + i1] >= x2 && Table_value2[shift + i1] <= x1; i1++) {
         }
         if (Table_value2[shift + i1] > x1) {
            value3 = High[shift] + Range / 2.0;
            val1[shift] = value3;
         }
      }
      if (value2 > x1) {
         for (i1 = 1; Table_value2[shift + i1] >= x2 && Table_value2[shift + i1] <= x1; i1++) {
         }
         if (Table_value2[shift + i1] < x2) {
            value3 = Low[shift] - Range / 2.0;
            val2[shift] = value3;
         }
      }
   }
   if (val2[1] > 0.0 && val2[1] < 10000.0) {
      if (alerts && prev_time != Time[0]) {
         Alert("Trendsig" + Symbol() + Period() + " : long signal @ " + DoubleToStr(Bid, Digits));
         SendMail("Trendsig", Symbol() + Period() + " : long signal @ " + DoubleToStr(Bid, Digits));
         prev_time = Time[0];
      }
   }
   if (val1[1] > 0.0 && val1[1] < 10000.0) {
      if (alerts && prev_time != Time[0]) {
         Alert("Trendsig" + Symbol() + Period() + " : short signal @ " + DoubleToStr(Bid, Digits));
         SendMail("Trendsig", Symbol() + Period() + " : short signal @ " + DoubleToStr(Bid, Digits));
         prev_time = Time[0];
      }
   }
   return (0);
}