Поскольку у нас всегда есть люди, которые жалуются на то, что MT5 использует слишком много ресурсов по сравнению с MT4, я решил начать сравнительный тест. Я не ожидал этих результатов относительно скорости выполнения, так как думал: «Да, MT5 потребляет больше памяти, но быстрее».
Последний тест, который я сделал, должен был проверить скорость выполнения. Я ожидал, что MT5 будет быстрее или равен MT4 для таких данных захвата задачи. К моему большому удивлению, MT4 был примерно на 25% быстрее, чем MT5.
MT4 (сборка 1090)
MT5 (Beta Build 1959)
После нового запуска платформы
Итерация 100: заняло 599 мкс, все итерации 262457 мкс
Итерация 100: заняло 1077 мкс, все итерации 267031 мкс
Последующие звонки
Итерация 100: заняло 582 мкс, все итерации 64122 мкс
Итерация 100: заняло 690 мкс, все итерации 81501 мкс
Итерация 100: заняло 717 мкс, все итерации 68353 мкс
Итерация 100: заняло 1087 мкс, все итерации 84886 мкс
Итерация 100: заняло 610 мкс, все итерации 62642 мкс
Итерация 100: заняло 709 мкс, все итерации 80307 мкс
Тест был повторен несколько раз в одинаковых условиях для обеих платформ, он всегда дает одинаковые результаты.
Все детали для воспроизведения тестов находятся в оригинальной теме. Я знаю, что получение одних и тех же данных каждую секунду - это не просто случай, а всего лишь тестовый пример.
Поскольку у нас всегда есть люди, которые жалуются на то, что MT5 использует слишком много ресурсов по сравнению с MT4, я решил начать сравнительный тест. Я не ожидал этих результатов относительно скорости выполнения, так как думал: «Да, MT5 потребляет больше памяти, но быстрее».
Все детали для воспроизведения тестов находятся в оригинальной теме. Я знаю, что получение одних и тех же данных каждую секунду - это не просто случай, а всего лишь тестовый пример.
Нельзя тестировать CopyXXX функции из индикаторов, так как в индикаторах отдается только то, что есть без контроля полноты данных
Не проверяются результаты операций
Месячные данные на многих инструментах в МТ4 в урезанном виде, так что не всегда можно получить запрошенные 500 MN баров
Я переписал пример в виде скрипта, уменьшил MN до 250 баров, добавил проверки и вывод информации об окружении.
Вот результаты на последних бетах MT4 1150 (доступно на MetaQuotes-Demo) и MT5 1959: данные в микросекундах
MT4
MT5
Холодный запуск
5 symbols, 100000 max bars:
EURUSD
USDCHF
USDCAD
GBPUSD
USDJPY
Iteration 1: took 36085 msc for5 symbols
Iteration 2: took 155 msc for5 symbols
...
Iteration 100: took 138 msc for5 symbols
Total: 51442 msc
5 symbols, 100000 max bars:
EURUSD
USDCHF
USDCAD
GBPUSD
USDJPY
Iteration 1: took 1400323 msc for5 symbols
Iteration 2: took 12430 msc for5 symbols
Iteration 3: took 212 msc for5 symbols
...
Iteration 100: took 205 msc for5 symbols
Total: 1434053 msc
Горячий запуск
Iteration 1: took 235 msc for5 symbols
Iteration 2: took 138 msc for5 symbols
...
Iteration 100: took 136 msc for5 symbols
Total: 15524 msc
Iteration 1: took 317 msc for5 symbols
Iteration 2: took 204 msc for5 symbols
...
Iteration 100: took 201 msc for5 symbols
Total: 21456 msc
Разница в холодном подъеме в том, что МТ5 проводит полную проверку истории и гарантированно сверяется с торговым сервером, чтобы докачать недостающие или отсутствующие данные.
Причем проверяются исходные M1 данные, из которых потом строятся другие периоды. Это гарантирует, что в МТ5 максимально точные данные. В МТ4 проверки самые минимальные и данные берутся прямо из файла.
В горячем режиме синхронизированных данных у МТ4 данные выдаются быстрее на 6 мс в запросе 45 чартов(одна итерация из 5 симвлов на 9 периодов), так как у него очень простая система хранения чартов, не приспособленная для работы с большими объемами. В МТ5 мы серьезно изменили механизмы хранения и доступа к данным, что приносит дополнительные расходы.
Спасибо за тест - мы проведем дополнительную оптимизацию в МТ5 и постараемся ускорить эти места.
По поводу поднятых вопросов по потреблению памяти в МТ4 и МТ5:
МТ4 является 32 битной программой с массой ограничений по объему данных, разрабатывалась во времена (2004 год) серьезного дефицита памяти
МТ4 не имеет единой базы M1 баров, из которых строятся остальные периоды. Каждый период строится и живет отдельно. Это снижает затраты памяти
МТ4 имеет ограниченную мультипотоковость во внутренних операциях
МТ4 имеет серьезные ограничения по количеству символов и торговому окружению, включая историю
МТ5 64 битный и предназначен для работы с огромными объемами данных и все процессы в нем настроены на работу и удержание максимума данных в памяти
МТ5 всегда имеет М1 основу для построения остальных периодов, а также тиковые данные
МТ5 не имеет ограничений по объему обрабатываемых данных, много фоновых потоков по докачке и управлению данными
МТ5 старается использовать доступную память, а не пытается ужаться в 100-200 мб. Упор на максимизацию кешей
МТ5 имеет гораздо более мощную MQL5 инфраструктуру внутри терминала
МТ5 нацелен на компьютеры с 2-4-8-16-32-64 гб памяти, 4-8 и больше ядер
МТ5 оперирует в десятки раз большими объемами данных, чем МТ4
Таковы сегодняшние задачи по анализу данных
Не подумайте, что мы плохо разрабатываем системы или что-то ухудшаем.
Мы максимально нацелены на оптимизацию и ускорение обработки данных. Посмотрите в каталоги данных Метатрейдера 5 - там гигабайты и десятки гигабайт данных. И дальше будет еще больше - объем данных и качество анализа растут.
Для сравнения качества нашей оптимизации и мощности посмотрите на другие платформы на C#/Java. Вот там реально тормозные приложения, оперирующие смешными объемами данных.
Ренат, во-первых, спасибо за подробный ответ. Я забыл сказать, что перед запуском этого последнего теста я был уверен, что все данные были доступны и загружены (за исключением менее 500 баров на графиках месяца). Вот почему я прокомментировал или удалил проверку или печать кода.
Разница в холодном подъеме в том, что МТ5 проводит полную проверку
истории и гарантированно сверяется с торговым сервером, чтобы докачать
недостающие или отсутствующие данные.
Я знаю, это хорошо.
Спасибо за тест - мы проведем дополнительную оптимизацию в МТ5 и постараемся ускорить эти места.
Большое спасибо.
Не подумайте, что мы плохо разрабатываем системы или что-то ухудшаем.
Лично я не думаю, что вы развиваете плохую или ухудшающуюся систему, я единственная, кто защищает MT5 от всех глупостей, которые люди могут сказать субъективно. Но вы, вероятно, говорите в целом, а не со мной.
Мой главный критик против МТ5 - это отсутствие стабильности. Я бы предложил вам изучить возможность полностью разделить официальный релиз и бета-версию. Большинство людей (на форуме, я знаю, что это только небольшая часть пользователей) не в состоянии изменить ситуацию. Они подключаются к Metaquotes-Demo или даже к бета-версии, даже не зная, что делают. По крайней мере, на английской стороне.
Я разместил ваш ответ на английском форуме, он будет хорошим справочником для всех жалоб на фьючерсы и нытье. Еще раз спасибо.
При использовании CustomTicksReplace () для импорта буфера в 10 миллионов тиков на пользовательский символ (для запуска пустой истории тиков) требуется 90 секунд! В памяти 10 миллионов тиков - это около 600 МБ, но затем они каким-то образом сжимаются для записи в файл тиков (базу данных). Тик базы данных составляет от 6 до 7 байт, скажем, 7 байт, 10 миллионов тиков - это в худшем случае 70 МБ.
Проверяя диск моего компьютера, я вижу, что скорость передачи очень низкая, в среднем даже не 1 МБ / с. На жестком диске, способном достигать 80 МБ / с в режиме записи (проверено вчера с помощью эталонного программного обеспечения).
Я не знаю, всегда ли это было так или это что-то новое, но мне кажется, что это очень медленно, даже с учетом необходимой обработки.
PS: автоматический перевод, вероятно, не должен переводить собственное существительное (?).
Разница в холодном подъеме в том, что МТ5 проводит полную проверку истории и гарантированно сверяется с торговым сервером, чтобы докачать недостающие или отсутствующие данные.
Причем проверяются исходные M1 данные, из которых потом строятся другие периоды. Это гарантирует, что в МТ5 максимально точные данные. В МТ4 проверки самые минимальные и данные берутся прямо из файла.
В горячем режиме синхронизированных данных у МТ4 данные выдаются быстрее на 6 мс в запросе 45 чартов(одна итерация из 5 симвлов на 9 периодов), так как у него очень простая система хранения чартов, не приспособленная для работы с большими объемами. В МТ5 мы серьезно изменили механизмы хранения и доступа к данным, что приносит дополнительные расходы.
Было бы не плохо как то давать визуально трейдеру информацию о том что синхронизация выполнена и история готова.
Может есть смысл добавить что то типа
Синхронизация в процессе
Символ синхронизирован
История не доступна у брокера
История повреждена
Посмотрите как отработал Ваш скрипт, у меня история вся закачана, так как я сейчас пишу программу работающую с историей. Сервер MetaQuotes Demo
Bid and Bid/Ask. Ask without Bid not applied to the bar
When there's Last, does the bar creation change? Shouldn't use price changing ticks?
Для русских, пожалуйста!
Тут русскоязычный форум, а вот англоязычный форум!
Этот пример теперь работает в 15 раз быстрее
Грубо говоря, полный цикл записи/чтения тиков через ресурс идет со скорость 4 миллиона тиков в секунду.
Да, теперь похоже на правду. :))
Для русских, пожалуйста!
Тут русскоязычный форум, а вот англоязычный форум!
Я прошу прощения. Я не говорю по-русски, но начинаю понимать кириллицу. :)Поскольку у нас всегда есть люди, которые жалуются на то, что MT5 использует слишком много ресурсов по сравнению с MT4, я решил начать сравнительный тест. Я не ожидал этих результатов относительно скорости выполнения, так как думал: «Да, MT5 потребляет больше памяти, но быстрее».
Форум по торговле, автоматизированным торговым системам и тестированию торговых стратегий
Сравнение управления памятью в MetaTrader 4 и MetaTrader 5 - MetaTrader 5 очень плохой
Ален Верлейен , 2018.12.09 17:14
Последний тест, который я сделал, должен был проверить скорость выполнения. Я ожидал, что MT5 будет быстрее или равен MT4 для таких данных захвата задачи. К моему большому удивлению, MT4 был примерно на 25% быстрее, чем MT5.
Тест был повторен несколько раз в одинаковых условиях для обеих платформ, он всегда дает одинаковые результаты.
Все детали для воспроизведения тестов находятся в оригинальной теме. Я знаю, что получение одних и тех же данных каждую секунду - это не просто случай, а всего лишь тестовый пример.
@Renat Fatkhullin, @Slava это нормально?
Поскольку у нас всегда есть люди, которые жалуются на то, что MT5 использует слишком много ресурсов по сравнению с MT4, я решил начать сравнительный тест. Я не ожидал этих результатов относительно скорости выполнения, так как думал: «Да, MT5 потребляет больше памяти, но быстрее».
Все детали для воспроизведения тестов находятся в оригинальной теме. Я знаю, что получение одних и тех же данных каждую секунду - это не просто случай, а всего лишь тестовый пример.
@Renat Fatkhullin, @Slava это нормально?
У вас несколько погрешностей:
Я переписал пример в виде скрипта, уменьшил MN до 250 баров, добавил проверки и вывод информации об окружении.
Вот результаты на последних бетах MT4 1150 (доступно на MetaQuotes-Demo) и MT5 1959: данные в микросекундах
Разница в холодном подъеме в том, что МТ5 проводит полную проверку истории и гарантированно сверяется с торговым сервером, чтобы докачать недостающие или отсутствующие данные.
Причем проверяются исходные M1 данные, из которых потом строятся другие периоды. Это гарантирует, что в МТ5 максимально точные данные. В МТ4 проверки самые минимальные и данные берутся прямо из файла.
В горячем режиме синхронизированных данных у МТ4 данные выдаются быстрее на 6 мс в запросе 45 чартов(одна итерация из 5 симвлов на 9 периодов), так как у него очень простая система хранения чартов, не приспособленная для работы с большими объемами. В МТ5 мы серьезно изменили механизмы хранения и доступа к данным, что приносит дополнительные расходы.
Спасибо за тест - мы проведем дополнительную оптимизацию в МТ5 и постараемся ускорить эти места.
По поводу поднятых вопросов по потреблению памяти в МТ4 и МТ5:
Не подумайте, что мы плохо разрабатываем системы или что-то ухудшаем.
Мы максимально нацелены на оптимизацию и ускорение обработки данных. Посмотрите в каталоги данных Метатрейдера 5 - там гигабайты и десятки гигабайт данных. И дальше будет еще больше - объем данных и качество анализа растут.
Для сравнения качества нашей оптимизации и мощности посмотрите на другие платформы на C#/Java. Вот там реально тормозные приложения, оперирующие смешными объемами данных.
...
Ренат, во-первых, спасибо за подробный ответ. Я забыл сказать, что перед запуском этого последнего теста я был уверен, что все данные были доступны и загружены (за исключением менее 500 баров на графиках месяца). Вот почему я прокомментировал или удалил проверку или печать кода.
Разница в холодном подъеме в том, что МТ5 проводит полную проверку истории и гарантированно сверяется с торговым сервером, чтобы докачать недостающие или отсутствующие данные.
Я знаю, это хорошо.
Спасибо за тест - мы проведем дополнительную оптимизацию в МТ5 и постараемся ускорить эти места.
Большое спасибо.
Не подумайте, что мы плохо разрабатываем системы или что-то ухудшаем.
Лично я не думаю, что вы развиваете плохую или ухудшающуюся систему, я единственная, кто защищает MT5 от всех глупостей, которые люди могут сказать субъективно. Но вы, вероятно, говорите в целом, а не со мной.
Мой главный критик против МТ5 - это отсутствие стабильности. Я бы предложил вам изучить возможность полностью разделить официальный релиз и бета-версию. Большинство людей (на форуме, я знаю, что это только небольшая часть пользователей) не в состоянии изменить ситуацию. Они подключаются к Metaquotes-Demo или даже к бета-версии, даже не зная, что делают. По крайней мере, на английской стороне.
Я разместил ваш ответ на английском форуме, он будет хорошим справочником для всех жалоб на фьючерсы и нытье. Еще раз спасибо.
@ Ренат Фатхуллин
Может быть, вы можете посмотреть на это тоже, кажется, медленно, не так ли? Я могу предоставить галочки и код для воспроизведения при необходимости.
Форум по торговле, автоматизированным торговым системам и тестированию торговых стратегий
MT5: Проблемы и ошибки при работе с реальными тиками / пользовательскими тиками.
Ален Верлейен , 2018.12.07 05:07
Бета-версия 1958 года (а предыдущая из?).
При использовании CustomTicksReplace () для импорта буфера в 10 миллионов тиков на пользовательский символ (для запуска пустой истории тиков) требуется 90 секунд! В памяти 10 миллионов тиков - это около 600 МБ, но затем они каким-то образом сжимаются для записи в файл тиков (базу данных). Тик базы данных составляет от 6 до 7 байт, скажем, 7 байт, 10 миллионов тиков - это в худшем случае 70 МБ.
Проверяя диск моего компьютера, я вижу, что скорость передачи очень низкая, в среднем даже не 1 МБ / с. На жестком диске, способном достигать 80 МБ / с в режиме записи (проверено вчера с помощью эталонного программного обеспечения).
Я не знаю, всегда ли это было так или это что-то новое, но мне кажется, что это очень медленно, даже с учетом необходимой обработки.
Разница в холодном подъеме в том, что МТ5 проводит полную проверку истории и гарантированно сверяется с торговым сервером, чтобы докачать недостающие или отсутствующие данные.
Причем проверяются исходные M1 данные, из которых потом строятся другие периоды. Это гарантирует, что в МТ5 максимально точные данные. В МТ4 проверки самые минимальные и данные берутся прямо из файла.
В горячем режиме синхронизированных данных у МТ4 данные выдаются быстрее на 6 мс в запросе 45 чартов(одна итерация из 5 симвлов на 9 периодов), так как у него очень простая система хранения чартов, не приспособленная для работы с большими объемами. В МТ5 мы серьезно изменили механизмы хранения и доступа к данным, что приносит дополнительные расходы.
Было бы не плохо как то давать визуально трейдеру информацию о том что синхронизация выполнена и история готова.
Может есть смысл добавить что то типа
Посмотрите как отработал Ваш скрипт, у меня история вся закачана, так как я сейчас пишу программу работающую с историей. Сервер MetaQuotes Demo