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

 

Баг-  Фантомный код индикатора

Есть индикатор, есть эскперт работающий от него. Меняется код индикатора. Перекомпилируется.  Изменения индикатора наглядно видны на графике. Эксперт прогоняется в тестере-  но как будто код не менялся . Тот же самый результат.

Можно даже удалить ex5 индикатора. В тестере можно  продолжать прогонять эсксперта (в котором чётко указан именно этот ,удаленный ex5 ) , как ни в чём не бывало. Ну откуда он берет файл для исполнения , из эфира????

Вот если перезагрузить терминал и прогнать  тестер после этого, то он уже увидит новый код. (и выкинет ошибку если ex5 отсутствует)


Пробовал заставить видеть новый код по разному - перелогинил терминал(без перезагруза), перекомпилировал сам эскперт. Менял параметры эксперта в тестере . Ничего не помогает, кроме перегруза терминала

 
Max B #:

Баг-  Фантомный код индикатора

Есть индикатор, есть эскперт работающий от него. Меняется код индикатора. Перекомпилируется.  Изменения индикатора наглядно видны на графике. Эксперт прогоняется в тестере-  но как будто код не менялся . Тот же самый результат.

Можно даже удалить ex5 индикатора. В тестере можно  продолжать прогонять эсксперта (в котором чётко указан именно этот ,удаленный ex5 ) , как ни в чём не бывало. Ну откуда он берет файл для исполнения , из эфира????

Вот если перезагрузить терминал и прогнать  тестер после этого, то он уже увидит новый код. (и выкинет ошибку если ex5 отсутствует)


Пробовал заставить видеть новый код по разному - перелогинил терминал(без перезагруза), перекомпилировал сам эскперт. Менял параметры эксперта в тестере . Ничего не помогает, кроме перегруза терминала

Сами же отвечаете на свой вопрос. Если что то удаляете, а оно появляется, значит где то сохраняется.))) При загрузке терминала происходит подтягивание из профиля всего окружения из последнего состояния. Это как бы Вы заново набросили все советники и индикаторы на окна терминала с заданными параметрами. В Вашем случае перекомпилировать нужно и советник или его убрать и заново накинуть. Он (советник) уже подтянул хендлы и данные старого варианта и их не пересчитывает.

 
Valeriy Yastremskiy #:

Сами же отвечаете на свой вопрос. Если что то удаляете, а оно появляется, значит где то сохраняется.))) При загрузке терминала происходит подтягивание из профиля всего окружения из последнего состояния. Это как бы Вы заново набросили все советники и индикаторы на окна терминала с заданными параметрами. В Вашем случае перекомпилировать нужно и советник или его убрать и заново накинуть. Он (советник) уже подтянул хендлы и данные старого варианта и их не пересчитывает.

Советник в терминале ни на чём не висит.  Только тестер стратегий его пускает. В самом советнике есть deinit где я  IndicatorRelease(handle_mtf_Sys);   Перекомпилировать советник пробовал - не помогает.  Всё равно каким то образом берёт фантомный код

 
Max B #:

Советник в терминале ни на чём не висит.  Только тестер стратегий его пускает. В самом советнике есть deinit где я  IndicatorRelease(handle_mtf_Sys);   Перекомпилировать советник пробовал - не помогает.  Всё равно каким то образом берёт фантомный код

 В тестере помимо вкладки Настройки есть еще вкладка Параметры. Проверьте их, возможно там по умолчанию остались старые значения. Если дело не в этом тоже, то тогда да, это баг, месяца 2 назад было тоже самое, потом прошло, не знаю, с чем было связано.
 
Max B #:

Советник в терминале ни на чём не висит.  Только тестер стратегий его пускает. В самом советнике есть deinit где я  IndicatorRelease(handle_mtf_Sys);   Перекомпилировать советник пробовал - не помогает.  Всё равно каким то образом берёт фантомный код

Сперва индикатор компилируете, потом советник? и советник берет данные старого индикатора? Если так, то баг видимо. Советники не висят, а работают в окне чарта терминала. И штатное закрытие запоминает и кэширует состояние всех чартов. Возможно даже с физическими файлами. Не знаю. Но судя по багу возможно так.

Если удален екхешник, а мкл файл есть, то при загрузке терминала происходит компиляция всех мкл файлов с отсутствующими экзешниками. Это как один из способов без метаэдитора откомпилировать и получить экзешники мкл файлов - перезагрузить терминал.

 
Wizard #:
 В тестере помимо вкладки Настройки есть еще вкладка Параметры. Проверьте их, возможно там по умолчанию остались старые значения. Если дело не в этом тоже, то тогда да, это баг, месяца 2 назад было тоже самое, потом прошло, не знаю, с чем было связано.

Параметры там запомниаются - но они в данном случае не меняются и не имеют значения. Меняется сам код внутри индикатора. В общем баг наприятный - каждый раз перед прогоном тестера терминал приходится перезагружать. 

Valeriy Yastremskiy #:

Сперва индикатор компилируете, потом советник? и советник берет данные старого индикатора? Если так, то баг видимо. Советники не висят, а работают в окне чарта терминала. И штатное закрытие запоминает и кэширует состояние всех чартов. Возможно даже с физическими файлами. Не знаю. Но судя по багу возможно так.

В том то и дело советник ни на одном чарте на висит . Он только в тестере стратегий выбран. Мне на данном этапе волнует отладка в тестере стратегий а не в терминале. Не должен он по идее нигде кэшироваться.

При запуске тестера стратегий должна грузиться последняя скомпилированная версия индикатора и советника, а не непонятно какой фантом непонятно откуда. Логично?

 
Max B #:

Параметры там запомниаются - но они в данном случае не меняются и не имеют значения. Меняется сам код внутри индикатора. В общем баг наприятный - каждый раз перед прогоном тестера терминал приходится перезагружать. 

В том то и дело советник ни на одном чарте на висит . Он только в тестере стратегий выбран. Мне на данном этапе волнует отладка в тестере стратегий а не в терминале. Не должен он по идее нигде кэшироваться.

При запуске тестера стратегий должна грузиться последняя скомпилированная версия индикатора и советника, а не непонятно какой фантом непонятно откуда. Логично?

Сделайте воспроизводимый пример бага и выложите сюда с кодом и порядком действий. Возможно разрабы обратят внимание.)
 

Хочу сделать раскрывающийся список валютных пар и инструментов (свои пары) в окне настроек входных параметров советника. Как это можно сделать?

Второй вопрос: как корректнее будет запись...

Так:

double stop = SymbolInfoDouble(_Symbol, SYMBOL_ASK) - NormalizeDouble(100*_Point, _Digits);

или так:

double stop = NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK) - 100*_Point, _Digits);

???

Третий вопрос. Можно ли нормализовывать цены 2-3 раза подряд? Не скажется на работе?

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

 
Wizard #:

Хочу сделать раскрывающийся список валютных пар и инструментов (свои пары) в окне настроек входных параметров советника. Как это можно сделать?

Второй вопрос: как корректнее будет запись...

Так:

или так:

???

Третий вопрос. Можно ли нормализовывать цены 2-3 раза подряд? Не скажется на работе?

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

Эту конструкцию NormalizeDouble нужно по возможности избегать, она тяжёлая для обработки.

 
Vitaly Muzichenko #:

Эту конструкцию NormalizeDouble нужно по возможности избегать, она тяжёлая для обработки.

Понял. А если я не хочу использовать функцию NormalizePrice класса CSymbolInfo (стараюсь избегать библиотек, если можно), есть альтернатива?

Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo
  • www.mql5.com
CSymbolInfo - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Причина обращения: