Вложенные циклы - страница 2

 
Очень интересный глюк обнаружен. Переключаю таймфрем - неправильно, компилирую - правильно. Заморочка из-за ArraySetAsSeries() или что-то с инициализацией массива при переключен таймфрейма. 
 
Dmitry Fedoseev:
Очень интересный глюк обнаружен. Переключаю таймфрем - неправильно, компилирую - правильно. Заморочка из-за ArraySetAsSeries() или что-то с инициализацией массива при переключен таймфрейма. 

хм, по идее переключение ТФ это полный перезагруз советника. Не понимаю как ту глюки возможны.

 

В ините перед заполнением массива добавьте:

   ArraySetAsSeries(PercentArr,false);
   PercentArr[0] = 100;
   PercentArr[1] = 78.6;
   PercentArr[2] = 61.8;
   PercentArr[3] = 50;
   PercentArr[4] = 38.2;
   PercentArr[5] = 23.6;
   PercentArr[6] = 0; 

А еще лучше SetAsSerias() вообще не использовать для данной задачи.

 
Roman Meskhidze:

хм, по идее переключение ТФ это полный перезагруз советника. Не понимаю как ту глюки возможны.

Но факт есть факт.

 
Dmitry Fedoseev:

В ините перед заполнением массива добавьте:

А еще лучше SetAsSerias() вообще не использовать для данной задачи.

Ох уже эти подводные камни.

Наверное лучше написать свою функцию для переворота.

 
Roman Meskhidze:

Ох уже эти подводные камни.

Наверное лучше написать свою функцию для переворота.

Если надо перевернуть, то писать 6-i. Массивы лучше не трогать без особой надобности.

 
Dmitry Fedoseev:

Если надо перевернуть, то писать 6-i. Массивы лучше не трогать без особой надобности.

Понял, еще раз большое спасибо

 
Roman Meskhidze:

хм, по идее переключение ТФ это полный перезагруз советника. Не понимаю как ту глюки возможны.

Нет. Здесь обсуждалось и был получен ответ от СД.

Инициализация глобальных переменных программы и другие полезные знания.
Инициализация глобальных переменных программы и другие полезные знания.
  • 2016.11.30
  • www.mql5.com
Встал на форуме недавно вопрос по поводу верной/неверной инициализации глобальных переменных в программах...
 
Artyom Trishkin:

Нет. Здесь обсуждалось и был получен ответ от СД.

Понял, получается в onInit() нужно сбрасывать все переменные.

 
Roman Meskhidze:

Понял, получается в onInit() нужно сбрасывать все переменные.

На усмотрение логики. Те, что должны быть сброшены - инициализируются в OnInit(), те, что не должны сбрасываться - инициализируются при объявлении.

Это правило только для советников. Индикатор при смене таймфрейма запускается новый. Старый удаляется.