![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Print и Alert не асинхронные?
Захотел эти функции сделать асинхронными. Попробовал реализацию через ChartEvent - работает. Но тормозит. Откопалось это.
Отказался от столь дорогой функции в критических местах. EventChartCustom - дорогая.
На тему Alert.
Пока точно можно сказать, что Алертить в критических местах нельзя. Нужна асинхронность.
Воспроизвел тормоза SymbolInfoTick. И никакого стресс-теста. Практическая нужда заставляет так писать.
Следуем этой инструкции для быстрого воспроизведения.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Синхронный OrderSend сообщает об успешном выполнении быстрее, чем пинг до торгового сервера
fxsaber, 2020.09.30 20:36
На быстрой машине результат с 30 символами в Обзоре рынка.
Надеюсь, не только у меня воспроизводится. Конечно, лаг не такой большой, как показывал ранее. Но тут можно будет докопаться гораздо быстрее до причин.
ЗЫ TimeCurrentMsc почему-то не вводится в MQL5, несмотря на неоднократные просьбы.
Отказался от столь дорогой функции в критических местах. EventChartCustom - дорогая.
Это существенный недостаток. Потому что событийная модель MQL неполная - отсутствует нулевое событие, т.е. событие, которое вызывается, когда в очереди нет других событий. Его можно эмулировать через пользовательское событие. Но с учётом указанного недостатка для тех кому важна скорость событийная модель становится бессмысленной
EventChartCustom - дорогая.
А если без ChartFirst()?
А если без ChartFirst()?
На чужой чарт отправлять дороже, чем на свой.
Это существенный недостаток. Потому что событийная модель MQL неполная - отсутствует нулевое событие, т.е. событие, которое вызывается, когда в очереди нет других событий. Его можно эмулировать через пользовательское событие. Но с учётом указанного недостатка для тех кому важна скорость событийная модель становится бессмысленной
OnTimer позволяет делать фоновые вызовы с частотой вплоть до 16 мс.
Правильно, т.е. мы теряем на пустом месте (вернуться можем не ранее, чем через) минимум 16 мс. А могли бы их и не терять, если бы было бесплатное нулевое событие или бесплатные пользовательские события. А сейчас событийная модель в нижеприведенном случае ограниченно работает:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
MT5 и скорость в боевом исполнении
fxsaber, 2020.10.06 01:27
Вы совсем не в теме. Допустим, надо открыть две позиции в OnTick. Первый OrderSend - это несколько миллисекунд. После него надо делать снепшот. И тогда вызывать второй OrderSend.
Один только OnTick может выполняться сотни миллисекунд. А вы предлагаете в каком-то OnTimer снепшотиться.
На тему Alert.
Пока точно можно сказать, что Алертить в критических местах нельзя. Нужна асинхронность.
Алерт с принтом, можно попробовать заменить быстрой записью куда нибудь.
На ум приходит нативный sql в памяти
Я не предлагал снепшотиться, а ответил на прямой вопрос о миллисекундном таймере.
Частенько пользуюсь тем, что Тестер имеет именно миллисекундный таймер, а не секундный. Доказательство.
Результат.
Между временем открытия и временем закрытия позиции ровно 29 мс.