МТ4 или МТ5. Какие преимущества и недостатки? - страница 44

 
Ivan Pochta:


Можно насильно перетянуть людей на МТ5, закрыв МТ4, но это просто привлечет отток пользователей: смысл мне переходить на МТ5, если можно на условный cTrader?

В таком случае новичок для проверки своих простых идей может смело учить и 4-ку. Но не теряет ли он время. Её можно учить, если знать что она просуществует точно ещё 5-10 лет. У кого есть такая уверенность.
 
Левитин Сергей В.:

МТ4 билд 1090, МТ5  билд 1730. Советник Moving Average из поставки терминалов, EURUSD 4H, за 2017 . Цены открытия. Одинаковый перебор параметров без генетики.

MT4 справился за 11 секунд.

2017.12.26 16:37:18.108 There were 8281 passes done during optimization
2017.12.26 16:37:18.097 Moving Average: optimization finished in 0:00:11
2017.12.26 16:37:07.033 Moving Average: optimization started
2017.12.26 16:37:07.032 TestGenerator: actual tick file "C:\Program Files (x86)\MetaTrader - Pepperstone\tester\history\EURUSD240_2.fxt" found
2017.12.26 16:37:07.028 Expert Moving Average EURUSD,H4: loaded successfully
2017.12.26 16:37:07.008 Expert Moving Average EURUSD,H4: removed


MT5 на одном ядре (включен только Core1) - 204 секунды.

2017.12.26 16:38:45.958 Tester  register MQL5.community account and use MQL5 Cloud Network to speed up optimizations
2017.12.26 16:38:46.114 Tester  Experts\Examples\Moving Average\Moving Average.ex5 on EURUSD,H4 from 2017.01.01 00:00 to 2017.12.26 00:00
2017.12.26 16:38:46.114 Tester  EURUSD: history data begins from 2002.04.12 00:00
2017.12.26 16:38:46.115 Tester  complete optimization started
2017.12.26 16:38:46.115 Tester  size of initial task batch is 512
2017.12.26 16:38:46.160 Core 1  connecting to 127.0.0.1:3000
2017.12.26 16:38:46.160 Core 1  connected
2017.12.26 16:38:46.163 Core 1  authorized (agent build 1730)
2017.12.26 16:38:46.168 Core 1  common synchronization completed
2017.12.26 16:42:10.384 Tester  optimization finished, total passes 8281
2017.12.26 16:42:10.939 Statistics      optimization done in 3 minutes 24 seconds
2017.12.26 16:42:10.939 Statistics      local 8281 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2017.12.26 16:42:10.939 Core 1  connection closed
2017.12.26 16:42:11.262 Tester  8281 records written to file cache C:\Program Files\Alpari Limited MT5\tester\cache\Moving Average.EURUSD.H4.2.xml


Лог Агента содержит почти одинаковые по цифрам записи

2017.12.26 16:41:35.258 Tester  6910 : passed in 0:00:00.015
2017.12.26 16:41:35.280 Tester  6911 : passed in 0:00:00.000
2017.12.26 16:41:35.291 Tester  128 of 128 passes processed in 0:00:01.184
2017.12.26 16:41:36.291 Tester  optimization pass 6912 started (batch of 128 tasks)
2017.12.26 16:41:36.317 Tester  6912 : passed in 0:00:00.016
2017.12.26 16:41:36.346 Tester  6913 : passed in 0:00:00.015

Это значит, что средний проход выполняется за ~9 мс. Получается, что для подсчета 8281 прохода нужно немногим больше 76-ти секунд (медленнее MT4 в 7 раз!). Но итог много хуже - 204 секунды. Похоже, какие-то дикие тормоза на передаче инфы от Агента в Тестер.


Вставляем в исходник строку

#include <TesterBenchmark.mqh> // https://www.mql5.com/ru/code/18804


Получаем такой замер

