В другой ветке было неоднократно заявлено, что даже Терминал тормозит от огромного количества факторов. Как следствие, гораздо более сложный Торговый сервер обязан тормозить еще больше. Надеюсь все же, что алгоритмическая оптимизация еще возможна. Даже 5 мс лаг - уже очень плохо. Что уж говорить о сотнях миллисекунд.
Что на демо - не очень интересно (там можно отлаживать любые плагины, тестировать новое железо, ...).
А на живых счетах нашел максимум 17 мс (не говорю, что это мало, просто не идет ни в какое сравнение с 30 секундами).
Поэтому и подозрение на кастумную настройку сервера.
Разбор полетов показал, что эта ситуация повторяется не только на разных брокерах, но и в ситуации, когда торговля идет на Терминале, который стоит на той же машине, где и Торговый Сервер. Т.е. с очень низким пингом и единственным торговым счетом для Торгового сервера.
Терминал и Сервер на одной машине. Загрузка нулевая. Свежий тейк получил такой алерт.
Ошибки, при изменении позиции которых срабатывает Take. Таким образом, Take срабатывает, пару раз отклоняет, затем зависает, я изменяю tp на ноль, чтобы подстраховаться и обрушиться.
Перед изменением я проверяю это
if ( OrderCloseReason() >= ( int ) ORDER_REASON_SL )
Рассмотрим схематично некоторые алгоритмы торговой площадки. Для упрощения будем считать, что имеется только один LP (поставщик ликвидности).
Лимитный ордер.
Цена от LP удовлетворяет цене лимитника торговой площадки.
Gateway шлет этот лимитник на LP с коротким временем экспирации.
Если получает реджект на часть объема лимитника, то Gateway повторяет все из п.1 для оставшегося объема в случае, если тик от LP изменился за время обработки лимитника.
При исполнении лимитника хороший Gateway (с алгоритмом выше) не зависит от особенностей торговой платформы.
Алгоритм почти зацикленный и платформо-независимый. Защита от спама LP содержится в п.3.
TP-уровень открытой позиции.
Пришел тик от LP
Цена отправляется в MT5 в виде нового тика.
Если позиция не заблокирована и цена нового тика удовлетворяет TP-уровню, то сам MT5 создает соответствующий TP-ордер.
Gateway видит, что родился TP-ордер, блокирует позицию и делает п.2 из алгоритма лимитных ордеров.
Если получает реджект, то в MT5 отправляет TP-ордер в историю со статусом reject. Позицию разблокирует.
Алгоритм не зацикленный и платформо-зависимый. Имеется защита от спама LP.
У этого алгоритма два минуса, если не считаться с издержками связи Gateway-MT5.
В данной ветке было показано, что рождение TP-ордера (см. п.3) в MT5 происходит с лагом. Поэтому вероятность успеть исполниться ниже, чем если бы лага не было.
TP-ордер в MT5 не может родиться без нового тика. Это значит, что если получили реджект, то Gateway ничего не будет делать, пока в MT5 не придет новый тик, удовлетворяющий TP-уровню. И драгоценное время на попытки исполнения TP-уровня из-за этого пропадает. Это также ухудшает FillRate.
6. Если за время реджекта был получен новый тик от LP, то его актуальное значение повторно отправляется в MT5 в виде нового тика - переход на п.2.
Этот дополнительный пункт алгоритма все еще содержит защиту от спама LP, но при этом обманным способом заставляет MT5 выполнить п.3. И драгоценное время на ожидание нового тика не теряется.
Реальность.
Из этих двух алгоритмов (даже в случае наличия п.6 во втором) следует такой расклад.
MT5-лимитный ордер имеет более высокий FillRate, чем его тезка в виде TP-уровня открытой позиции. По этой причине при переворотах на MT5-Hedge можно часто сталкиваться с ситуациями, когда лимитник исполнился, а его TP-тезка - нет. В таком случае делается CloseBy и перевыставляется лимитник с соответствующим объемом.
Вывод.
Для повышения FillRate в MT5 перевод TP-уровней открытых позиций в MT5-лимитные ордера.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
В другой ветке было неоднократно заявлено, что даже Терминал тормозит от огромного количества факторов. Как следствие, гораздо более сложный Торговый сервер обязан тормозить еще больше. Надеюсь все же, что алгоритмическая оптимизация еще возможна. Даже 5 мс лаг - уже очень плохо. Что уж говорить о сотнях миллисекунд.
Что на демо - не очень интересно (там можно отлаживать любые плагины, тестировать новое железо, ...).
А на живых счетах нашел максимум 17 мс (не говорю, что это мало, просто не идет ни в какое сравнение с 30 секундами).
Поэтому и подозрение на кастумную настройку сервера.
Что на демо - не очень интересно (там можно отлаживать любые плагины, тестировать новое железо, ...).
А на живых счетах нашел максимум 17 мс (не говорю, что это мало, просто не идет ни в какое сравнение с 30 секундами).
К сожалению, не показали, сколько ордеров проверили.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Акцептирование SL/TP-ордеров
fxsaber, 2020.11.25 01:23
Поэтому и подозрение на кастумную настройку сервера.
Брокер подтвердил проблему и сумел ее найти и исправить (после выходных будет доступно). Но сложно сказать, было ли это из-за MT5.
А вот кидать в сторону MT5 камни можно точно по этой ситуации.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Акцептирование SL/TP-ордеров
fxsaber, 2020.11.25 00:47
Разбор полетов показал, что эта ситуация повторяется не только на разных брокерах, но и в ситуации, когда торговля идет на Терминале, который стоит на той же машине, где и Торговый Сервер. Т.е. с очень низким пингом и единственным торговым счетом для Торгового сервера.
Терминал и Сервер на одной машине. Загрузка нулевая. Свежий тейк получил такой алерт.
Лог сервера.
Акцепт-тик на сервере.
Полное подтверждение данных скрипта, что проблема есть. Внутри сервера при нулевой загрузке произошел лаг на 4 мс.
очередной взрыв мозга от fxsaber.
Кажется, действительно проблема на сервере. Это демо-счет MT5
На реальном счете у того же брокера скрипт возвращает нулевые результаты. На счету более 3000 транзакций.
На реальном счете у того же брокера скрипт возвращает нулевые результаты. На счету более 3000 транзакций.
Это подозрительно. Нигде на своих счетах отсутствие лагов не обнаружил.
Не уверен, связано ли это. Но я получаю их много
Ошибки, при изменении позиции которых срабатывает Take. Таким образом, Take срабатывает, пару раз отклоняет, затем зависает, я изменяю tp на ноль, чтобы подстраховаться и обрушиться.
Перед изменением я проверяю это
чтобы положение не застыло.
Это подозрительно. Нигде на своих счетах отсутствие лагов не обнаружил.
Я думал то же самое, но дальнейшее расследование показало, что только там было закрыто около 100 by Take
Итак, к небольшому объему выборки.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Акцептирование SL/TP-ордеров
Enrique Dangeroux, 2020.11.25 17:20
Не уверен, связано ли это. Но я получаю их много
У меня тоже весь журнал в таких сообщениях. Возможно, после выходных ситуация изменится.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Акцептирование SL/TP-ордеров
fxsaber, 2020.11.25 16:30
Брокер подтвердил проблему и сумел ее найти и исправить (после выходных будет доступно). Но сложно сказать, было ли это из-за MT5.
Рассмотрим схематично некоторые алгоритмы торговой площадки. Для упрощения будем считать, что имеется только один LP (поставщик ликвидности).
Лимитный ордер.
При исполнении лимитника хороший Gateway (с алгоритмом выше) не зависит от особенностей торговой платформы.
Алгоритм почти зацикленный и платформо-независимый. Защита от спама LP содержится в п.3.
TP-уровень открытой позиции.
Алгоритм не зацикленный и платформо-зависимый. Имеется защита от спама LP.
У этого алгоритма два минуса, если не считаться с издержками связи Gateway-MT5.
Улучшение.
Умный Gateway в алгоритме TP-уровня открытой позиции имеет п.6:
Этот дополнительный пункт алгоритма все еще содержит защиту от спама LP, но при этом обманным способом заставляет MT5 выполнить п.3. И драгоценное время на ожидание нового тика не теряется.
Реальность.
Из этих двух алгоритмов (даже в случае наличия п.6 во втором) следует такой расклад.
MT5-лимитный ордер имеет более высокий FillRate, чем его тезка в виде TP-уровня открытой позиции. По этой причине при переворотах на MT5-Hedge можно часто сталкиваться с ситуациями, когда лимитник исполнился, а его TP-тезка - нет. В таком случае делается CloseBy и перевыставляется лимитник с соответствующим объемом.
Вывод.
Для повышения FillRate в MT5 перевод TP-уровней открытых позиций в MT5-лимитные ордера.