Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нашел прибыльную стратегию? Заведи торговый сигнал и заработай на этом!
Evgeniy Zhdan
4631
Evgeniy Zhdan 2015.02.07 15:02 

Странная проблема с записью значений в массив.

Надо: просто записать значения размеров свечей в массив. 

При любых раскладах, терминал пишет:  Testing pass stopped due to a critical error in the EA.

Что делаю не правильно? 


  int days=15;
  double summa[];  

      
   for(int i=0; i<days-1; i++)
   {
      summa[i] = iHigh(Symbol(),PERIOD_D1,i)-iLow(Symbol(),PERIOD_D1,i);
   } 
Sergey Eremin
4190
Sergey Eremin 2015.02.07 15:11  
remon:

Странная проблема с записью значений в массив.

Надо: просто записать значения размеров свечей в массив. 

При любых раскладах, терминал пишет:  Testing pass stopped due to a critical error in the EA.

Что делаю не правильно? 


Сходу (без попытки запуска кода) можно сказать, что у Вас как минимум не задаётся размер массива. Или объявлять его заданного размера, или же задавать размер функцией ArrayResize.

Попробуйте так: 

  int days=15;
  double summa[];  
  ArrayResize(summa, days);
      
   for(int i=0; i<days-1; i++)
   {
      summa[i] = iHigh(Symbol(),PERIOD_D1,i)-iLow(Symbol(),PERIOD_D1,i);
   } 

Кроме того, не уверен что имелось в виду в оригинале, но скорее всего следует писать или for(int i=0; i<=days-1; i++), или же for(int i=0; i<days; i++).

Иначе выходит, что вы проходите 14 элементов: 0..13 (т.к. 14 уже >= 15-1) .

Evgeniy Zhdan
4631
Evgeniy Zhdan 2015.02.07 15:18  
ENSED:

Сходу (без попытки запуска кода) можно сказать, что у Вас как минимум не задаётся размер массива. Или объявлять его заданного размера, или же задавать размер функцией ArrayResize.

Попробуйте так: 

Кроме того, не уверен что имелось в виду в оригинале, но скорее всего следует писать или for(int i=0; i<=days-1; i++), или же for(int i=0; i<days; i++).

Иначе выходит, что вы проходите 14 элементов: 0..13 (т.к. 14 уже >= 15-1) .

ENSED:

Сходу (без попытки запуска кода) можно сказать, что у Вас как минимум не задаётся размер массива. Или объявлять его заданного размера, или же задавать размер функцией ArrayResize.

Попробуйте так: 

Кроме того, не уверен что имелось в виду в оригинале, но скорее всего следует писать или for(int i=0; i<=days-1; i++), или же for(int i=0; i<days; i++).

Иначе выходит, что вы проходите 14 элементов: 0..13 (т.к. 14 уже >= 15-1) .

Спасибо, помогло  ArrayResize. Насчет второго замечания, я знаю. Это просто был сырой пример.

Спасибо за помощь! 

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