2017.12.26 16:55:40.649 Moving Average (EURUSD,H4)      ------
2017.12.26 16:55:40.651 Moving Average (EURUSD,H4)      OnTesterInit
2017.12.26 16:55:41.790 Moving Average (EURUSD,H4)      i = 0 Pass = 0 OnTester = 0.009 s.: Count = 1530, 170000.0 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1730
2017.12.26 16:55:41.805 Moving Average (EURUSD,H4)      i = 1 Pass = 1 OnTester = 0.008 s.: Count = 1530, 191250.0 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1730
2017.12.26 16:55:41.820 Moving Average (EURUSD,H4)      i = 2 Pass = 2 OnTester = 0.007 s.: Count = 1530, 218571.4 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1730
2017.12.26 16:55:41.836 Moving Average (EURUSD,H4)      i = 3 Pass = 3 OnTester = 0.008 s.: Count = 1530, 191250.0 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1730
2017.12.26 16:55:41.851 Moving Average (EURUSD,H4)      i = 4 Pass = 4 OnTester = 0.008 s.: Count = 1530, 191250.0 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1730
2017.12.26 16:55:41.918 Moving Average (EURUSD,H4)      iMin = 2 Results[iMin] = 0.007s.
2017.12.26 16:55:41.918 Moving Average (EURUSD,H4)      iMax = 0 Results[iMax] = 0.009s.
2017.12.26 16:55:41.918 Moving Average (EURUSD,H4)      Amount = 5 Mean = 0.008 s. - 3.15%
2017.12.26 16:55:41.918 Moving Average (EURUSD,H4)      OnTesterDeinit
2017.12.26 16:55:41.918 Moving Average (EURUSD,H4)      ------
2017.12.26 16:55:41.932 Moving Average (EURUSD,H4)      Interval = 1.270 s., Count = 0, 0.0 unit/sec

Видно, что на расчет прохода уходит ~8 мс и на передачу Агент->Тестер еще ~7 мс. В сумме около ~15 мс, что соотносится с ранее приведенным логом Агента.


Чистое время среднего прохода в MT4 ~1.3 мс. MT5 - 8 + 7 мс. При этом еще есть какое-то доп. замедление почти в три раза. В общем, все очень плохо выглядит для пятерки в данном случае.

На тиках ничего подобного и близко нет. Там почти паритет (когда проверял).

 
Реter Konow:

Да, Природа через человека движется к самосознанию...))

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

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

Чего не скажешь о наших механизмах.

Вот только сама эта сущность может и не знать что она является лишней для природы, и вполне считать себя НЕ лишней. И наоборот.

А если учесть что под определение "создано природой" можно подвести вообще всё что угодно. То в мире нет ничего лишнего, в том числе и ооп))). Это бесконечная философская демагогия. Которая тут совершенно не нужна. Без того проблем хватает.
 
fxsaber:

Все данные для воспроизведения в студию, пожалуйста! Потратил массу времени на исследования производительности тестеров/оптимизаторов. Такого дикого расхождения в производительности не заметил.

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

Не докажет, зря чтоли он все условия скрыл?

Он же отлично знает, что на пустом терминале нажал кнопку Start и он ни в чем не виноват. Он же сделал вид, что не видел, что у него все это время выкачивалась и синхронизировалась история.  Да мало ли что он еще там накрутил.

В реальности условия берем его:

  • Windows 10 x64, Intel Core i7-6700HQ  @ 2.60GHz, 8 cores, RAM: 16 Gb
  • MetaTrader 4 build 1090
  • MetaTrader 5 build 1730 x64
  • Server: MetaQuotes-Demo
  • Account: demo, USD
  • Symbol: EURUSD, H4, Open Price
  • Period: 2017.01.01 - 2017.12.23 - прямо смешно тестировать 1 500 баров H4 в режиме "По ценам открытия".
  • Expert: Moving Average, дефолтные настройки
  • Optimization: Desrease factor from 3 to 30 by 0.3, MA Period from 12 to 120 by 1, всего 9 919 проходов


Теперь результаты:

N
 Условия
MT4 одиночный
MT4 оптимизация
MT5 одиночный
MT5 оптимизация
 1EURUSD, H4, 2017.01.01-2017.12.23, open bar
16 ms / 1531 ticks
10 000 ms
15 ms / 4806 ticks
36 000 ms
 2EURUSD, H4, 2017.06.01-2017.12.01, every ticks
