Скачать MetaTrader 5

iEnvelopesOnArray всегда дает 0

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

Приветствую всех,

не могу понять в чем ошибка

есть массив  ssld в нем все данные заполнены

но вот при вызове  iEnvelopesOnArray всегда выдает 0 

 

      double val1=iEnvelopesOnArray(ssld,ENVma_period,ENVma_period,MODE_SMA,0,ENVdeviation,MODE_MAIN,i);
      Print("i="+i+" val1="+val1+" ssld="+ssld[i]);
2015.01.23 13:16:10.123 EURGBP,M1: i=5009 val1=0 ssld=0.76832
2015.01.23 13:16:10.123 EURGBP,M1: i=5010 val1=0 ssld=0.76835
2015.01.23 13:16:10.123 EURGBP,M1: i=5011 val1=0 ssld=0.76838

2015.01.23 13:16:10.105 EURGBP,M1: initialized

 

 

и деинициализируется после 3 проходов 

в чем может быть трабл?  


Vladislav Andruschenko
112720
Vladislav Andruschenko  
2015.01.23 13:22:23.360 Access violation read to 0x09986000

Victor Nikolaev
Модератор
15650
Victor Nikolaev  
ArraySetAsSeries() не пробовали использовать.
Vladislav Andruschenko
112720
Vladislav Andruschenko  

пробовал, не получается. 

перечитал весь форум, да пишут об обратном цикле, но почему то у меня просто вылетает ошибка.

Vladislav Andruschenko
112720
Vladislav Andruschenko  

вот грубо говоря код 

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

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=MathMin(Bars-counted_bars,Bars-1);
   ArrayResize(ssld_temp,100);
   ArraySetAsSeries(ssld_temp,true);

   for(i=limit;i>=0;i--)
     {
      double hiPrice = iSmooth(High[i+1],TromPeriod,SmoothPhase,i+1, 0);
      double loPrice = iSmooth(Low[i+1] ,TromPeriod,SmoothPhase,i+1,10);
      double clPrice = iSmooth(Close[i] ,TromPeriod,SmoothPhase,i  ,20);


      Hlv[i]=Hlv[i+1];
      if(clPrice>hiPrice) Hlv[i] =  1;
      if(clPrice<loPrice) Hlv[i] = -1;

      if(Hlv[i]==-1)
        {
         ssld[i] = hiPrice;
         sslu[i] = loPrice;
        }
      else
        {
         ssld[i] = loPrice;
         sslu[i] = hiPrice;
        }
     }
   ArraySetAsSeries(ssld_temp,true);

   for(i=0; i<100; i++)
     {

      ssld_temp[i]=ssld[i];
     }

   for(i=0; i<100; i++)
     {

      double val1=iEnvelopesOnArray(ssld_temp,0,ENVma_period,MODE_SMA,0,ENVdeviation,MODE_UPPER,i);
      envelopes[i]=val1;
      Print("ArraySize ="+ArraySize(ssld_temp)+"i="+i+" ssld_temp="+ssld_temp[i]+" ssld="+ssld[i]+" envelopes="+envelopes[i]);
     }
   return(0);
  }

 

индикатор считает и записывает свои буферы - далее после расчетов я его буферы 100 штук копирую в свой массив.

далее пытаюсь рассчитать  iEnvelopesOnArray по этому массиву. 

но мне выдает всегда 0  

Vladislav Andruschenko
112720
Vladislav Andruschenko  
Access violation read to 0x04781000 
ArraySize =100i=95 ssld_temp=0.75036 ssld=0.75036 envelopes=0
ArraySize =100i=96 ssld_temp=0.75046 ssld=0.75046 envelopes=0
ArraySize =100i=97 ssld_temp=0.75065 ssld=0.75065 envelopes=0
 initialized

Vladislav Andruschenko
112720
Vladislav Andruschenko  
вот и я не пойму в чем дело 
Victor Nikolaev
Модератор
15650
Victor Nikolaev  
  for(i=0; i<100; i++)
     {

      ssld_temp[i]=ssld[i];
     }

   for(i=0; i<100; i++)
     {

      double val1=iEnvelopesOnArray(ssld_temp,0,ENVma_period,MODE_SMA,0,ENVdeviation,MODE_UPPER,i);
      envelopes[i]=val1;
      Print("ArraySize ="+ArraySize(ssld_temp)+"i="+i+" ssld_temp="+ssld_temp[i]+" ssld="+ssld[i]+" envelopes="+envelopes[i]);
     }
Копируете 100 элементов и для 100 элементов пытаетесь сделать расчет. Если ENVma=100, то можно получить только одно значение. Для других не хватает данных
Alexander
3100
Alexander  

Смотрим. Какой билд терминала ?
Приложите, пожалуйста, рабочий код для воспроизведения

Vladislav Andruschenko
112720
Vladislav Andruschenko  
Vinin:
Копируете 100 элементов и для 100 элементов пытаетесь сделать расчет. Если ENVma=100, то можно получить только одно значение. Для других не хватает данных
в том то и дело что ENVma_period = 3
Vladislav Andruschenko
112720
Vladislav Andruschenko  

билд 765

в том то и дело что любой код, вне зависимости от индикатора - любой код не работает  

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