Приветствую всех форумчан.
Попробую формализовать все вышесказанное для попытки внести все это в код советника.
Итак, что мы имеем. По какому-то сигналу (в данном случае нам это не важно, хоть по звездам) мы решили открыть ордер. Этот ордер назовем основным. Если вдруг совершенно неожиданно цена пошла против нас, то начинаем выставлять локирующие ордера против основного ордера с лотом 1/4 от основного и по определенной методике. Таких открытых (подчеркиваю, "открытых" на данный момент, без учета уже закрытых по безубытку) ордеров должно быть не более 9 и конечном итоге вытянем всю эту конструкцию в плюс.
Формализация для советника. Для начала будем ставить ордера по сетке. Можно и по противоположному сигналу от ТС, но пока так. При выставлении основного ордера намечаем для себя уровни, на которых впоследствии должны открыться локирующие ордера. Таких уровней может быть много больше, чем 9. Далее будет понятно, почему. При касании ценой уровня 1 открываем лок № 1, при касании уровня 2 - лок № 2 и т.д.
Пока все ясно. Что я предлагаю делать при сильной болтанке цены. При открытии ордера на очередном уровне предыдущий ставим безубыток. Если ордер закрылся по безубытку, то новый ордер на этом месте мы будем открывать только в том случае, если цена вернулась к предыдущему за ним уровню.
Например, открыт локирующий ордер 4, соответственно ордера 1, 2 и 3 стоят в безубытке. Далее ордер 3 закрылся по б/у. Ждем, пока цена не опустится ниже уровня 2 (Ордер 2 при этом тоже закроется в б/у), и только после этого будем иметь право на открытие ордера на уровне 3, если цена снова к нему вернется. Ордер на уровне 2 сможем открыть после того, как цена побывает на уровне 1, по пути закрыв ордер 1.
В результате можем получить неравномерно открытые по сетке ордера. В приведенном примере может случиться так, что цена снесет ордер на уровне 2, но к 1-му так и не вернется и первый ордер останется действующим, т.е. права открыть ордер на уровне 2 мы так и не получим.
Тогда ордера могут быть открыты на уровнях 1, 3,4,5,6,7,8,9 и 10. Второго нет, зато есть 10-й, общее количество не более 9 соблюдено. Именно поэтому изначально и намечали уровни открытия больше, чем 9.
Пример на рисунке.
Примерная реализация в прикрепленном коде. Сигнал на покупку/продажу берем по пересечению основной и сигнальной линии MACD. Закрытие всех позиций при пересечении ценой уровней стоплосс и тейкпрофит и положительный баланс от всех ордеров.
Советник для реальной торговли не предназначен. Только для демонстрации моего понимания данного метода, а я могу быть и не прав.
P/s Программистов прошу не сильно бросать в меня камни за бардак в коде. Писал на скорую руку и много раз переписывал, без надежды использовать в будущем. Да и не программист я, просто хобби такое.
P/p/s Кстати, я не сторонник техники локирования вообще и этой в частности. Хотя может что и изменится, пока не перешли всем миром на МТ5. Там такие финты не пройдут в принципе.