Часто при использовании той или иной торговой системы необходимо осуществлять процедуру переноса СЛ в безубыток. Рассмотрим теорию этого вопроса и программную реализацию в MQL4.
Прежде всего определим переменные которые помогут разобрать теорию этого вопроса.
Пусть
Y0 - цена открытия позиции;
Y1 - текущая цена (Bid или Ask в зависимости от типа позиции);
lp - профит в пнт. после которого СЛ переносится в безубыток
lw - уровень безубытка в пунктах
Переменные lp и lw имеют следующий смысл. Логично переносить СЛ в безубыток после того, как цена прошла некоторое расстояние в прибыль, поэтому чтобы задать это расстояние мы определим переменную lp.
Далее, далеко не всегда удобно выставлять безубыток прямо точно на цену открытия сделки, иногда нужно немного сместить СЛ и в профитную зону (вообще говоря можно и в убыточную, но не рекомендуется, т.к. тогда теряется весь смысл безубытка). Поэтому вводится переменная lw, которая позволяет сместить уровень безубытка в профитную зону. Обычно, по умолчанию, выбирают 1-2 пнт. по четырехзнаку.
1. Рассмотрим позицию на покупку
На рисунке видно (см. рисунок ниже), что как только цена пройдет в прибыльную сторону расстояние не менее lp нужно перенести СЛ (SL0) в положение цена открытие позиции (Y0) плюс заданное расстояние (lw). При этом в коде нужно учесть случай, когда начальный СЛ вообще не задан, т.е. нулевой.
2. Рассмотрим позицию на продажу
Аналогично для позиции на продажу, только рисунок будет другим (см. рисунок ниже):