//+------------------------------------------------------------------+
//|                                              BrainTrend1Stop.mq4 |
//|                                     BrainTrading Inc. System 7.0 |
//|                                      http://www.braintrading.com |
//+------------------------------------------------------------------+
#property copyright "Copyright � 2005, MetaQuotes Software Corp."
#property link      "http://www.braintrading.comt"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Magenta
#property indicator_color2 Aqua
//---- input parameters
extern int       NumBars=500;
extern int       EnableAlerts=0;
extern int       SignalID=0;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,115);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,115);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(1,0.0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//---- 

double    RISK=3;
double    value2=0;
double    value3=0;
double    value11=0;
double    x1=70;
double    x2=30;
double    i1=0;
double    TrueCount=0;
double    Counter=0;
double    Range=0;
double    AvgRange=0;
double    MRO1=0;
double    MRO2=0;
double    val1=0;
double    val2=0;
int    shift=0;
double    p=0;
double    r=0;
double    s=1.5;
double    value4=0;
double    value5=0;
double    abrs=0;
double    f=7;
double    d=2.3;
double    range1=0;
double    r1=0;
double    h11=0;
double    h12=0;
double    h13=0;
double    const=0;
double    orig=0;
double    st=0;
double    h2=0;
double    h1=0;
double    h10=0;
double    sxs=0;
double    sms=0;
double    temp=0;
double    h5=0;
double    a1=0;
double    bs=0;
double    bs1=0;
double    r1s=0;
double    r2s=0;
double    r3s=0;
double    r4s=0;
double    pt=0;
double    pts=0;
double    r2=0;
double    r3=0;
double    r4=0;
double    tt=0;

st=1;
if (st == 1)
   {
   value11 = 9;
   x1 = 53;
   x2 = 47;
   if (Bars < abrs ) abrs = Bars - 11; else abrs = NumBars - 11;
  
   shift=abrs;

while(shift>=0) 
   
      {
      Range = iATR(NULL,0,f,shift);
      range1 = iATR(NULL,0,10,shift);
      value2 = iStochastic(NULL,0,value11,value11,1,0,0,0,shift);
     
      val1 = 0;
      val2 = 0;
      if (value2 < x2 && MathAbs(Close[shift] - Close[shift + 2]) > Range / d && p != 1 )
         {
         value3 = High[shift] + range1 * s / 4;
         val1 = value3;
         p = 1;
         r = val1;
         bs = r;
         ExtMapBuffer1[shift]=val1;
         ExtMapBuffer2[shift]=0; 
         
         
         }
      if (value2 > x1 && MathAbs(Close[shift] - Close[shift + 2]) > Range / d && p != 2 ) 
         {
         value3 = Low[shift] - range1 * s / 4;
         val2 = value3;
         p = 2;
         r = val2;
         bs = r;
         ExtMapBuffer1[shift]=0;
         ExtMapBuffer2[shift]=val2; 
         
         
         }
      value4 = High[shift] + range1 * s;
      value5 = Low[shift] - range1 * s;
      if (val1 == 0 && val2 == 0 && p == 1 )
         {
         if (value4 < r) 
            {
            r = value4;
            bs = r;
           ExtMapBuffer1[shift]=r;
           ExtMapBuffer2[shift]=0; 
           
            }
               else
            {
            r = r;
            bs = r;
            ExtMapBuffer1[shift]=r;
            ExtMapBuffer2[shift]=0; 
           
            }
         }
      if( val1 == 0 && val2 == 0 && p == 2) 
         {
         if (value5 > r) 
            {
            r = value5;
            bs = r;
            ExtMapBuffer1[shift]=0;
            ExtMapBuffer2[shift]=r; 
          
            }
               else
            {
            r = r;
            bs = r;
            ExtMapBuffer1[shift]=0;
            ExtMapBuffer2[shift]=r;
            }
         }
         shift--;
      }

   }

if (EnableAlerts == 1)
   {
   if (bs > 0 && bs != bs1 )
      {
      bs1 = bs;
      a1 = FileOpen("alert1" + SignalID,";");
      FileWrite(a1,"BT1Stop value for " , Symbol() , " is " , bs , " Current Close=" , Close[0] , " M" + Period());
      FileClose(a1);
      }
   }

//----
   return(0);
  }
//+------------------------------------------------------------------+