Особенности языка mql5, тонкости и приёмы работы - страница 274
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вы упустили, что day_of_year - это индекс, основанный на нуле. Таким образом, doy=31 означает на самом деле 1 февраля.
Спасибо, понял это раньше Вашего сообщения, поэтому удалил.
Кроме того, в реальной жизни (не в синтетических бенчмарках) кэширование раз в день может быть полезным, чтобы пропустить повторные вычисления одного и того же года, месяца и дня.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
amrali, 2024.11.26 15:58
Самая быстрая замена встроенной функции TimeToStruct(),
я рекомендую использовать эту функцию:
В моем предыдущем варианте была ошибка, поэтому удалил.
Изменил Months[] и избавился от расчета isleap при любой дате. Теперь правильно и быстрее.
В моей предыдущей версии была ошибка, поэтому я ее удалил.
Изменил Months[] и избавился от вычисления isleap для любой даты. Теперь все работает корректно и быстрее.
Оно все еще там: doy - !(year & 3)
Только при doy >= 59.
Спасибо, Ален, за ваш тест. Замена на встроенный TimeToStruct() работает всего в 4-5 раз быстрее, как я уже сообщал.
Однако замена TimeYear(), TimeDayOfWeek() как минимум в 10-20 раз быстрее, чем использование MQL's TimeToStruct()
Этот код выполняется медленно при использовании оберток встроенного StructToTime.
Использование оптимизированных функций здесь очень помогает.
Еще один момент: распаковка (TimeToStruct) всегда быстрее, чем сжатие (StructToTime). Встроенный StructToTime действительно медленнее, чем TimeToStruct().
Если ваш код создает много переменных 'datetime' из компонентов времени, вы обнаружите, что CreateDateTime() намного быстрее, чем MQL'овская StructToTime().
Я столкнулся с проблемой медленной работы StructToTime() при создании переменных времени суток для перехода на летнее время в библиотеке TimeZoneInfo. Заменив ее на эту пользовательскую CreateDateTime(), я значительно улучшил скорость работы.
fxsaber #:
Теперь правильно и быстрее.
Random.
Not random.
Волшебство.
Убираем в исходнике (см. вложение) эту строку.
TimeToCalendar в AVX-компиляторе очень сильно опережает любые другие реализации.
Случайность.
Не случайно.
Магия.
Мы удаляем эту строку в исходнике (см. вложение).
TimeToCalendar в AVX-компиляторе очень сильно опережает любую другую реализацию.
AVX2 работает медленнее?
AVX2 работает медленнее?
У меня нет такого процессора, чтобы проверить.
Исходник рабочий, можете попробовать.У меня нет такого процессора, чтобы протестировать.
Исходник работает, можете попробовать.