Rosh !! спасай ((

 
Эксперт глючит:

2005.11.22 00:46:50 _Dynamic II %Change CADJPY,H1: zero divide

_Dynamic II %Change - это индикатор, в эксперте вызывается как "айКастом", тело привожу:

//+------------------------------------------------------------------+
//|                                          _Dynamic II %Change.mq4 |
//|                                                        Dark Monk |
//|                                              http://ru |
//+------------------------------------------------------------------+
#property copyright "Dark Monk"
#property link      "ru"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DarkGray
//---- input parameters
//---- buffers
double PercentChange[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- % Change indicator mapping
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,PercentChange);
   IndicatorShortName("% Change ("+1+")");
   SetIndexLabel(0,"% Change ("+1+")");
   return(0);
  }
//+------------------------------------------------------------------+
//| _Dynamic II % Change indicator                                   |
//+------------------------------------------------------------------+
int start()
  {
   double mPriceCurrent,mPricePrevious;
   int limit;
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;  

   for(int i=0; i<limit; i++)
     {
      mPriceCurrent=(High[i]+Low[i])/2;
      mPricePrevious=(High[i+1]+Low[i+1])/2;
      PercentChange[i]=((mPriceCurrent-mPricePrevious)/mPricePrevious)*1000;
     }
//---- done
   return(0);
  }
//+------------------------------------------------------------------+



где втупил??

 
деление на ноль вот тут: /mPricePrevious
 
деление на ноль вот тут: /mPricePrevious


Доброго времени суток, Ренат, я достаточно слаб в этом языке, если не затруднит, укажите чайнику пальцем на ...(всмысле где именно).

mPricePrevious=(High[i+1]+Low[i+1])/2; - здесь? плюсы на минусы поменять?
 
Наверно, ты хотел так.
//+------------------------------------------------------------------+
//|                                                    Dark Monk.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.ru/forum/6298/"
#property indicator_level1 0.0
//+------------------------------------------------------------------+
//|                                          _Dynamic II %Change.mq4 |
//|                                                        Dark Monk |
//|                                              http://ru |
//+------------------------------------------------------------------+
#property copyright "Dark Monk"
#property link      "ru"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DarkGray
//---- input parameters
//---- buffers
double PercentChange[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- % Change indicator mapping
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,PercentChange);
   IndicatorShortName("% Change ("+1+")");
   SetIndexLabel(0,"% Change ("+1+")");
   return(0);
  }
//+------------------------------------------------------------------+
//| _Dynamic II % Change indicator                                   |
//+------------------------------------------------------------------+
int start()
  {
   double mPriceCurrent,mPricePrevious;
   int limit;
   int counted_bars=IndicatorCounted();
   if (counted_bars<0) return(-1);
   if (counted_bars>0) limit=Bars-counted_bars;
   if (counted_bars==0) limit=Bars-1;
   limit--;  

   for(int i=limit; i>=0; i--)
     {
      if (i<=3)Print("Bars=",Bars,"  counted_bars=",counted_bars,"   i=",i,"   limit=",limit);
      mPriceCurrent=(High[i]+Low[i])/2.0;
      mPricePrevious=(High[i+1]+Low[i+1])/2.0;
      PercentChange[i]=((mPriceCurrent-mPricePrevious)/mPricePrevious)*1000.0;
     }
//---- done
   return(0);
  }
//+------------------------------------------------------------------+
 
деление на ноль вот тут: /mPricePrevious

      mPricePrevious=(High[i+1]+Low[i+1])/2;


При каких условиях High и Low могут быть равны нулю? Или один из них становится отрицательным?

 
деление на ноль вот тут: /mPricePrevious

      mPricePrevious=(High[i+1]+Low[i+1])/2;


При каких условиях High и Low могут быть равны нулю? Или один из них становится отрицательным?



При условии, что их нет, а потому (0+0)/2=0
 
не факт ((

2005.11.22 01:16:46 _Dynamic II %Change EURUSD,H1: zero divide
 
не факт ((

2005.11.22 01:16:46 _Dynamic II %Change EURUSD,H1: zero divide


а сейчас нет (( ,, меня прёт, или терминал??
 
не факт ((

2005.11.22 01:16:46 _Dynamic II %Change EURUSD,H1: zero divide


а сейчас нет (( ,, меня прёт, или терминал??


виноват, советники при релоаде запрещаются... всё там же ((
 

При каких условиях High и Low могут быть равны нулю? Или один из них становится отрицательным?


При условии, что их нет, а потому (0+0)/2=0


Спасибо.

Кстати, неплохо бы в словаре эту информацию озвучить, раз уж, в самом деле, нужна такая проверка на ноль. Ни в описании, ни в примере ее нет:


double High[]


Returns the highest price of the bar referenced.

int handle, bars=Bars;
handle=FileOpen("file.csv", FILE_CSV|FILE_WRITE, ';');
if(handle>0)
{
// write table columns headers
FileWrite(handle, "Time;Open;High;Low;Close;Volume");
// write data
for(int i=0; i<bars; i++)
FileWrite(handle, Time[i], Open[i], High[i], Low[i], Close[i], Volume[i]);
FileClose(handle);
}

 
Не за что (если спасибо мне). Я пришел к выводу, что если чего то нет, то жди нуля. По дефолту.
Причина обращения: