Как часто бывает, что выставленный ордер стремиться к заранее выставленному ТейкПрофиту, но не добегая до него несколько пунктов разворачивается, ордер выбивает по СтопЛоссу. Ох как обидно, опять минус, депозит стремиться к нулю, а такие были надежды на заработок.
Ладно если мы сидим за компьютером и смотрим на движение котировок, можно и успеть среагировать на откат и закрыть ордер, пусть и не с желаемой прибылью, но все же в плюс. А если торгует робот? Такими темпами он точно опустит депозит до 0.
Давным давно придумана технология слежения за ордером, вывода его в безубыток. Данная технология называется – ТрейлингСтоп (трал). Суть заключается в следующем:
Система следит за ордером и при достижении определенного значения прибыли ордер переводится в безубыток, то есть стоплосс ставиться в значение равное открытию ордера, а дальше при увеличении прибыли – стоплосс подтягивается за ценой на расстояние равное этому значению. И даже если цена развернется и пойдет в обратном направлении, ордер закроется по стоплоссу но в прибыли, или как минимум без убытка.
Довольно таки удобная вещь, но есть одно но – трейлингстоп хорошо ведет себя при явном тренде, когда цена явно стремиться в одну сторону и колебания цены не очень высоки, иначе это грозит обернуться постоянным закрытием ордеров с маленьким профитом или вообще без прибыли. Так что же делать, ведь хочется не только не потерять средства, но и хорошо заработать?
Пришлось дорабатывать систему до желаемого результата, смотрим, что получилось.
Идея: При достижении определенного значения профита стоплосс подтягивается и происходит закрытие половины ордера (фиксирование прибыли). При дальнейшем росте профита стоплосс движется за ценой и постоянно закрывается половина ордера до тех пор пока полностью не закроется. Такая технология хорошо себя зарекомендовала себя при явном флете (сильных колебаниях цены в определенном промежутке).
Стандартный трал здесь описывать не буду (он есть в стандартном советнике MACD Sample.mq4, поставляемом вместе с терминалом). Остановлюсь только на дополнениях:
1. Вводим дополнительную логическую переменную, которая определяет принцип работы трала (стандартный, модернизированный)
Глобальная переменная:
extern bool PolLots = true; // тип трейлинга: true – модернизированный, false – стандартный.
2. Вводим в блок глобальных переменных переменную для величины срабатывания трала:
extern double TrailingStop = 150; // значение срабатывания трала в пунктах
3. Сама процедура:
void TrailingStairs(int ticket,int trldistance)
{
if (OrderType()==OP_BUY)
{
if((Bid-OrderOpenPrice())>(Point*trldistance))
{
if(OrderStopLoss()<Bid-Point*trldistance || (OrderStopLoss()==0))
{
OrderModify(ticket,OrderOpenPrice(),Bid-Point*trldistance,OrderTakeProfit(),0,Green);
if (PolLots)
if (NormalizeDouble(OrderLots()/2,1)>MarketInfo(Symbol(), MODE_MINLOT))
{
OrderClose(ticket,NormalizeDouble(OrderLots()/2,1),Bid,3,Green);
}
else
{
OrderClose(ticket,OrderLots(),Bid,3,Green);
}
}
}
}
else
{
if((OrderOpenPrice()-Ask)>(Point*trldistance))
{
if((OrderStopLoss()>(Ask+Point*trldistance)) || (OrderStopLoss()==0))
{
OrderModify(ticket,OrderOpenPrice(),Ask+Point*trldistance,OrderTakeProfit(),0,Red);
if (PolLots)
if (NormalizeDouble(OrderLots()/2,1)>MarketInfo(Symbol(), MODE_MINLOT))
{
OrderClose(ticket,NormalizeDouble(OrderLots()/2,1),Ask,3,Green);
}
else
{
OrderClose(ticket,OrderLots(),Ask,3,Green);
}
}
}
}
}
Если сравнить со стандартным тралом, то можно увидеть что добавляется только такой код:
1. if (PolLots)
2. if (NormalizeDouble(OrderLots()/2,1)>MarketInfo(Symbol(), MODE_MINLOT))
3. {
4. OrderClose(ticket,NormalizeDouble(OrderLots()/2,1),Ask,3,Green);
5. }
6. else
7. {
8. OrderClose(ticket,OrderLots(),Ask,3,Green);
9. }
Вот на нем и становимся.
Первая строка – определяем какой используется трал стандартный или модернизированный, если стандартный, то дальне код не выполняется.
Вторая строка – проверяем половина открытого ордера больше значения минимального лота или нет.
Если больше, то выполняется 4 строка, если нет, то 8-ая.
Обратите внимание, используется оператор округления (NormalizeDouble) для того, что бы при делении не получилось недопустимое для размера ордера число.
Ну а строки 4 и 8 выполняют в принципе одно и тоже – закрывают ордер, только в строке 8 – закрывается весь, так уменьшить его уже невозможно, а в 4-ой строке закрывается только половина ордера.
Ну а теперь самое простое – вставляем в нужное место советника вызов процедуры и смотрим, как он будет работать:
TrailingStairs(OrderTicket(),TrailingStop);
Процедуре передается два значения: Номер нужного ордера и размер трала в пунктах.
Ну а теперь примеры работы:
Работа одно и того же советника за последние 10 дней.
Инструмент: EURJPY_FX (EURO vs JAPANESE YEN)
Интервал: 5 Минут (M5) 2009.10.14 00:00 – 2009.10.22 23:55
Параметры советника идентичны, за исключением принципа работы трала.
Включаем модернизированный трал:
| Начальный депозит | 10000.00 | ||||
| Чистая прибыль | 13397.47 | Общая прибыль | 20106.10 | Общий убыток | -6708.63 |
| Прибыльность | 3.00 | Матожидание выигрыша | 705.13 | ||
| Абсолютная просадка | 3078.23 | Максимальная просадка | 10682.00 (52.09%) | Относительная просадка | 52.58% (7675.77) |
| Всего сделок | 19 | Короткие позиции (% выигравших) | 1 (0.00%) | Длинные позиции (% выигравших) | 18 (94.44%) |
| Прибыльные сделки (% от всех) | 17 (89.47%) | Убыточные сделки (% от всех) | 2 (10.53%) | ||
| Самая большая | прибыльная сделка | 4930.46 | убыточная сделка | -4079.07 | |
| Средняя | прибыльная сделка | 1182.71 | убыточная сделка | -3354.32 | |
| Максимальное количество | непрерывных выигрышей (прибыль) | 10 (8511.45) | непрерывных проигрышей (убыток) | 1 (-4079.07) | |
| Максимальная | непрерывная прибыль (число выигрышей) | 11594.65 (7) | непрерывный убыток (число проигрышей) | -4079.07 (1) | |
| Средний | непрерывный выигрыш | 9 | непрерывный проигрыш | 1 | |

