Скачать MetaTrader 5

Почему iMAOnArray, iStdDevOnArray в одних индикаторах работают, а в других нет?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
NewPerson
9
NewPerson  

Здравствуйте! Помогите, пожалуйста.

Не работает iStdDevOnArray. В другом индикаторе работает нормально. Индикаторы написаны идентично. Не понимаю в чём проблема. Причём в неработающем коде если поставить кBuffer1 и kBuffer2 в один for, то показывает две полосы с разницей в 1 миллиард пунктов, а если в два разных, то только один kBuffer1 правильно.

-------------------------------------------------------------------------------------------------------------------
Рабочий код:
int start()
  {
   int i,counted_bars=IndicatorCounted();
   double ma1,ma2,ma3;
//----
   if(Bars<=LWperiod) return(0);

   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;

   for(i=0; i<limit; i++)
     {
      ma1=iMA(NULL,0,LWperiod,0,0,1,i);
      ma2=iMA(NULL,0,LWperiod,0,0,2,i);
      ma3=iMA(NULL,0,LWperiod,0,0,3,i);
      kBuffer1[i]=(ma2-ma1)*K;
      kBuffer2[i]=(ma3-ma1)*K;
     }
   for(i=0; i<limit; i++)
     {
      bBuffer[i]=kBuffer1[i+1]+Open[i];
      sBuffer[i]=kBuffer2[i+1]+Open[i];

     }
   for(i=0; i<limit; i++)
      BuyBuffer[i]=iMAOnArray(bBuffer,0,iMAperiod,0,iMAmethod,i);
   for(i=0; i<limit; i++)
      SellBuffer[i]=iMAOnArray(sBuffer,0,iMAperiod,0,iMAmethod,i);

   return(0);

  }

---------------------------------------------------------------------------------------------------------------------------

Неработающий код:

int start()
  {
   int i,counted_bars=IndicatorCounted();

   if(Bars<=fastPeriod) return(0);

   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;

   for(i=0; i<limit; i++)
     {
      kBuffer1[i]=MathLog(Close[i]/Close[i+1]);
     }
   for(i=0; i<limit; i++)
      kBuffer2[i]= iStdDevOnArray(kBuffer1,0,fastPeriod,shift,method,i);

   return(0);

  }

-------------------------------------------------------------------------------------------------------
. ... Rick D. ... .
1176
. ... Rick D. ... .  
Может дело в init() ? Например разные пустые значения для буферов (0 и EMPTY_VALUE) ?
Dmitry Fedoseev
43506
Dmitry Fedoseev  

Попробуйте для эксперимента заменить 

kBuffer2[i]= iStdDevOnArray(kBuffer1,0,fastPeriod,shift,method,i);

на

kBuffer2[i]=kBuffer1[i]; 

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий