MT4-Tester VS MT5-Tester - страница 2

 
fxsaber:

Переборы (100 000 USD на старте)

Странное у вас понятие об описании условий тестирования.

Такой подход к деталям большую тень бросает на все ваши последующие выводы.

 
fxsaber:

Это не работает сейчас в MT4.

Это работает сейчас в MT4.

Докажите и объясните технически, как это достигается.


У меня нет цели очернить MT5. Только воспроизводимо сравниваю. Безусловно, MT5-тестер недостижим по некоторым параметрам, но и тюнинговый MT4 сейчас в состоянии дать вещи, которых в MT5 нет, но которые реально востребованы. Мы увидели, что точный тест по реальным кастомным тикам на MT4 - правда на 100%. Ну и регулирование всевозможных настроек (комиссия, отступы, правила активации отложек и т.д.) тестера имеется. В общем, есть вещи, которые пока принципиально не реализовываются в MT5.

Имеется или есть точные доказательства, что слиппажи и правила активации именно так и работают как заявлено?

Можете технически доказать и объяснить, как внешняя программа может изменять условия срабатывания ордеров в движке MT4 тестера? Неужели методом глубокого инжекта в этот движок?

 
Renat Fatkhullin:

Странное у вас понятие об описании условий тестирования.

Такой подход к деталям большую тень бросает на все ваши последующие выводы.

Если что-то не досказал, то не специально. Вроде, все данные сообщил ранее. Но повторю

  • Полный перебор.
  • Старт с 100 000 USD.
  • Диапазоны на скринах.
  • Никакие условия принудительного обрыва прохода не установлены.
  • Реальные тики EURUSD M1 2017.04.10 - 2017.04.16 (неделя).
  • Включен только один локальный агент (1 ядро).

 
А как-то можно реально измерять сколько процентов припадает в данном тесте МТ5 на:
Шифрование параметров теста (результатов) => Отправка на loopback => Расшифровка параметров теста (результатов)

Если взять из потолка 50 мс, то получается 260 * 2 * 50 / 1000 = 26 сек.
Что весьма не мало.
Было бы интересно узнать реальные цифры.
 

Renat Fatkhullin:
Докажите и объясните технически, как это достигается.

Как технически достигается - не знаю. Доказать - сразу не готов (после сна сделаю).

Имеется или есть точные доказательства, что слиппажи и правила активации именно так и работают как заявлено?

Можете технически доказать и объяснить, как внешняя программа может изменять условия срабатывания ордеров в движке MT4 тестера? Неужели методом глубокого инжекта в этот движок?

Одно то, что спред не фиксированный уже много лет, говорит о том, что инжект глубокий. Эта MT4-возможность очень популярна на многих форумах. Отталкивает только не бесплатность. Но триал полноценный, поэтому каждый может попробовать. Собственно, сам триал установил несколько часов назад, чтобы эту ветку создать.

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

 
Первые 20/260 проходов
QR      0       03:29:37.031    Tester  0 : passed in 0:37:27.366
HK      0       03:30:36.307    Tester  1 : passed in 0:00:58.406
MM      0       03:30:40.510    Tester  2 : passed in 0:00:04.196
OF      0       03:30:41.731    Tester  3 : passed in 0:00:01.217
IH      0       03:30:42.538    Tester  4 : passed in 0:00:00.811
MQ      0       03:30:44.880    Tester  5 : passed in 0:00:00.764
LK      0       03:30:45.577    Tester  6 : passed in 0:00:00.687
PL      0       03:30:46.255    Tester  7 : passed in 0:00:00.671
MF      0       03:30:46.929    Tester  8 : passed in 0:00:00.671
GO      0       03:30:47.602    Tester  9 : passed in 0:00:00.671
CO      0       04:15:27.776    Tester  10 : passed in 0:44:40.160
ND      0       04:17:28.477    Tester  11 : passed in 0:01:59.450
HM      0       04:17:34.594    Tester  12 : passed in 0:00:06.099
CK      0       04:17:36.172    Tester  13 : passed in 0:00:01.575
QP      0       04:17:37.080    Tester  14 : passed in 0:00:00.905
LN      0       04:17:37.840    Tester  15 : passed in 0:00:00.765
NG      0       04:17:38.555    Tester  16 : passed in 0:00:00.702
ML      0       04:17:39.244    Tester  17 : passed in 0:00:00.687
RJ      0       04:17:39.925    Tester  18 : passed in 0:00:00.670
CS      0       04:17:40.603    Tester  19 : passed in 0:00:00.671

