В МТ4 сначала стоплосс обрабатывался, потом отложенный ордер. Здесь, наверно, так же будет.
Хотелось бы знать точно, а то как бы не перемудрить с кодом.
Я уже в указанной ситуации сдвигаю SL в худшую сторону, чтобы с помощью отложенного отдера успеть "перевернуться" без проблем. Но теперь вот сомневаюсь: зачем я это написал, если даже не знаю чётких правил обработки торговым сервером указанной ситуации.
Скорее всего при автоматической обработке сначала отработает стоплосс, а потом откроется отложенник.
Но на практике все может произойти в любой последовательности: при ручном исполнении или интеграции со стороной исполнения никто не гарантирует четкой последовательности. Особенно если это заявки с разными объемами.
Еще момент: если первым сработает отложенник, то он заменит SL/TP у ранее открытой позиции. То есть, стоплосс у открытой позиции уже не должен сработать. Но в реальности можно получить ситуацию, когда два ордера будут одновременно (а это так и есть) отправлены на исполнение в шлюз исполнения (на биржу или другого брокера) и оба исполнятся. Причем могут исполниться по разным ценам.
У меня вот тоже вопрос в связи с этим, допустим в МТ5 я продал евробакс 1 лотом, цена поша не в мою сторону стоп лосс стоит выше чем отложка на бай. т.е. между ценой продажи и стопом стоит отложка на бай на 1 лот, получается что при достижени отложки (1 лот на покупку) сделки просто "схлопнуться" и все, никаких сделок не будет? Я все правильно понял? И учитывается ли данное явление в тестере и при оптимизации?
У меня вот тоже вопрос в связи с этим, допустим в МТ5 я продал евробакс 1 лотом, цена поша не в мою сторону стоп лосс стоит выше чем отложка на бай. т.е. между ценой продажи и стопом стоит отложка на бай на 1 лот, получается что при достижени отложки (1 лот на покупку) сделки просто "схлопнутся" и все, никаких сделок не будет? Я все правильно понял?
Да, если в Вашем случае
PositionGetDouble(POSITION_SL)>OrderGetDouble(ORDER_PRICE_OPEN) PositionGetDouble(POSITION_VOLUME)==OrderGetDouble(ORDER_VOLUME_INITIAL)
то позиция на продажу закроется раньше, чем сработаёт её SL. При этом позиция закроется полностью (не будет ни "старой", ни "новой" позиции). Для того, чтобы в рассматриваемом случае открылась позиция на покупку, необходимо, чтобы PositionGetDouble(POSITION_VOLUME)<OrderGetDouble(ORDER_VOLUME_INITIAL). В частности, если стратегия требует открытия новой позиции в противоположном направлении (с тем же объёмом), то при выставлении отложенного ордера достаточно выполнить условие OrderGetDouble(ORDER_VOLUME_INITIAL)==2*PositionGetDouble(POSITION_VOLUME).
И учитывается ли данное явление в тестере и при оптимизации?
Тестер всего лишь обрабатывает алгоритм, заложенный в эксперте. Если алгоритм предусматривает выставление отложенного ордера, который должен сработать раньше, чем стоп-лосс у противоположно направленной позиции, то тестер обработает именно эту ситуацию, а результат обработки будет зависеть от используемых объёмов.
Да, если в Вашем случае
то позиция на продажу закроется раньше, чем сработаёт её SL. При этом позиция закроется полностью (не будет ни "старой", ни "новой" позиции). Для того, чтобы в рассматриваемом случае открылась позиция на покупку, необходимо, чтобы PositionGetDouble(POSITION_VOLUME)<OrderGetDouble(ORDER_VOLUME_INITIAL). В частности, если стратегия требует открытия новой позиции в противоположном направлении (с тем же объёмом), то при выставлении отложенного ордера достаточно выполнить условие OrderGetDouble(ORDER_VOLUME_INITIAL)==2*PositionGetDouble(POSITION_VOLUME).
Тестер всего лишь обрабатывает алгоритм, заложенный в эксперте. Если алгоритм предусматривает выставление отложенного ордера, который должен сработать раньше, чем стоп-лосс у противоположно направленной позиции, то тестер обработает именно эту ситуацию, а результат обработки будет зависеть от используемых объёмов.
Я конечно не кодер, но вроде все понял, значит тестер работает корректно. Спасибо за пояснения.
Я конечно не кодер...
Сорри за некоторую формальность изложения, просто вопрос был задан в категории "Эксперты", - я и посчитал, что так будет нагляднее. Будут вопросы - задавайте, кто сможет - поможет.
Добавлю насчёт тестера. Для него предполагается несколько режимов торговли: от обычного до агрессивного. Пока что предусмотрено два режима: "Обычный" и "Произвольная задержка". Поэтому приходится учитывать, что тестер обрабатывает различные ситуации с учётом выбранного режима торговли. Соответственно, при выборе различных режимов результаты обработки будут также зависеть от того, насколько алгоритм эксперта приспособлен к режимам, имитирующим различные рыночные условия.
Ситуация следующая. В результате работы эксперта стоп-лосс открытой позиции совпал с ценой срабатывания (Entry price) противоположно направленного отложенного ордера. Т.е.
Вопрос такой: по каким правилам торговый сервер обрабатывает такую ситуацию? Что именно происходит при достижении ценой указанного уровня: срабытывает ли сначала стоп-лосс открытой позиции (т.е. происходит закрытие позиции), и только после этого открывается противоположная позиция по отложенному ордеру? Или же сначала срабатывает отложенный ордер (например, уменьшающий объём открытой позиции), и только после этого торговый сервер обрабатывает стоп-лосс открытой позиции?
Мне кажется, в этом случае нужно просто убрать СЛ и оперировать только объемом ордера: если надо закрыть позицию (сэмулировать СЛ) - объем должен быть равен объему позиции, а если надо перевернуться - объем должен быть больше.
Вообще, штатные СЛ/ТП мне кажутся очень далекими от реалий использования советников.
Для ручной торговли - да, пользоваться можно, но при включении любого торгующего советника (в дополнение к ручной торговле или другому советнику) эти стопы больше мешают, чем помогают...
Сорри за некоторую формальность изложения, просто вопрос был задан в категории "Эксперты", - я и посчитал, что так будет нагляднее. Будут вопросы - задавайте, кто сможет - поможет.
Добавлю насчёт тестера. Для него предполагается несколько режимов торговли: от обычного до агрессивного. Пока что предусмотрено два режима: "Обычный" и "Произвольная задержка". Поэтому приходится учитывать, что тестер обрабатывает различные ситуации с учётом выбранного режима торговли. Соответственно, при выборе различных режимов результаты обработки будут также зависеть от того, насколько алгоритм эксперта приспособлен к режимам, имитирующим различные рыночные условия.
Спасибо, я вот тож когда в тестере ковырялся, нашел там "Произвольная задержка"- штука полезная (приближает к реалиям рынка, как я понял), вот только как она работает и на основе чего эта задержка расчитывается, как то так что ли.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Ситуация следующая. В результате работы эксперта стоп-лосс открытой позиции совпал с ценой срабатывания (Entry price) противоположно направленного отложенного ордера. Т.е.
Вопрос такой: по каким правилам торговый сервер обрабатывает такую ситуацию? Что именно происходит при достижении ценой указанного уровня: срабытывает ли сначала стоп-лосс открытой позиции (т.е. происходит закрытие позиции), и только после этого открывается противоположная позиция по отложенному ордеру? Или же сначала срабатывает отложенный ордер (например, уменьшающий объём открытой позиции), и только после этого торговый сервер обрабатывает стоп-лосс открытой позиции?