5 484 ms / 8 974 300 ticks
6 час 55 мин
5 766 ms / 11 620 181 ticks
4 час 5 мин

Результаты Метатрейдер 4 тест 1:
Одиночный:
EURUSD,H4: 1531 tick events (2531 bars, 4061 bar states) processed in 0:00:00.016 (total time 0:00:00.016)

Оптимизация:
There were 9919 passes done during optimization, 5713 results have been discarded as insignificant
Moving Average: optimization finished in 0:00:10


Результаты Метатрейдер 5 тест 1:

Одиночный:
EURUSD,H4: 4806 ticks, 1530 bars generated. Test passed in 0:00:00.015.
6067 total ticks for all symbols
EURUSD: passed to tester 6067 ticks

Оптимизация:
Tester	optimization finished, total passes 9919
Statistics	optimization done in 0 minutes 36 seconds

На предложенном фейковом тесте видим:

  • хотя МТ5 на одиночном тесте сгенерировал и проверил в 3 раза больше тиков чем МТ4, имел на себе затраты в огранизацию внешнего тестера, МТ5 оказался не медленнее МТ4. 15 мс против 16 мс у МТ5.
  • у МТ5 даже Open Bar тестируется в разы(в 3 раза больше тиков) качественнее за счет проверок High/Low уровней для правильного срабатывания стопов.
  • хотя в оптимизации МТ4 выиграл в 3.6 раза (10 сек против 36 сек), но это за счет экстремально простой задачи на 1500 баров и в 3 раза меньшего количества тиков. не зря же автор H4 выбрал!


Теперь давайте поставим оба тестера в одинаковые (но все равно очень простые) условия тестов по синтетическим тикам, тест 2:

  • Period: 2017.06.01 - 2017.12.01, H1, Все тики


Результаты Метатрейдер 4 тест 2:

Одиночный:
EURUSD,H4: 8 974 300 tick events (1787 bars, 8975300 bar states) processed in 0:00:02.781 (total time 0:00:05.484)


Оптимизация: на основе 120 из 9919 проходов получается 6 часов 55 минут

Результаты Метатрейдер 5 тест 2:

Одиночный:
EURUSD,H4: 11 620 181 ticks, 786 bars generated. Test passed in 0:00:05.766.


Оптимизация:  на основе 200 проходов получается 4 часа 5 минут

Как только подняли ставки и перешли к реальной работе, МТ5 сразу победил даже в простых условиях. 4 часа на тест у МТ5 вместо 7 часов у МТ4. Причем МТ5 смоделировал и проверил на 30% больше тиков.


Еще в качестве вишенки - при использовании MQL5 Cloud Network полный перебор завершился за 2 минуты и 49 секунд: потратил 82 цента, сэкономив 4 часа

Tester  optimization finished, total passes 9919
Statistics      optimization done in 2 minutes 49 seconds
Statistics      local 31 tasks (0%), remote 0 tasks (0%), cloud 9903 tasks (99%)


Я понимаю, что писатели for(int i=0;i<bars;i++) { } хвастают своей скоростью по сравнению с тестерами Метатрейдера. Дальше баров им ничего не светит с уровнем технологий 2000 года.

Я понимаю, почему сюда приходят люди безудержно набрасывать.


Но хочу остальным объяснить реальное положение вещей:

  • Сейчас задачи тестирования совершенно другого уровня сложности - нужна максимальная точность в моделировании.

  • Нужно обеспечивать мультисимвольное моделирование рынка с точностью до миллисекунд - это совершенно другого уровня рыночный движок 

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

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

  • Нужно уметь параллелить процессы тестирования как на все ядра, так и в локальные фермы, так и в клауд

  • Нужно уметь делать форвардные тесты

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

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

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

  • Нужно уметь тестировать на реальных тиках. Да, это дольше и дороже, но снимает вопрос достоверности.

Всего это нет в тестере стратегий Метатрейдера 4.

Лично для меня - полное безумие ратовать за тестер четверки и вообще возвращаться на четверку после того, как увидел и воспользовался тестером Метатрейдера 5.

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
fxsaber:

MT4 справился за 11 секунд.


MT5 на одном ядре (включен только Core1) - 204 секунды.

