Обсуждение статьи "Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее" - страница 5
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Будут ли многие стандартные фукции так же вынесены в библиотеки для инлайнинга?
Это не серьезно.
Под вайном, да еще 32 бита. Для 32 битов МТ5 используется старый компилятор, аналогичный MT4. Он в пару десятков раз медленнее 64 битного кода, который создает новый компилер специально для 64 битной версии МТ5. Отчет по сравнению скорости 32 и 64 битных MQL5 программ мы публиковали.
Каждая MQL5 программа на самом деле содержит две копии скомпилированного кода: 32 битная для старых систем ради совместимости и 64 битная для новых.
Мы полностью отказались от развития 32 битных компиляторов, так как это не имеет никакого смысла и будущего.
Поэтому надо использовать только 64 битные версии MetaTrader 5, если хотите получить максимум производительности.
Кстати, информация для тех, кто сидит на MT4 - там тоже скорость исполнения MQL4 кода в пару десятков раз медленнее, чем в 64 битном Метатрейдер 5.
Будут ли многие стандартные фукции так же вынесены в библиотеки для инлайнинга?
Именно.
В ближайшие пару билдов к этому придем. Будем на лету во время компиляции дополнять программы исходниками функций, что даст возможность оптимизатору сработать в полную силу.
Для нас критически важно минимизировать количество обращений к ядру платформы.
Неожиданно... Для меня действительно серьезная причина наконец пересмотреть привычки и перейти на МТ5. Раньше как то не видел большого смысла...
Если вы глубоко покопаете латенси внутренних процессов МТ4 и МТ5, включая трейдинг, то вобще сбежите с МТ4. Там пропасть в качестве и зализанности процессов.
Мы не зря так фанатично занимаемся производительностью и оптимизацией МТ5. Это огромное технологическое преимущество.
В R бралось минимальное время за множество запусков, а не первый запуск и максимальное время.
Так что нет, "холодный старт" тут не объясняет. Да еще в условиях, когда весь код библиотек в DLL. Разогревать практически нечего.
А вот что объясняет:
Вот где компилятору раздолье по сравнению с фактически неоптимизированными реализациями в DLL, которые не имеют шанса узнать окружение и подстроиться под него.
Если вы глубоко покопаете латенси внутренних процессов МТ4 и МТ5, включая трейдинг, то вобще сбежите с МТ4. Там пропасть в качестве и зализанности процессов.
Мы не зря так фанатично занимаемся производительностью и оптимизацией МТ5. Это огромное технологическое преимущество.
А что вообще тут измеряют ? напоминает холивары С++ vs Lisp - прямо один-в-один, благо что один "сравнентов" почти ++ а второй обросшая Schema :-) Это просто принципиально разные вещи...
Это просто чистое доказательство на практике и в теории ошибочности позиции, которую высказывали некоторые трейдеры в теме https://www.mql5.com/ru/forum/96176/page10 (где-то было упоминание):
Оказалось, что это не так. В самой простой функции получился слив и MQL5 эффективнее. Причем, почему быстрее, я обосновал еще и теоретически. В дополнение к практическим результатам.
Если вы глубоко покопаете латенси внутренних процессов МТ4 и МТ5, включая трейдинг, то вобще сбежите с МТ4. Там пропасть в качестве и зализанности процессов.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2016.10.09 09:39
MT5-OrderSend НЕ полностью синхронизирован - с торговым окружением синхронизации нет. Это значит, что показания истории не соответствуют реальному положению вещей.
Ни о каком timeout и речи быть не может. Надежного решения проблемы нет, т.к. вопросами синхронизации приходится заниматься на уровне терминала, а не сервера.
Фактически, MT5-пользователи столкнулись с тем, с чем сталкивались разработчики бриджей на MT4.
Если отправляется OrderSend, то надо ЗАПОМНИТЬ (вот здесь потенциальная уязвимость), что это сделано. Далее не обращать внимание на текущую историю (торговое окружение), пока не придет соответствующее сообщение в OnTrade. Как только оно прийдет, ЗАПОМНЕННОЕ нужно ЗАБЫТЬ.
Когда нет ЗАПОМНЕННЫХ данных, можно доверять истории, как в MT4.
MT4-OrderSend ПОЛНОСТЬЮ синхронизирован.Да и с остальным, гораздо более простым, как оказалось, проблемы
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
A100, 2016.10.09 23:09
Не могу по причине на которую вы сами указывали https://www.mql5.com/ru/forum/1111/page1743#comment_2877482.
Про трейдинг как-то забывается
Вы путаете асинхронность процессов с желанием увидеть синхронность.
Задача OrderSend максимально быстро выставить заявку и получить подтверждение. И с этим система отлично справляется.
А вот получить заполненную транзакцию/сделку, положить ее в историю и потом выдать вам под запрос - это другой процесс и он не имеет права тормозить работу OrderSend.
Поэтому все верно - транзакцию исполнили быстро, а потом через миллисекунду (а на самом деле раньше) в соседнем пакете получаете обновление тикета и работаете с ним.
Да и с остальным, гораздо более простым, как оказалось, проблемы
Написание компилятора, а в особенности реализация злобных С++ шаблонов - это простые вещи???
В любом случае, большое спасибо за терпение A100 - он очень помог в отлове багов.
Но это оффтоп, если хотите обсуждать указанные вопросы, делайте это в родных ветках. Тут про R.