Входные параметры

Видно, что дикие тормоза при Shift = 1. Для примера, вот как справляется MT4 с нулевым проходом

2017.05.08 04:47:13.779 EURUSD,M1: 1865415 tick events (7292 bars, 1865515 bar states) processed in 0:00:33.541 (total time 0:00:34.289)

Т.е. более, чем в 60 раз быстрее.


ЗЫ

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2017.04.26 15:08

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

А так же в логах агентов такие строки

NS      0       14:11:00.853    Tester  756 : passed in 0:00:04.789
MJ      0       14:11:03.447    Tester  757 : passed in 0:00:02.574
RM      0       14:11:05.860    Tester  758 : passed in 0:00:02.340

сопровождать информацией по соответствующему прогону - имя советника и его входные параметры.

 
fxsaber:

Видно, что дикие тормоза при Shift = 1. Для примера, вот как справляется MT4 с нулевым проходом

Дожидаться окончания оптимизации стало бессмысленным, поэтому остановил.

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

History-функции не задействованы.

 
fxsaber:

Если что-то не досказал, то не специально. Вроде, все данные сообщил ранее. Но повторю

  • Полный перебор.
  • Старт с 100 000 USD.
  • Диапазоны на скринах.
  • Никакие условия принудительного обрыва прохода не установлены.
  • Реальные тики EURUSD M1 2017.04.10 - 2017.04.16 (неделя).
  • Включен только один локальный агент (1 ядро).

Ок, вот мои результаты на том же (только сервер Alpari-MT5-Demo):

  • Windows 10 Pro, Intel Xeon E5-2690 @ 2.60GHz

  • 1 ядро: 27 минут 55 секунд
    2017.05.08 05:13:09.636 Tester          optimization finished, total passes 260
    2017.05.08 05:13:09.647 Statistics      optimization done in 27 minutes 55 seconds
    2017.05.08 05:13:09.647 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

  • 8 ядер: 6 минут 11 секунд
    2017.05.08 04:38:18.663 Tester          optimization finished, total passes 260
    2017.05.08 04:38:18.674 Statistics      optimization done in 6 minutes 11 seconds
    2017.05.08 04:38:18.674 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    
  • 24 ядра: 3 минуты 33 секунды
    2017.05.08 05:17:40.990 Tester          optimization finished, total passes 260
    2017.05.08 05:17:41.000 Statistics      optimization done in 3 minutes 33 seconds
    2017.05.08 05:17:41.000 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

Понятно, что оптимизировать в одно ядро в МТ5 не имеет никакого смысла и даже на 8 ядрах все проходит очень быстро. Уверен, что ваши 14 минут в МТ4 сделаны на близком по мощности на одно ядро процессоре, так что время можно сравнивать. У меня даже частота на 1 ядро всего 2.6 Ghz.

Почему нет линейного снижения времени? Потому что задачи неравномерные из-за количества сделок. В каких-то проходах 100 сделок (расчет занимает секунду), а где-то 230 000 сделок (до 50 секунд). Так как скорость расчетов полностью определяется кому и как распределятся самые долгие проходы, то критический путь в пакетах сильно не уменьшается.


Ваши тормоза исключительно из-за неэффективного скана истории сделок в релизной версии. Тормозные случаи - это проходы с 200 000 и более сделок.

Весь пример эксперта написан так, что он занимается только одной вещью - страшно неэффективно сканит всю историю сделок на каждом тике. То есть по 1.8 миллиона полных рескана всей истории сделок на один проход. Причем еще код MT5 выборок не родной, а костыль в виде обертки MT4 стиля, что еще больше расходов дает.


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

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

Вот лог проходов:

OK      0       04:45:17.505    History EURUSD,M1: history cache allocated for 484457 bars and contains 473528 bars from 2016.01.04 00:00 to 2017.04.07 23:59
IR      0       04:45:17.540    History EURUSD,M1: history begins from 2016.01.04 00:00
RF      0       04:45:24.469    Tester  0 : passed in 0:00:07.188
KO      0       04:45:26.727    Tester  1 : passed in 0:00:02.188
CQ      0       04:45:27.857    Tester  2 : passed in 0:00:01.109
QJ      0       04:45:28.758    Tester  3 : passed in 0:00:00.890
NL      0       04:45:29.525    Tester  4 : passed in 0:00:00.750
ME      0       04:45:30.237    Tester  5 : passed in 0:00:00.688
LO      0       04:45:30.923    Tester  6 : passed in 0:00:00.671
RP      0       04:45:31.612    Tester  7 : passed in 0:00:00.672
NJ      0       04:45:32.363    Tester  8 : passed in 0:00:00.734
RS      0       04:45:33.065    Tester  9 : passed in 0:00:00.687
MK      0       04:45:42.777    Tester  10 : passed in 0:00:09.703
HP      0       04:45:45.928    Tester  11 : passed in 0:00:03.094
EN      0       04:45:47.354    Tester  12 : passed in 0:00:01.406
HG      0       04:45:48.313    Tester  13 : passed in 0:00:00.953
LL      0       04:45:49.110    Tester  14 : passed in 0:00:00.781
QJ      0       04:45:49.828    Tester  15 : passed in 0:00:00.703
NS      0       04:45:50.523    Tester  16 : passed in 0:00:00.688
MH      0       04:45:51.215    Tester  17 : passed in 0:00:00.672
DF      0       04:45:51.901    Tester  18 : passed in 0:00:00.672
FO      0       04:45:52.646    Tester  19 : passed in 0:00:00.735
NE      0       04:46:04.884    Tester  20 : passed in 0:00:12.219

Нулевой проход с 216к сделок (параметры Shift=1, Limit=5) отработал за 7 секунд.

Файлы:
MetaTester64.zip  7571 kb
terminal64.zip  14201 kb
 
Renat Fatkhullin:

Весь пример эксперта написан так, что он занимается только одной вещью - страшно неэффективно сканит всю историю сделок на каждом тике. То есть по 1.8 миллиона полных рескана всей истории сделок на один проход. Причем еще код MT5 выборок не родной, а костыль в виде обертки MT4 стиля, что еще больше расходов дает.

Доказательство
bool Func1( datetime, datetime ){ return false; };
bool Func2( long ){ return false; };

#define HistorySelect Func1
#define HistorySelectByPosition Func2

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

MT4-Tester VS MT5-Tester

fxsaber, 2017.05.08 01:11

Если есть сомнения, что MT5-замедление вызвано использованием сторонней библиотеки, желающие могут переписать простую MT4-логику данного советника на MQL5 на свой лад и проверить гипотезу.
 
Renat Fatkhullin:

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

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

1598 отрабатывает значительно быстрее, чем 1596. При этом даже там, где History-функции совсем не используются. Видимо, сам терминал в своих потрохах во время прогона вызывал эти ранее тормозные функции.


Оптимизация MT4

2017.05.08 02:35:33.074 Lucky: optimization started
2017.05.08 02:49:51.431 Lucky: optimization finished in 0:14:18
2017.05.08 02:49:51.436 There were 260 passes done during optimization


Оптимизация MT5

2017.05.08 07:40:38.429 Tester  Experts\MT4Orders\Lucky.ex5 on EURUSD,M1 from 2017.04.10 00:00 to 2017.04.16 00:00
2017.05.08 07:40:38.597 Tester  EURUSD: preliminary downloading of history ticks started, it may take quite a long time
2017.05.08 07:40:39.600 Tester  EURUSD: preliminary downloading of history ticks completed, 100.38 Kb in 0:01.170 (85.80 Kb/sec)
2017.05.08 07:40:39.600 Tester  EURUSD: ticks data begins from 2016.11.01 00:00
2017.05.08 07:40:39.600 Tester  complete optimization started
2017.05.08 07:40:39.600 Tester  size of initial task batch is 260
2017.05.08 07:40:39.612 Core 1  agent process started
2017.05.08 07:40:39.612 Core 1  connecting to 127.0.0.1:3000
2017.05.08 07:40:41.620 Core 1  connected
2017.05.08 07:40:41.622 Core 1  authorized (agent build 1598)
2017.05.08 07:40:42.771 Core 1  common synchronization completed
2017.05.08 07:40:42.797 Core 1  EURUSD: ticks synchronized already [43 bytes]
2017.05.08 08:04:54.332 Tester  optimization finished, total passes 260
2017.05.08 08:04:54.342 Statistics      optimization done in 24 minutes 16 seconds
2017.05.08 08:04:54.342 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2017.05.08 08:04:54.342 Core 1  connection closed


Теперь MT5 медленнее MT4 в 1.7 раза.


ЗЫ Не все прогоны совпали идеально. Значит, кто-то из тройки точно врет (MT4+TDS, MT5, MT4Orders). Будем искать.

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