Ну вы мастер. Может еще ногу отрежем чемпиону? А что, "надо же в равные условия всех ставить, а у него возможностей больше". Конечно надо резать!

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

 
Renat Fatkhullin:
  • Optimization: Desrease factor from 3 to 30 by 0.3, MA Period from 12 to 120 by 1, всего 9 919 проходов


Теперь результаты:

N
 Условия
MT4 одиночный
MT4 оптимизация
MT5 одиночный
MT5 оптимизация
 1EURUSD, H4, 2017.01.01-2017.12.23, open bar
16 ms / 1531 ticks
10 000 ms
15 ms / 4806 ticks
36 000 ms
 2EURUSD, H4, 2017.06.01-2017.12.01, every ticks
5 484 ms / 8 974 300 ticks
6 час 55 мин
5 766 ms / 11 620 181 ticks
4 час 5 мин

Красные и желтые цифры противоречат друг другу. Чуть больше 1 мс у MT4 на проход уходит на Вашей и моей машинах.

На предложенном фейковом тесте видим:

  • хотя МТ5 на одиночном тесте сгенерировал и проверил в 3 раза больше тиков чем МТ4, имел на себе затраты в огранизацию внешнего тестера, МТ5 оказался не медленнее МТ4. 15 мс против 16 мс у МТ5.
  • у МТ5 даже Open Bar тестируется в разы(в 3 раза больше тиков) качественнее за счет проверок High/Low уровней для правильного срабатывания стопов.
  • хотя в оптимизации МТ4 выиграл в 3.6 раза (10 сек против 36 сек), но это за счет экстремально простой задачи на 1500 баров и в 3 раза меньшего количества тиков. не зря же автор H4 выбрал!

Вот эти три раза мне непонятны, т.к. в MT4 отложки (если память изменяет, форумчане поправят) исполняются с учетом High/Low. Такое ощущение, что MT5 под тиком подразумевает нечто отличное от MT4 в данном контексте. Но MT4 в режиме по барам все же учитывает High/Low. Поэтому тут не все так однозначно, к сожалению.

Более того, все таки 36 секунд - это восемь Агентов. MT4 - один. Вот тут не понимаю, как технарь, где такие серьезные потери? Просто человек может запустить восемь MT4-тестеров, разбив оптимизационную задачу полного перебора на восемь непересекающихся кусков и тогда контр-аргументы будут сомнительными. Поэтому при сравнении стараюсь ставить в одинаковые условия - один Агент MT5 vs один тестер MT4.

Но хочу остальным объяснить реальное положение вещей:

  • Сейчас задачи тестирования совершенно другого уровня сложности - нужна максимальная точность в моделировании.
Иногда это лишнее. Как правило, сначало делают грубую оценку на очень быстрых режимах, затем, действительно, включают максимально точную. Грубая оценка занимает 90% запусков, потому что там оттачивается торговая идея в черновом варианте.
  • Время побарных тестеров прошло давным давно.
С помощью кастомных символов покажу (далеко не сегодня), что это утверждение не совсем верное. Даже грубую оценку можно сделать на OHLC M1 (не H4, конечно) очень качественно. Утверждаю пока без доказательств.
  • Нужно иметь постоянные результаты тестирования, которые не плавают при каждом запуске. Для этого нужно моделировать массу рыночных условий в каждом тике (маржа, прибыли, стоимость тика и тд)

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


Надеюсь, данные замечания будут учтены в анонсированной работе над тестером.

 

1) не противоречат, ибо вы понятия не имеете о накладных расходах одного прохода и многих

как с таким уровнем знаний вы тестировать что-то пытаетесь?

2) не понимаете, так как уровень знаний темы недостаточный. не писали вы тестеров

3) за предложение «запустить могу N четверок» сразу можно списывать с обсуждения. когда в очередной раз(а попыток было много в этом форуме) тема с «давайте одно ядро тестить» обламывается, вылезает «ну можно же несколько запустить». не запускают

4) я не сомневаюсь в советах людей, когда вижу их перепрыг с «дайте детальность» на «а вообще-то я на барах тестирую, вообще мне все это не нужно»

