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

 
Реter Konow:

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

Для начала давайте разделим программирующих людей на две основные категории:

1. Программисты.

2. Разработчики.

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

Разработчики, - это изобретатели. Люди, которые обрели свободу мышления и поднялись над установленными правилами. Разработчики ищут максимальную эффективность создаваемых механизмов. Поэтому, им с программистами невсегда по пути.

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

Но вещь существует сама по себе, независимо от того, как мы на нее смотрим.

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

Но Природа не создает прямых линий(с).

Удобная для нас призма взгляда (ООП) "переписывает" "первобытное" совершенство механизма.

Но это может понимать только разработчик.

ЗЫ. ООП погружает человеческое мышление в красивую философскую концепцию, но навязывает создаваемому механизму неэффективную структуру.

И это проверено на практике.

Всё в кучу смешали. Природа тут вообще к чему. Если она не создаёт прямых линий, то это не значит что она не стримится к этому. Природа и к выкачки нефти не стримилась, или стремилась, посредством своей части-нами? А Вы, стремящийся к прямым линиям, это не природа ли проявляет своё стремление к ним через Вас.
Совершенный первобытный механизм-палка. Относительно неё и простое программирование будет таким же , каким вы видите ооп относительно "простого" прежнего программирования.
 
Комбинатор:
Да нет, есть парочка эээ чудаков, которые периодически кричат о ненужности ООП по любому поводу.

ООП нужно. Бесспорно. Но не для создания идеальных механизмов.

Скорее для обретения специфических качеств мышления, которые необходимы в работе с программами.

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

Так они созидают свою философскую призму взгляда на мир.

Только мир все равно устроен по своему.

 
ILNUR777:
Всё в кучу смешали. Природа тут вообще к чему. Если она не создаёт прямых линий, то это не значит что она не стримится к этому. Природа и к выкачки нефти не стримилась, или стремилась, посредством своей части-нами? А Вы, стремящийся к прямым линиям, это не природа ли проявляет своё стремление к ним через Вас.
Совершенный первобытный механизм-палка. Относительно неё и простое программирование будет таким же , каким вы видите ооп относительно "простого" прежнего программирования.

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

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

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

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

 
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) я не сомневаюсь в советах людей, когда вижу их перепрыг с «дайте детальность» на «а вообще-то я на барах тестирую, вообще мне все это не нужно»

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

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

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

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