Ошибки, баги, вопросы - страница 2621

 

Наткнулся на непонятку в очевидном вроде месте. Вот такой скрипт:

double Sigma = 1.0;
double Smax = 5.0;
double Step = 2;


void OnStart()
{
  int scount = 1;

  double s = Sigma;

  for( ; s < Smax; scount++)
  {
    s *= Step;
    Print(scount, " ", s);
  }
  
  Print(scount);
}

почему-то заканчивается выводом scount, равным 4, хотя по идее должно быть 3. Инкремент цикла после успешной проверки должен выполняться только при s равном 1.0, 2.0, 4.0. Далее в s лежит уже 8, что больше 5.

 
Stanislav Korotky:

Наткнулся на непонятку в очевидном вроде месте. Вот такой скрипт:

почему-то заканчивается выводом scount, равным 4, хотя по идее должно быть 3. Инкремент цикла после успешной проверки должен выполняться только при s равном 1.0, 2.0, 4.0. Далее в s лежит уже 8, что больше 5.

в операторе for инкремент производится после окончания тела цикла  https://www.mql5.com/ru/docs/basis/operators/for

for(выражение1; выражение2; выражение3оператор;

выражение1;
while(выражение2)
  {
   оператор;
   выражение3;
  };

погуглил первую статью, а вдруг, что не помню - в С++ так же все работает  https://en.cppreference.com/w/cpp/language/for

init_statement
while ( condition ) {
statement
iteration_expression ;
}
 
Igor Makanu:

в операторе for инкремент производится после окончания тела цикла https://www.mql5.com/ru/docs/basis/operators/for

for(выражение1; выражение2; выражение3)

Вот именно. Переменная цикла должна проходить значения 1, 2, 3. Потому что после третьего умножения условие не выполняется: 8 > 5 - это видно из последнего принта из цикла.

 
Stanislav Korotky:

Вот именно. Переменная цикла должна проходить значения 1, 2, 3. Потому что после третьего умножения условия не выполняется: 8 > 5 - это видно из последнего принта из цикла.

да, но тело цикла же выполнено? вот и происходит инкремент после окончания тела "выражение3", затем идет проверка - "выражение2"

 
Igor Makanu:

да, но тело цикла же выполнено? вот и происходит инкремент после окончания тела "выражение3", затем идет проверка - "выражение2"

Пятница, да ещё и последняя в году :-/

 

1- Перестали запускаться прогоны результатов тестирования. Место на диске есть. Всё есть. То, что за несколько минут до этого запускалось, вдруг перестало. 

Нажимаю кнопку старт, или кликаю по результату оптимизации и ничего не происходит. Такая вот надпись только появляется:

2019.12.29 11:44:51.402 Tester single pass started

А один раз появилась такая надпись:

2019.12.29 11:41:56.053 Tester debug version of "Name.ex5" detected

Хотя никакого дебага не включено и этот эксперт вообще не открыт в редакторе и редактор выключен, ничего не компилировалось и не изменялось.

Параметры из оптимизации в настройки он успешно переносит и на том визуально, всё и останавливается.


2- И кнопка "стоп" в форварде барахлит. То цвет не меняет с розового на зелёный, то просто терминал попадает в промежуточное состояние, когда ничего не делает, но ничего нельзя выбрать на вкладке "настройки", т.к. там всё неактивно.

Повторное нажатие кнопки стоп приводит к запуску прогона. И можно его остановить до форварда и тогда всё нормально.


3- И ещё "фишка" - оптимизация начинает работать в несколько раз медленнее. Просто со временем. Лечится перезапуском терминала.... Что-то где-то накапливается... Очистка лога и кэша на это замедление, вроде не влияет. Но перезапуск сильно влияет!
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
Михаил:

Перестали запускаться прогоны результатов тестирования. Место на диске есть. Всё есть. То, что за несколько минут до этого запускалось, вдруг перестало. 

Нажимаю кнопку старт, или кликаю по результату оптимизации и ничего не происходит. Такая вот надпись только появляется:

2019.12.29 11:44:51.402 Tester single pass started

А один раз появилась такая надпись:

2019.12.29 11:41:56.053 Tester debug version of "Name.ex5" detected

Хотя никакого дебага не включено и этот эксперт вообще не открыт в редакторе и редактор выключен, ничего не компилировалось и не изменялось.

Параметры из оптимизации в настройки он успешно переносит и на том визуально, всё и останавливается.


И кнопка "стоп" в форварде барахлит. То цвет не меняет с розового на зелёный, то просто терминал попадает в промежуточное состояние, когда ничего не делает, но ничего нельзя выбрать на вкладке "настройки", т.к. там всё неактивно.

Повторное нажатие кнопки стоп приводит к запуску прогона. И можно его остановить до форварда и тогда всё нормально.


И ещё "фишка" - оптимизация начинает работать в несколько раз медленнее. Просто со временем. Лечится перезапуском терминала.... Что-то где-то накапливается... Очистка лога и кэша на это замедление, вроде не влияет. Но перезапуск сильно влияет!

Компилировать release-версию нужно по F7. Вы же нажали F5 и скомпилировали debug-версию

 
Artyom Trishkin:

Компилировать release-версию нужно по F7. Вы же нажали F5 и скомпилировали debug-версию

Не, я компилирую мышкой и кнопкой "Компилировать". Но к описанному случаю это не относится, т.к. этот эксперт позавчера был скомпилирован. Затем он успешно оптимизировался и прогоняллся, несколько раз. И потом выдал такой глюк. Перезагрузка терминала помогла...

То есть просто ощущение, что где-то копятся ошибки. Которые приводят к сбоям и тормозам. Сброс (перезапуск) лечит...
 
И ещё - чем дальше (по датам) форвард прогон, от даты начала форварда, тем медленнее он происходит. Первое время быстро идёт, а потом всё медленнее и медленнее. А потом уже катастрофически медленнее. Неплохо бы это поправить)
 
Михаил:
И ещё - чем дальше (по датам) форвард прогон, от даты начала форварда, тем медленнее он происходит. Первое время быстро идёт, а потом всё медленнее и медленнее. А потом уже катастрофически медленнее. Неплохо бы это поправить)

Нет кода для воспроизведения - нет реакции

Причина обращения: