www.pudn.com > RedbinaryoptionsDL.zip > AutoFibo_BO.mq4, change:2010-10-06,size:2850b


#property copyright "Copyright ゥ 2009, Julien Loutre" 
#property link      "http://www.forexcomm.com" 
#property  indicator_chart_window 
#property indicator_buffers  2 
#property  indicator_color1  LightSkyBlue 
#property  indicator_color2  Plum 
  
extern int       Band_Period   = 48; 
extern int       price_type    = 0; // 0 = High/Low | 1 = Open/Close 
  
//---- buffers 
double WWBuffer1[]; 
double WWBuffer2[]; 
double WWBuffer3[]; 
double ATR; 
int init() { 
   IndicatorBuffers(2); 
   SetIndexStyle(0,DRAW_LINE,1); 
   SetIndexStyle(1,DRAW_LINE,1); 
   SetIndexLabel(0, "High"); 
   SetIndexLabel(1, "Low"); 
   SetIndexBuffer(0, WWBuffer1); 
   SetIndexBuffer(1, WWBuffer2); 
   IndicatorDigits(Digits+2); 
   IndicatorShortName("Automatic Fibonacci"); 
   ObjectCreate("AutoFibo", OBJ_FIBO, 0, Time[0],High[0],Time[0],Low[0]); 
   return(0); 
} 
int deinit() { 
   ObjectDelete("AutoFibo"); 
} 
int start() { 
   int    counted_bars=IndicatorCounted(); 
   int    limit,i; 
   if(counted_bars>0) counted_bars--; 
   limit=Bars-counted_bars; 
   for(i=limit-1; i>=0; i--) { 
      WWBuffer1[i] = getPeriodHigh(Band_Period,i); 
      WWBuffer2[i] = getPeriodLow(Band_Period,i); 
      ObjectSet("AutoFibo", OBJPROP_TIME1, Time[Band_Period]); 
      ObjectSet("AutoFibo", OBJPROP_TIME2, Time[0]); 
      if (Open[Band_Period] < Open[0]) { // Up 
         ObjectSet("AutoFibo", OBJPROP_PRICE1, getPeriodHigh(Band_Period,i)); 
         ObjectSet("AutoFibo", OBJPROP_PRICE2, getPeriodLow(Band_Period,i)); 
      } else { 
         ObjectSet("AutoFibo", OBJPROP_PRICE1, getPeriodLow(Band_Period,i)); 
         ObjectSet("AutoFibo", OBJPROP_PRICE2, getPeriodHigh(Band_Period,i)); 
      } 
   } 
   return(0); 
} 
double getPeriodHigh(int period, int pos) { 
   int i; 
   double buffer = 0; 
   for (i=pos;i<=pos+period;i++) { 
      if (price_type == 0) { 
         if (High[i] > buffer) { 
            buffer = High[i]; 
         } 
      } else { 
         if (Open[i] > Close[i]) { // Down 
            if (Open[i] > buffer) { 
               buffer = Open[i]; 
            } 
         } else { 
            if (Close[i] > buffer) { 
               buffer = Close[i]; 
            } 
         } 
      } 
   } 
   return (buffer); 
} 
double getPeriodLow(int period, int pos) { 
   int i; 
   double buffer = 100000; 
   for (i=pos;i<=pos+period;i++) { 
      if (price_type == 0) { 
         if (Low[i] < buffer) { 
            buffer = Low[i]; 
         } 
      } else { 
         if (Open[i] > Close[i]) { // Down 
            if (Close[i] < buffer) { 
               buffer = Close[i]; 
            } 
         } else { 
            if (Open[i] < buffer) { 
               buffer = Open[i]; 
            } 
         } 
      } 
   } 
   return (buffer); 
}

2018无需申请注册送58体验金