Ставить стоплосс при модификации надо на один пипс дальше разрешенного.
Ставить стоплосс при модификации надо на один пипс дальше разрешенного.
В примере выше стоплосс при модификации ставится ровно на один пипс дальше разрешенного. При этом возвращается ошибка.
Ставить стоплосс при модификации надо на один пипс дальше разрешенного.
В примере выше стоплосс при модификации ставится ровно на один пипс дальше разрешенного. При этом возвращается ошибка. А обновление рыночных условий было проведено? Цены могли уйти.
Выложите полный код, пожалуйста.
Ошибка имеет место как при ручной торговле, так и при автоматической, и Вы сами вполне можете это проверить безо всякого кода или на простейшем скрипте.
К тому же, во всех примерах экспертов из дистрибутива, так же как и в базе кодов на mql4.com, OrderSend() вызывается со стоплоссом Ask - StopLoss * Points для ордера покупки, а OrderModify() для того же ордера использует Bid - StopLoss * Points.
К чему бы это?
К тому же, во всех примерах экспертов из дистрибутива, так же как и в базе кодов на mql4.com, OrderSend() вызывается со стоплоссом Ask - StopLoss * Points для ордера покупки, а OrderModify() для того же ордера использует Bid - StopLoss * Points.
К чему бы это?
Давайте пройдемся по шагам:
1) рынок EURUSD 1.2620 / 24
2) BUY 1.0 EURUSD at 1.2624 sl 1.2619, ок, открыто
На текущий момент условие SL на первом открытии позиции проверяется мягко (по цене заявленного открытия, как Вы заметили), поэтому разрешено было поставить стоп ближе, чем при последующих модификациях. Мягкость уберем, чтобы условие проверки близости было таким же как и при модификации.
3) MODIFY BUY 1.0 EURUSD at 1.2624 sl 1.2619 -> sl 1.2618 , неудача
Это потому, что рынок 1.2620 / 24, контроль закрытия идет по биду, минимально допустимый отступ 3 пункта. Это означает, что SL может быть поставлен не ближе 3х пунктов от цены бид, а именно 1.2617. Отказ был абсолютно корректный.
1) рынок EURUSD 1.2620 / 24
2) BUY 1.0 EURUSD at 1.2624 sl 1.2619, ок, открыто
На текущий момент условие SL на первом открытии позиции проверяется мягко (по цене заявленного открытия, как Вы заметили), поэтому разрешено было поставить стоп ближе, чем при последующих модификациях. Мягкость уберем, чтобы условие проверки близости было таким же как и при модификации.
Если тут же попытаться отодвинуть стоплосс, скажем, на пункт, в 1.2618, терминал не позволит этого сделать.
3) MODIFY BUY 1.0 EURUSD at 1.2624 sl 1.2619 -> sl 1.2618 , неудача
Это потому, что рынок 1.2620 / 24, контроль закрытия идет по биду, минимально допустимый отступ 3 пункта. Это означает, что SL может быть поставлен не ближе 3х пунктов от цены бид, а именно 1.2617. Отказ был абсолютно корректный.
На текущий момент условие SL на первом открытии позиции проверяется мягко (по цене заявленного открытия, как Вы заметили), поэтому разрешено было поставить стоп ближе, чем при последующих модификациях. Мягкость уберем, чтобы условие проверки близости было таким же как и при модификации.
Собственно, об этой разнице и шла речь.То есть, надо полагать, стоплосс будет задаваться, как дистанция от ближайшей цены, которая суть цена закрытия ордера - Bid для Buy и Ask для Sell - для обеих функций OrderSend() и OrderModify().
Это определенно сделает логику прозрачнее, спасибо.
Кстати, я подозреваю, что такая же разница имеет место для аргумента takeprofit тех же вызовов.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Например, при следующих исходных данных
можно открыть ордер на покупку
Если тут же попытаться отодвинуть стоплосс, скажем, на пункт, в 1.2618, терминал не позволит этого сделать. OrderModify(), соответственно, возвращает ошибку 130 - ERR_INVALID_STOPS, если изменять стоплосс программно. Минимальный стоплосс уровень, задаваемый функцией OrderModify(), больше аналогичного параметра функции OrderSend() на величину спреда:
Почему?