Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы

 

В настоящий момент тестер стратегий MetaTrader 5 подвергается глубокой переработки командой MQ. Не смотря на то, что за последние два года была проделана действительно большая работа (спасибо команде MetaQuotes), данный тестер вызывает очень много вопросов. К сожалению, самые последние изменения направлены больше на визуальное оформление тестера, с тем что бы новичкам было проще работать с ним, тогда как механизмы его работы по прежнему вызывают вопросы у более опытных пользователей.

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

Все заявления/обсуждения/критика/упреки должны подаваться с четкой аргументацией и воспроизводимостью результатов. Уклон в обсуждении прошу делать на механизма исполнения и ценообразования. Пожелания на тему рющечек, значков и сферических коней в вакууме (хочу что бы грузились все ядра, хочу многопоточности при одиночном прогоне и т.д.) не приветствуются, хотя и не запрещаются.

Итак, поехали.


Тестер MetaTrader 5 пропускает исполнение лимитных заявок

1. Даны кастомные тики как массив MqlTiсk в бинарном файле (прикреплен к сообщению).

2. Кастомные данные обрабатывает специальный скрипт и загружает их в историю инструмента. Скрипт также прикреплен к сообщению.

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

4. В момент времени 00:11:05:085 был выставлен лимитный ордер по цене 10422.5. Текущая цена в момент выставления 10422.0.

5. В момент времени  00:11:06.179 цена Last произошла по 10424.0. Согласно правилам биржевого ценообразования, лимитный ордер SellLimit должен быть исполнен по цене 10422.5, однако этого не происходит. Лимитный ордер словно зависает в воздухе, показывая полный сюр: сделки происходят с кем-то другим, предлагающим цены хуже нашего!

6. Но чудеса начинают продолжаться. Цена разворачивается и с 1024.0 падает до 10419. Т.е. уровень продажи лимитника пронизывается сверху-внизу. Однако лимитный ордер также зависает в воздухе.

К сожалению я не нашел каких либо логов показывающих что происходит. Такое ощущение что логи тестера тупо выключены, printf не работает. Вывод в журнал тестера выключен:

Короче, похоже это еще одна проблема, которой раньше не было.

В связи с этим я записал видео в котором хорошо видно, что происходит (самое интересное начинается примерно с 30 секунды. Вверху экрана текущее время с точностью до миллисекунд):



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

Есть и другие вопросы к тестеру. Но пока думаю необходимо разобраться с этим.

Файлы:
 

Тестер MetaTrader 5 не правильно строит бары

Дан кастомный символ из предыдущего поста (данные те же). Бары строятся по цене Last, о чем указано в настройках символа.

Слева вид баров построенный в тестере. Справа первоначальные бары.

Видно что графики полностью не совпадают. На левом какая-то хрень. 

з.ы. Думал что строит по Bid, но посмотрел ленту сделок - оказывается таких цен даже ни было ни в бид ни в ласт не в аск. Ленту сделок в текстовом виде прикрепляю ниже. 

Файлы:
deribit_csv.zip  735 kb
 

Какой номер билда Вы используете?

Очень странное время в журнале 0000.00.00 00:00:00.000

Какая у Вас операционная система?

Сохраняются ли файлы с расширением log в папке данных тестера?

 

1. Вы не дали файл "deribit1.out.bin". В приаттаченном архиве "deribit1.out"

2. Вы не дали настройки кастомного символа

 
Строю бары по Bid. Исполнение лимитников по Bid/Ask происходит. Все отрабатывает (точнее 2093, дальше не проверял) правильно.
 
Vasiliy Sokolov:

Хорошую функцию игнорируете

MqlTick tiks[];

if (FileLoad("deribit1.out.bin", ticks))
{
// ....
 
Slava:

1. Вы не дали файл "deribit1.out.bin". В приаттаченном архиве "deribit1.out"

2. Вы не дали настройки кастомного символа

Пардоньте.

 
fxsaber:

Хорошую функцию игнорируете

Буду знать.

 
Slava:

Какой номер билда Вы используете?

Очень странное время в журнале 0000.00.00 00:00:00.000

Какая у Вас операционная система?

Сохраняются ли файлы с расширением log в папке данных тестера?

Билд самый последний. 2136. Использую всегда самый последний.

Windows 7 SP1

Логи сохраняются. Логи в журнале тестера стратегий появились. Но при этом в журнале визуализатора в тестере стратегий ничего не выводится.


 
Vasiliy Sokolov:

Пардоньте.

Спасибо. Разберёмся.

 

Несомненно, главное предложение  - автоматизация тестирования.

Сделайте walk-forward оптимизацию или что нибудь типа того. Тестирование должно быть на нескольких периодах и инструментах.

А если не хотите этого делать, так позвольте сделать это средствами MQL, людям не имеющим диплома инженера программиста (или степени?).

Для этого нужна мозможность чтения и записи (Get__ \Set__) времени начала и конца периода тестирования, времени начала форвард-периода и возможность перезапуска тестера с новым периодом тестирования.

Кроме того, имеющиеся средства обработки фреймов не работают нормально. Об этом уже достаточно написано здесь.

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

Последний общедоступный билд по-прежнему 2085.