Стоп-лосс и тейк-профит, дружелюбные к трейдеру

Aleksej Poljakov | 15 ноября, 2023

Введение

Если бы величайший драматург мог написать эпиграф к этой статье, то он, возможно, выразился бы так:

Быть или не быть? Вот в чем вопрос:

Стоп-лосс поставить от неистового рынка,

Или тейк-профитом всю прибыль получить?

Стоп-лосс и тейк-профит — это стоп-приказы, которые закрывают позицию, когда цена достигает их значения. Стоп-лосс позволяет ограничить убытки, а тейк-профит дает возможность зафиксировать прибыль. Основное преимущество от применения стоп-лосса и тейк-профита – возможность контролировать финансовые риски и использовать управление капиталом.

Но некоторые трейдеры предпочитают обходиться без стоп-приказов. Их аргументация довольно проста. По их мнению, бывают ситуации, когда цена достигает стоп-лосса, а потом разворачивается. Если бы не было стоп-лосса, то позиция могла бы закрыться в плюсе. Такой же аргумент и в отношении тейк-профита. Цена достигла его уровня, позиция закрылась. Но цена продолжает двигаться в том же направлении, и если бы тейк-профит не был задан, то можно было бы получить дополнительную прибыль.

Такой подход связан скорее с субъективными оценками трейдера. И эта субъективность может привести к большим проблемам. Например, если трейдер не ставит стоп-лосс, то за него это сделает брокер. А чтобы не возникло путаницы в терминах, брокер назовет свой уровень «стоп-аутом». Уровень стоп-лосса от брокера всегда можно узнать с помощью функции AccountInfoDouble с идентификатором ACCOUNT_MARGIN_SO_SO. Так же и с тейк-профитом – возможно, что сам трейдер неправильно выбрал его уровень, и поэтому не добирает всю возможную прибыль?

Давайте попробуем подойти к выбору уровней стоп-лосса и тейк-профита рационально.


Подготавливаем данные

Итак, давайте познакомимся с предметом нашего исследования. Сначала нам нужно выяснить? какие уровни может достигать цена при движении вверх и вниз. Также, нас интересует как часто тот или иной уровень встречается в истории.

Мы будем использовать довольно простую модель. Предположим, что каждая позиция открывается по цене open. Также, определим продолжительность удержания позиции в N баров. Нас интересуют максимальные отклонения цены вверх и вниз. Именно их значения мы будем собирать для статистики. Для примера я использовал время удержания позиции 5 баров, а графически это выглядит так.

В результате мы получим сколько раз встречалось то или иное отклонение цены на исторических данных. Иначе говоря, мы получили оценку вероятности того, что цена достигнет заданного уровня. Например, так выглядит статистика для движения цены вверх.

И вниз.

Первое, что бросается в глаза – большие отклонения, они встречаются реже. Второй важный результат – это отличие между движениями цены вверх и вниз.

Эта разница указывает нам на то, что значения стоп-лоссов и тейк-профитов для позиций Buy и Sell могут отличаться друг от друга.

Теперь нам необходимо сделать еще один шаг. Условие срабатывания стоп-лосса и тейк-профита можно сформулировать так – цена достигнет заданного уровня и, может быть, пойдет дальше.

Чтобы оценить вероятность того, что стоп-лосс или тейк-профит сработает на заданном уровне, нам потребуется дополнительные кумулятивные функции. Суть дополнительной кумулятивной функции очень проста – нужно просуммировать вероятность данного уровня с вероятностями всех уровней, следующих за ним.

На практике найти эту функцию можно так. Возьмем оценку вероятности, которую мы получили вначале. Начиная с предпоследнего по своей величине уровня нам нужно найти суммы вида:

В результате у нас должна получиться вот такая картинка.

Еще раз напомню. Вначале мы получили вероятность того, что цена достигнет именно этого уровня, и никакого другого. А сейчас мы получили вероятность того, что цена достигнет этого уровня и, возможно, пойдет дальше.

Теперь мы можем приступать к основной части нашего исследования.


Независимые SL & TP

Итак, мы знаем вероятности того, что цена достигнет того или иного уровня. Сейчас перед нами стоит задача монетизировать эти знания. И начнем мы с … Кстати, вы замечали, что во всех своих продуктах компания MetaQuotes сначала предлагает установить стоп-лосс, и только потом тейк-профит? Это потому, что там работают одни пессимисты. А мы с вами оптимисты и поэтому начнем с тейк-профита.

Любой трейдер заинтересован в том, чтобы тейк-профит был большим. Чем больше тейк-профит, тем больше прибыль. Но, как мы уже видели, увеличение тейк-профита ведет к снижению вероятности его исполнения. При рациональном подходе нам необходимо найти максимальный тейк-профит с максимально возможной вероятностью его выполнения:

Давайте посмотрим возможно ли выполнение этого условия.

Да, у нас есть четко выраженный максимум, и это значение тейк-профита мы можем принять в качестве оптимального.

Теперь мы можем приступать к поиску оптимального стоп-лосса. На первый взгляд все довольно просто – нам нужен минимальный стоп-лосс с минимальной вероятностью его исполнения. Но эта простота обманчива. На самом деле нам придется делать все наоборот.

Когда мы собирали статистику по отклонениям цены, мы получили, в том числе, и максимальное значение. Теперь, при оценке оптимальности мы можем взять разность между этим максимумом и значением стоп-лосса. Чем больше эта разность, тем лучше. Так же поступим и при оценке вероятности исполнения. Маленькая вероятность исполнения равносильна большой вероятности неисполнения. То есть, мы ищем выполнение такого условия:

Проверяем. Да, такой максимум существует, оптимальный стоп-лосс найден.

Для EURUSD, H1, продолжительность удержания позиции 5 баров, у меня получились следующие значения.


SL / Probability TP / Probability
Buy 622 / 6.90% 210 / 37.28%
Sell 603 / 7.28% 220 / 35.31%

Давайте проверим насколько оптимальны эти значения. Я буду использовать простую стратегию – позиции открываются на каждом новом баре, если нет открытых позиций. Тип позиции выбирается случайно. Проверяем три варианта:

Так выглядит кривая баланса при использовании оптимальных стоп-приказов.

А результаты тестирования по всем вариантам представлены в таблице.

Total Net Profit Gross Profit Gross Loss Profit Factor Expected Payoff
303.02 1 870.84 -1 567.82 1.19 0.27
100.79 1 817.04 -1 716.25 1.06 0.09
135.07 1 773.24 -1 638.17 1.08 0.13

Несколько слов о практическом применении такого подхода.

Во-первых, вы можете использовать его так как есть, и реализовать в виде индикатора. Тогда вы получите своеобразные уровни поддержки и сопротивления.

Во-вторых, предположим, что у вас есть торговая стратегия, которая генерирует сигналы на открытие и закрытие позиций. Тогда вы можете поступить так. Сначала собираете статистику для сигналов Buy и Sell раздельно. При этом, время удержания позиции считается от сигнала открытия, до сигнала закрытия.

Конечно же, вы можете использовать только тейк-профит, или только стоп-лосс. Они не зависят друг от друга, поэтому их раздельное применение вполне допустимо.


Математическое ожидание

Концепция математического ожидания известна давно, и широко применяется в трейдинге. Например, индикатор SMA показывает математическое ожидание цены. А в статье «Математика в трейдинге. Оценка результатов торговых сделок» подробно показано как с помощью математического ожидания можно оценивать торговые стратегии.

Давайте попробуем применить математическое ожидание к вычислению стоп-приказов. Вся необходимая статистика у нас уже есть. Нам остается только понять, что и как мы будем считать.

Математическое ожидание для позиции мы можем рассчитать по формуле:

Где p – вероятность того, что позиция закроется по тейк-профиту. И эту вероятность нам и нужно найти.

Любая позиция закроется либо по тейк-профиту, либо по стоп-лоссу. Других вариантов нет. Значит, полная вероятность для этих двух событий должна быть равна 1. Вероятность того, что позиция закроется по тейк-профиту складывается из двух составляющих: вероятности того, что цена достигнет уровня тейк-профита и вероятности того, что цена не достигнет уровня стоп-лосса. Аналогичным образом мы рассуждаем и о закрытии позиции по стоп-лоссу. Тогда, формула математического ожидания будет выглядеть так:

Нам осталось только найти такие значения стоп-лосса и тейк-профита, чтобы математическое ожидание было положительным. Например, максимального ожидания можно достичь при таких значениях стоп-приказов.


SL / Probability TP / Probability Expected value
Buy 4611 / 7.69% 3690 / 92.31% 3051.53
Sell 4071 / 14.29% 3950 / 85.71% 2804.19

