Новая версия платформы MetaTrader 5 build 3550: улучшения и исправления - страница 25

 
elibrarius #:

В общем надо делать через NormalizeDouble , но если кто-то этого не сделает полчит такое же разное поведение в терминале и тестере.

Смысл нормализации. Поэтому обязательна.

Хорошо бы сделать поведение одинаковым.

Тестер все правильно делает. Кривые данные исправляет.

 

Сделал символ для воспроизедения проблемы с разной работой с ценами в тестере и в терминале. Просто в описании символа из 5 знаков сделал 4 знака. А файл с ценами осталися с 5 знаками после запятой.

Скрипт от @fxsaber сделал распечатку, что тестер округляет, а терминал отбрасывает 5-й знак (или ничего не делает, а просто показывает 4 знака). Слева терминал, справа тестер (часть цен в нем увеличена/округлена на 1 пт вверх)


Теперь проблему можно воспроизвести. Файлы приложил.

Новая версия платформы MetaTrader 5 build 3550: улучшения и исправления - Запустите в тестере любой индикатор. Попробуйте сделать строчное сравнение файлов полученных из OnCalculate.
Новая версия платформы MetaTrader 5 build 3550: улучшения и исправления - Запустите в тестере любой индикатор. Попробуйте сделать строчное сравнение файлов полученных из OnCalculate.
  • 2023.02.15
  • www.mql5.com
Чуть позже заметил и не совпадение тикового объема на баре 23 51. Реальные объемы и Low на показанном участке проверил - все совпадают. что Тестер насильно подгоняет бар под тиковый объем. Скорректируйте тиковые объемы и попробуйте снова этим советником
Файлы:
Desktop.zip  153 kb
 
fxsaber #:

Смысл нормализации. Поэтому обязательна.

Тестер все правильно делает. Кривые данные исправляет.

Тогда и терминал пусть так же делает. Должно же быть одинаковое поведение. А то получится успешная торговля в тестере и и сливная в терминале. Или наоборот.

 
elibrarius #:

Тогда и терминал пусть так же делает. Должно же быть одинаковое поведение.

Нет, терминал берет данные из БД, не эмулируя торговое окружение.

В Тестере всегда история генерируется. Терминал ничего не генерирует.

elibrarius #:

А то получится успешная торговля в тестере и и сливная в терминале. Или наоборот.

Со временем научитесь готовить кастомные символы, что будут идентичные результаты. Тестер не идеален, но работает правильно.
 
fxsaber #:

Нет, терминал берет данные из БД, не эмулируя торговое окружение.

В Тестере всегда история генерируется. Терминал ничего не генерирует.

Тогда надо внутри  CustomRatesUpdate,  CustomRatesReplace и возможно в тиковых функциях делать нормализацию по числу знаков символа. Чтобы тот кто не знает о таких тонкостях работы тестера и терминала, не получил такую же ситуацию как я.
После этого тестер будет совпадать с терминалом, в  любом случае.

Со временем научитесь готовить кастомные символы, что будут идентичные результаты. Тестер не идеален, но работает правильно.

Я то уже научился. Но будут другие, кто будет делать так же.

 
elibrarius #:

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

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

 
fxsaber # :

Вопрос решен, поэтому объяснение логики неактуально. Ниже ошибка правильная?

По ссылке одиночная структура передается отлично. Массив - нет.

Да. Потому что вы не можете вычислить позицию памяти элемента i.
 
Alain Verleyen #:
Да. Потому что вы не можете вычислить позицию памяти элемента i.

Размер структуры не изменялся.

 
fxsaber # :

Размер структуры не изменялся.

В вашем конкретном примере, но компилятор является универсальным и, вероятно, не проверял это.
 
Alain Verleyen #:
В вашем конкретном примере, но компилятор является универсальным и, вероятно, не проверял это.

Поэтому и спрашиваю, должен ли компилятор это учитывать или нет.

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