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

 
fxsaber # :

b5677, некоторые части GUI Визуализатора не показывают актуальную информацию в режиме Pause+F12.


Запускаем по реальным тикам Визуализатор. Жмем паузу и пробрасываем тики через F12.


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

Прошу исправить эту ошибку, спасибо.

Строка для поиска Oshibka  165.

Эта ошибка исправлена в сборке 5692.
 
fxsaber # :

Первый тик одиночного прохода.

Скрин показывает, что Ваше утверждение ошибочно.


Теперь смотрим баровую историю на наличие места, где спред бара меняется. Подгоняем Визуализатор (PAUSE+F12) до первого тика этого бара.

Снова скрин показывает, что Ваше утверждение ошибочно.


По ходу выяснил, что спред бара вообще не меняется по ходу формирования этого бара, а просто берется из истории баров, что является заглядыванием в будущее.

Согласен. Сообщил в MQ.
 
fxsaber # :

b5686, в режиме Тестера по реальным тикам нулевой бар может не соответствовать пришедшему тику.



Чтобы не было расхождений баровой истории и тиковой, тестировал и на кастомных символах. Поведение повторяется.

Строка для поиска Oshibka  168.

У меня не получается воспроизвести эту ошибку. На каком сервере/символе/в каких настройках следует запускать?
 
Alain Verleyen #:
У меня не получается воспроизвести эту ошибку. На каком сервере/символе/в каких настройках следует запускать?

На сервере ICMarketsSC-MT5-2 создал через XAUUSD кастомный символ.

#include <fxsaber\TicksShort\LotsTicks.mqh> // https://www.mql5.com/ru/code/61126

void OnStart()
{
  LOTS_TICKS LotsTicks;
  
  const string Name = _Symbol + "_CUSTOM";
    
  LotsTicks.CopyTicksRange(_Symbol, COPY_TICKS_ALL, D'2025.01.01' * 1000);

  CustomSymbolCreate(Name, NULL, _Symbol);
  
  LotsTicks.CustomTicksReplace(Name);    
}


На созданном кастомном символе запустил советник в режиме по реальным тикам M1 с начала 2026 года.


Возможно, этот способ работает и на других символах/серверах. Не проверял их, но этот точно воспроизводится.

 
fxsaber # :

На сервере  ICMarketsSC-MT5-2 создал через XAUUSD кастомный символ.


На созданном кастомном символе запустил советник в режиме по реальным тикам M1 с начала 2026 года.


Возможно, этот способ работает и на других символах/серверах. Не проверял их, но этот точно воспроизводится.

Я воспроизвел вашу проблему, используя ТОЛЬКО ваш код для создания пользовательского символа.

Если я создам свой собственный символ, проблем не будет.

Значит, с вашей стороны что-то не так?

 
Alain Verleyen #:

Я воспроизвел вашу проблему, используя ТОЛЬКО ваш код для создания пользовательского символа.

Если я создам свой собственный символ, проблем не будет.

Значит, с вашей стороны что-то не так?

Сам кастомный символ создан не через однократный вызов CustomTicksReplace, а через несколько - на каждый месяц свой CustomTicksReplace.

Т.е. Вы можете для каждого месяца делать CopyTicksRange+CustomTicksReplace. И тогда получите идентичный результат.

В логе скрипта выше показаны эти шаги.


Конечно, ошибка только в Тестере. Природа создания кастомного символа лишь подсветила эту проблему. В общем, это баг.

 
fxsaber # :

Сам кастомный символ создан не через однократный вызов CustomTicksReplace, а через несколько - на каждый месяц свой CustomTicksReplace.

Т.е. Вы можете для каждого месяца делать CopyTicksRange+ CustomTicksReplace. И тогда получите идентичный результат.

В логе скрипта выше показаны эти шаги.


Конечно, ошибка только в Тестере. Природа создания кастомного символа лишь подсветила эту проблему. В общем, это баг.

Я сообщу об этом, но не уверен, что разработчики будут проводить расследование.
 
Alain Verleyen #:
Я сообщу об этом, но не уверен, что разработчики будут проводить расследование.

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

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

 

А можно сделать так, чтобы в таблице оптимизации при даблклике по строке прохода (команда Run Single Test) в параметры подставлялись (редактировались) только оптимизированные параметры, а не все? Хотя бы опционально, например, при нажатом Shift или еще как?

Проблема древняя: в opt-файлах строковые параметры режутся по 63 символу, а тестер и tst-файлы спокойно переваривают более длинные строки. Получается, что во входном параметре можно долго и успешно прописывать списки рабочих инструментов (например) и всё отлично работает в тестере и онлайн. А если провести оптимизацию и применить любые найденные новые параметры (числовые), строковые параметры обрезаются и эксперт выдает лабуду.

21-й век на дворе - неужели ограничение в 63 символа - это нормально?!

Я знаю, что некоторые умельцы в связи с этим резервируют несколько строковых переменных (НачалоСтроки, ПродолжениеСтроки, ЗавершениеСтроки) вместо нормального одного параметра, но это дико неудобно.

 
fxsaber #:

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

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

Проблемы со значениями bid/ask в тестере, на каждом историческом новом баре не было бы,
если расширили бы формат исторического файла и работу с ним.
То есть в структуру истории OHLC, тупо добавить поля bestAskPrice/bestAskVolume, bestBidPrice/bestBidVolume.
Давно об этом писал разработчикам. Не слышат.