На практике математическое ожидание можно использовать так. Сначала нужно выбрать определенное значение стоп-лосса или тейк-профита. А потом, найти оптимальное значение другого стоп-приказа. Например, я взял значения стоп-лоссов из предыдущего примера, и нашел к ним тейк-профиты с наибольшим математическим ожиданием. У меня получились следующие значения:


SL / Probability TP / Probability Expected value
Buy 622 / 19.24% 310 / 80.76% 130.68
Sell 603 / 19.25% 300 / 80.75% 126.13

А вот так выглядит изменение баланса.

Кроме математического ожидания можно использовать и другие критерии. Например, критерий

позволяет получить значения стоп-приказов, которые дадут оптимальное отношение средней прибыли к среднему убытку.


Время и профит

Афоризм «Время – деньги» слышали все. Давайте посмотрим, работает ли этот афоризм (и если работает, то как) в трейдинге.

Любой рациональный трейдер заинтересован в получении прибыли. И чем эта прибыль больше, тем лучше для трейдера. Я предлагаю вам на выбор 3 торговых стратегии: первая приносит 1440 пунктов прибыли, вторая – 600, а третья – 20. Какую стратегию вы выберите?

Тут я сделаю небольшое уточнение. Первая стратегия приносит прибыль за день, вторая – за час, а третья – за минуту. Очевидно, что для оценки прибыльности этих стратегий, нам нужно привести их к одному временному интервалу. Например, к M1. Тогда, мы получим следующие значения:

То есть, для оценки стратегий мы использовали критерий:

Давайте попробуем применить такой же подход к расчету стоп-приказов. Очевидно, что трейдер заинтересован получить максимальную прибыль за минимальное время. Точно так же он стремится к минимальным убыткам, а время наступления этих убытков отодвинуть как можно дальше.

То есть, с точки зрения выбора стоп-приказов мы можем рассуждать так. Допустим, что мы рассчитываем получить прибыль в течение 5 баров. Тогда, мы можем сдвинуть стоп-лосс по времени исполнения на большее время. Например, время исполнения стоп-лосса можно установить в 7 или 10 баров. В этом случае величина стоп-лосса увеличится, но при этом уменьшится вероятность его исполнения.

Такой подход можно применять в стратегиях, у которых есть сигналы на открытие позиций и нет сигнала на их закрытие. Позиции должны закрываться только при достижении стоп-лосса или тейк-профита.

Для примера я взял время выполнения тейк-профита равное 5 барам. А время исполнения стоп-лосса – в 5, 10 и 15 баров. Один из вариантов изменения торгового баланса выглядит так.

А основные результаты тестирования приведены в таблице.

Total Net Profit Gross Profit Gross Loss Profit Factor Expected Payoff
-1 462.31 45 593.97 -47 056.28 0.97 -0.13
3 177.61 59 307.98 -56 130.37 1.06 0.28
1 833.58 59 963.97 -58 130.39 1.03 0.16

Как мы можем видеть, изменение времени исполнения стоп-лосса может положительно сказаться на результатах трейдинга.


Заключение

При написании статьи были использованы следующие программы.

Название Тип Описание
Lvl SL & TP Скрипт Этот скрипт позволяет рассчитать оптимальные стоп-лосс и тейк-профит.
  • Duration устанавливает ожидаемое время удержания позиции в барах. От него зависит размер SL и TP. Результаты вычислений выводятся во вкладке Эксперты
  • Verifiable SL и Verifiable TP - позволяют установить стоп-лосс или тейк-профит для которых нужно подобрать наилучшее математическое ожидание. Результаты вычислений сохраняются в папке Files
EA SL&TP Эксперт Позволяет проверить уровни стоп-лосса и тейк-профита.
  • Seed - начальное число, влияет на последовательность позиций. Если значение не равно 0, то позиции будут повторяться, это поможет сравнить разные стоп-лоссы и тейк-профиты
  • SLBuy, TPBuy, SLSell, TPSell - стоп-лоссы и тейк-профиты для позиций. Их значения можно брать из скрипта  Lvl SL & TP
EA TIM Эксперт Позволяет проверить гипотезу о разном времени для SL и TP.
  • Seed - начальное число, влияет на последовательность позиций.
  • DurationTP - ожидаемое время наступления тейк-профита
  • ShiftSL - на сколько баров дольше будет ожидаться SL