Моя речь не для вас(кто заявляет - мне не нужно).

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

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

 
Renat Fatkhullin:

1) не противоречат, ибо вы понятия не имеете о накладных расходах одного прохода и многих

как с таким уровнем знаний вы тестировать что-то пытаетесь?

Возможно, у нас терминологическое непонимание. Т.к. я под временем на проход имел в виде общее количество времени на Оптимизацию, деленное на количество проходов. Вы, видимо, имели в виду полноценный одиночный запуск тестера.

2) не понимаете, так как уровень знаний темы недостаточный. не писали вы тестеров

3) за предложение «запустить могу N четверок» сразу можно списывать с обсуждения. когда в очередной раз(а попыток было много в этом форуме) тема с «давайте одно ядро тестить» обламывается, вылезает «ну можно же несколько запустить». не запускают

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

N
 Условия
MT4 одиночный
MT4 оптимизация
MT5 одиночный
MT5 оптимизация
 2EURUSD, H4, 2017.06.01-2017.12.01, every ticks
5 484 ms / 8 974 300 ticks
6 час 55 мин
5 766 ms / 11 620 181 ticks
4 час 5 мин

Почему при практическом паритете одиночных прогонов в MT4/5 (см. таблицу), одно ядро MT4 медленнее восьми ядер MT5 всего на 70%, даже не на 100%?

4) я не сомневаюсь в советах людей, когда вижу их перепрыг с «дайте детальность» на «а вообще-то я на барах тестирую, вообще мне все это не нужно»

Придерживаюсь Вашей же точки зрения при виде таких сторонних заявлений. Сам же вел речь несколько о ином - о бОльшей гибкости настроек тестера. Когда этими настройками можно в большом диапазоне влиять на скорость/точность. Сам загрубляю до нужной мне золотой середины через кастомные символы, поэтому благодарен за такую возможность. Но какие-то встроенные инструментарии в этом направлении, думаю, не были бы лишними.

 

Еще раз похвалю fxsaber,  который второй раз сделал вид, что не видит фейковости предложенной задачи на 1500 баров с мизерным таймингом.

Если что-то помогает топить против, он на такие вещи не смотрит. Не в первый раз.

Даже четкое многократное указание «тест фейковый, читинг налицо» не отрезвило:

  • Время теста миллисекунды? Время оптимизации десятки секунд? Нормально!
  • Не понимаю, что такое накладные расходы? Это нормально! Я отбрасываю все лишнее, чтобы не париться. Какая еще подготовка?
  • Я осознанно игнорирую, что в одном случае тестирую рогатку в руках(МТ4) и разворачиваемую батарею массового поражения(МТ5). Почему? Да потому что я выбрал тест стрельбы по воробью за N миллисекунд на расстояние в 2 метра(1500 баров по открытию) и мне совсем не хочется даже по стае гусей стрелять.
  • Время разворота батареи для стрельбы на 2 метра больше выстрела рогатки? Ну так мы это же и хотели показать! Зря чтоли 1500 баров в самом быстром и некачественном режиме запускали.
  • Точность работы вообще не интересует, вы смеетесь чтоли!

 
fxsaber:

Почему при практическом паритете одиночных прогонов в MT4/5 (см. таблицу), одно ядро MT4 медленнее восьми ядер MT5 всего на 70%, даже не на 100%?

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

Один - тупой и примитивный for, а другой - детализированный симулятор рыночного окружения, где реализуется точность до миллисекунд с обязательным учетом всех деталей, чтобы ни один критик с форума не заявил «ну вон там у вас что-то не так сработало, не так посчитало». И все это на всем многообразии возможных вариантов трейдинга.

Лично я это объяснял десятки раз, выслушивая раз за разом доводы тех, кто тестером считает «пробежаться по барам».

Чтобы совсем просто и понятно:

  • Выставили в бенчмарк сравнения тестеров прогон на десяток миллисекунд? Читер. Вне зависимости, что вы о себе думаете. Вне зависимости, что вы «не заметили»
  • Выставили в бенчмарк оптимизатор на сверхкороткую дистанцию. Читер.
  • Выставили в бенчмарк цифры без полного окружения для воспроизведения. Читер.