Работает стандартный трал:
| Начальный депозит | 10000.00 | ||||
| Чистая прибыль | 5865.61 | Общая прибыль | 15120.75 | Общий убыток | -9255.14 |
| Прибыльность | 1.63 | Матожидание выигрыша | 1173.12 | ||
| Абсолютная просадка | 3449.19 | Максимальная просадка | 11376.01 (63.46%) | Относительная просадка | 63.46% (11376.01) |
| Всего сделок | 5 | Короткие позиции (% выигравших) | 2 (0.00%) | Длинные позиции (% выигравших) | 3 (66.67%) |
| Прибыльные сделки (% от всех) | 2 (40.00%) | Убыточные сделки (% от всех) | 3 (60.00%) | ||
| Самая большая | прибыльная сделка | 7971.16 | убыточная сделка | -3819.30 | |
| Средняя | прибыльная сделка | 7560.37 | убыточная сделка | -3085.05 | |
| Максимальное количество | непрерывных выигрышей (прибыль) | 1 (7971.16) | непрерывных проигрышей (убыток) | 2 (-6625.30) | |
| Максимальная | непрерывная прибыль (число выигрышей) | 7971.16 (1) | непрерывный убыток (число проигрышей) | -6625.30 (2) | |
| Средний | непрерывный выигрыш | 1 | непрерывный проигрыш | 2 | |

