工作已完成
![](https://c.mql5.com/i/avatar/avatar_na2.png)
指定
1. Ставим Stop Sell и Stop Buy на расстоянии «параметр 1» от текущей цены.
2. Параметр 1: шаг начальных ордеров от текущей цены. По умолчанию - 10 пунктов (в примере берется 4 знак), но должно работать и на 5 знаке (10 пунктов должны пониматься как 100 пунктов).
3. Параметр 2: лот ордера. По умолчанию - 0,01.
4. Если сработал Stop Buy (Buy 1), то Stop Sell удаляем.
5. Если Buy 1 достиг значения «параметр 3» в валюте депозита или превысил его, то закрываем Buy 1 и переходим к пункту 1.
6. Параметр 3: значение прибыли при достижении или превышении которой открытый ордер или серия ордеров закрываются (про серию дальше).
7. Если в течение времени «параметр 4» Buy 1 не закрылся, но находится в плюсе, ничего не делаем, ждем.
8. Если по истечении времени «параметр 4» Buy 1 еще открыт и стал меньше 0, то ставим Stop Sell 1 на расстоянии «параметр 5» ниже цены открытия Buy 1 (лок) и Stop Sell 2 на расстоянии «параметр 6» ниже цены открытия Sell 1 (разруливающий).
9. Параметр 4: время ожидания до установки первого противоположного ордера (лока), если есть условия для его открытия. По умолчанию – 6 минут. Если равно 0, то задержки не будет.
10. Параметр 5: шаг от просевшего «начального» ордера Buy 1 до лока. По умолчанию – 10 пунктов.
11. Параметр 6: шаг от лока до разруливающего ордера. По умолчанию – 10 пунктов.
12. Если сработал Stop Sell 2 (Sell 2), и он в плюсе, то ждем пока связка Buy 1+ Sell 1+Sell 2 достигнет или превысить профит «параметр 3» и закрываем все 3 ордера, возвращаемся к пункту 1.
13. Если сработал Stop Sell 1, но цена пошла наверх, Sell 1 в минусе, а Buy 1 в плюсе, то ставим Stop Buy (Buy 3) на расстоянии «параметр 6» выше цены открытия Buy 1.
14. Если открылся Buy 3 и он в плюсе, то ждем достижения или превышения связкой Sell 2+Buy 2+Buy 3 профита «параметр 3».
15. Минусом ордера считается, если он меньше 0 в течение «параметр 7» секунд.
16. Параметр 7 – время, в течение которого ордер «не считается» просевшим.
17. Цикл продолжается до тех пор, пока не закроются все связки.
18. При соблюдении ТЗ никаких отдельно болтающихся ордеров в итоге не должно оставаться.
Когда ситуация приводит к возникновению лока вручную я делаю так:
1. Как только сработал лок, я сразу выставляю по обе стороны от открытых ордеров stop ордера, выполняющие роль разруливающих. Выставляю точку закрытия для всех ордеров по таблице.
2. Если цена идет вверх, то серия ордеров (в идеале их всего 3 – 2 buy и 1 sell) закрывается по тейк-профиту для buy и по стоп-лоссу для sell (учитываю при этом различие в цене покупки/продажи, чтобы все в один момент закрылось). Если цена пошла вниз, то будет закрытие по тейк-профиту для sell и стоп-лоссу для buy.
3. Если цена пошла наверх после открытия, разруливающего sell, то я для него ставлю 2 stop bye с заданным шагом независимо от других открытых ордеров и выставленных stop ордеров.
4. Как только срабатывает очередной stop ордер я для него выставляю 2 противоположных stop ордера, если цена ушла дальше, чем начальный шаг по ТС (просто пропустил момент), то смотрю по таблице где будет точка закрытия…
5. Плюю на понятие «лок» и прочие рядом стоящие с высокой колокольни)))