Ошибки, баги, вопросы - страница 2220
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
По-моему, это баг, когда ордер есть на торговом сервере, а после синхронной OrderSend на Терминале об этом ни духом.
Решил проверить, как долго длятся такие ситуации фантомных ордеров, когда ордер есть в системе, но нет в Терминале.
Результат
32 миллисекунды ордер есть, но его в Терминале нет! Только представьте себе, какие это может нести последствия, если в этом интервале выполнялась торговая логика...
Интересно, что фантомные ордера чаще всего присутствуют только при TRADE_TRANSACTION_ORDER_DELETE и при TRADE_TRANSACTION_DEAL_ADD (значительно реже) типах транзакций.
Очень нехороший нюанс платформы.
ЗЫ Сомнительное быстродействие торговых операций на пятерке, к сожалению.
Решил проверить, как долго длятся такие ситуации фантомных ордеров, когда ордер есть в системе, но нет в Терминале.
Результат
32 миллисекунды ордер есть, но его в Терминале нет! Только представьте себе, какие это может нести последствия, если в этом интервале выполнялась торговая логика...
Да, непорядок. Как видно, эти результаты транзакций шлются в разных пакетах. А должны быть в одном.
Да, непорядок. Как видно, эти результаты транзакций шлются в разных пакетах. А должны быть в одном.
Оказалось, что может сразу после OrderSend ордер быть фантомным, при этом параллельный советник с OnTradeTransaction это состояние не всегда может поймать. Т.е. OnTradeTransaction сама иногда подтормаживает.
В общем, в MT5 в разных местах архитектурно сидят лаги, которые вряд ли возможно искоренить. Это лаги приходов тиков, а теперь и торговых транзакций. Нужно четко отдавать себе отчет, на что способна платформа, если закладываться на скорость исполнения. Например, тики, пришедшие с приличным опозданием, затем - транзакции.. и в итоге кто-то другой на MT5 или другой платформе может обогнать, даже если сами сидите вплотную к бирже.
Торговые транзакции идут приоритетными пакетами, обгоняя остальные. Это серьезно уменьшает латенси.
Как получается, что скрипт после OrderSend обнаруживает ситуацию фантомного ордера, а OnTradeTransaction на параллельном советнике - нет (не всегда, но случается)?
Торговые транзакции идут приоритетными пакетами, обгоняя остальные. Это серьезно уменьшает латенси.
Проблема в том, что транзакции TRADE_TRANSACTION_ORDER_DELETE и TRADE_TRANSACTION_HISTORY_ADD приходят в разных пакетах, и поэтому неважно какой там приоритет, сетевая задержка всё-равно будет. А эти транзакции должны выполняться синхронно, одна за другой, без какого либо промежуточного состояния. Т.е. это одна атомарная операция по сути. Ведь помещение удалённого ордера в список истории никак не связано с биржей.
Т.е. тут вариантов два: либо обе эти транзакции приходят вместе в одном пакете, либо же первая транзакция не выполняется в терминале до тех пор, пока не придёт вторая.
Т.е. тут вариантов два: либо обе эти транзакции приходят вместе в одном пакете, либо же первая транзакция не выполняется в терминале до тех пор, пока не придёт вторая.
Бывают ситуации, когда TRADE_TRANSACTION_DEAL_ADD приходит ДО транзакции TRADE_TRANSACTION_ORDER_DELETE. При этом еще до TRADE_TRANSACTION_ORDER_DELETE ордер все равно фантомный.
Удаленные агенты перестали проводить оптимизацию
Предполагаю, что из-за нового компилятора, как их можно обновить, что всё заработало?
Кроме того, из-за такой ошибки прошло только часть проходов в оптимизаторе 13 из 28.Просматриваю код пакета Alglib. Там полно таких конструкций, усложняющих читаемость кода:
Не проще ли так?
Мне кажется, что скорость исполнения будет даже выше.
Зачем так усложнили код? Или просто портировали с др. языка, без корректировок? Но все равно интересно, зачем такое усложнение в оригинале?