Как видим, в данный момент использование модернизированного трала дает положительный эффект: прибыль увеличилась, просадка уменьшилась, увеличилось точность входа в ордер (процент прибыльных ордеров увеличился более чем в два раза).
Вроде получился великолепный трал, надо его использовать и забыть про стандартный трал, предложенный разработчиком терминала MetaQuotes Software, но повторюсь модернизированный трал хорошо ведет себя во флете, при явном тренде он сильно ограничивает прибыль и его надо переключать в режим работы стандартного трала.
Пробуйте вставить предложенный трал в свой советник и погонять его на тестах, посмотрите что получиться, вдруг да понравиться его работа.
Пример советника с использование данного трала Stoh.mq4






22 коммент.
Alex Duran
Вы пишите, что условия советника для примеров идентичны. Непонятно тогда почему в первом примере 19 сделок, а во втором всего 5.
26 октября 2009
zerkmax
>Вы пишите, что условия советника для примеров идентичны. Непонятно тогда почему в первом примере 19 сделок, а во втором всего 5.
разная работа трала: модернизированный трал закрывает по полордера, соответственно количество ордеров увеличивается (механизм закрытия части таков, что закрывается ордер и на остаток открывается новый)
26 октября 2009
DimonBOB
кстати в целом идея закрытия части ордера очень зхороша, потому как бывает что направление оперделено верно идет потом откатывает и выбивает в ноль. и встает вопрос т толи закрыть все толи что…
7 ноября 2009
Медик Лекарь
Спасибо вам за статью, только почему не пишите продолжение?
5 декабря 2009
CCleaner
Благодарю!
5 декабря 2009
Ереван
Очень полезный блог, автор всегда (почти) описывает актальные темы. Спасибо.
6 декабря 2009
webmoney через sms
А ссылка на источник где?)
25 января 2010
zerkmax
>>А ссылка на источник где?)
на какой источник? статья полностью авторская
25 января 2010
Musicdown Pre
Отличная работа!
9 февраля 2010
Apple
Спасибо огромное!
18 февраля 2010
moroz
Подскажите пожалуйста, есть советник Мартин, который торгует без стопов, только профит, как к советнику прилепить тралстоп или второй советник который будет следить за ордерами и ставить ТС когда ордер уходит в прибыль, советник типа e-Trailing?
Заранее благодарен.
7 марта 2010
zerkmax
>Подскажите пожалуйста, есть советник Мартин, который торгует без стопов, только профит, как к советнику прилепить тралстоп или второй советник который будет следить за ордерами и ставить ТС когда ордер уходит в прибыль, советник типа e-Trailing?
Заранее благодарен.
Самое простое обратиться к автору советников. Либо учить язык. Сами названия советников ничего не дают.
7 марта 2010
Лоликон
Спасибо автору блога за предоставленную информацию.
8 марта 2010
webmoney через sms
Интересно, но все же хотелось бы побольше узнать об этом. Понравилась статья!:-)
8 марта 2010
Infolider
Познавательно. Возьму на заметку.
6 июля 2010
Satrek
А подробней в деталях можно рассказать? заранее спс.
12 июля 2010
zerkmax
>> А подробней в деталях можно рассказать? заранее спс.
куда уж подробнее?
12 июля 2010
MWMiguel
хорошая статья, мне очень понравилась! жду новых публикаций на вашем блоге
6 сентября 2010
infolider
Хм. Если чесно, то не ожидал найти что-то интересное для себя на этом сайте. Приятно удивлен. Хорошие посты и сайт неплохой.
24 сентября 2010
braginforsc
Сомнительная новость, как долго ожидать поступление обновлённого материала и вообщем стоит ожидать ?
20 ноября 2010
adghvnov
Хорошая статья! читать было интересно, а также узнал много нового
27 ноября 2010
fishmak
Мне все очень понравилось. Автор молодец.
14 февраля 2011