English 中文 Español Deutsch 日本語 Português
preview
Стоп-лосс и тейк-профит, дружелюбные к трейдеру

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

MetaTrader 5Трейдинг | 15 ноября 2023, 13:59
3 018 18
Aleksej Poljakov
Aleksej Poljakov

Введение

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

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

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

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

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

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

Такой подход связан скорее с субъективными оценками трейдера. И эта субъективность может привести к большим проблемам. Например, если трейдер не ставит стоп-лосс, то за него это сделает брокер. А чтобы не возникло путаницы в терминах, брокер назовет свой уровень «стоп-аутом». Уровень стоп-лосса от брокера всегда можно узнать с помощью функции 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%

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

  • оптимальные стоп-приказы;
  • стоп-лоссы уменьшены на 10 пунктов;
  • тейк-профиты увеличены на 10 пунктов.

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

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

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. Тогда, мы получим следующие значения:

  • 1440/1440 = 1;

  • 600/60 = 10;

  • 20/1 = 20.

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

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

То есть, с точки зрения выбора стоп-приказов мы можем рассуждать так. Допустим, что мы рассчитываем получить прибыль в течение 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


Прикрепленные файлы |
Lvl_SL_6_TP.mq5 (21.89 KB)
EA_SLuTP.mq5 (3.56 KB)
EA_TIM.mq5 (7.01 KB)
Последние комментарии | Перейти к обсуждению на форуме трейдеров (18)
Aleksej Poljakov
Aleksej Poljakov | 16 нояб. 2023 в 08:58
fxsaber #:

Именно так. Имеет значение относительное изменение.


Посмотрел исходник сравнения и не понял, почему там используется модуль.

Поэтому в оригинале убрал модуль и внес только такие изменения.

EURUSD.



USDEUR.

Стало похоже на теорию.

Модуль использовал только для того, чтобы показать что разница есть. А уж положительная она или отрицательная - какая разница). Главный вывод из этой разницы - стоп-лоссы и тейк-профиты для buy и sell будут отличаться.

fxsaber
fxsaber | 16 нояб. 2023 в 09:00

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

Это замечательное рассуждение. Но потом считается, что вероятности SL и TP - это именно те значения, что посчитали на графиках по исходной методике. А в ней независимо считались вероятности SL и TP.

Например, если была посчитана вероятность TP, то это автоматическо обозначает, что посчитана вероятность SL. Но на деле это не так. Идет оперирование иными величинами.

Aleksej Poljakov
Aleksej Poljakov | 16 нояб. 2023 в 09:15
fxsaber #:

Это замечательное рассуждение. Но потом считается, что вероятности SL и TP - это именно те значения, что посчитали на графиках по исходной методике. А в ней независимо считались вероятности SL и TP.

Например, если была посчитана вероятность TP, то это автоматическо обозначает, что посчитана вероятность SL. Но на деле это не так. Идет оперирование иными величинами.

Берем два кубика. Считаем выигрышем то, что на одном кубике выпадет 3, а на другом - 5. Какова вероятность выигрыша? Теперь покрасим кубики в разные цвета. Выигрышем будем считать если на красном кубике выпадет 4 и больше, а на синем - меньше 5. Какова вероятность выигрыша в этом случае?

fxsaber
fxsaber | 16 нояб. 2023 в 09:20
Aleksej Poljakov #:

Берем два кубика. Считаем выигрышем то, что на одном кубике выпадет 3, а на другом - 5. Какова вероятность выигрыша? Теперь покрасим кубики в разные цвета. Выигрышем будем считать если на красном кубике выпадет 4 и больше, а на синем - меньше 5. Какова вероятность выигрыша в этом случае?

Зачем сторонние ассоциации, когда можно на таком примере.

Рассматриваем только BUY-позиции. Пусть всегда до того, как достигается TP, цена успевает сходить на -200 пунктов. Тогда при SL = 200 вероятность тейка ноль.

Dmitrii Troshin
Dmitrii Troshin | 6 февр. 2024 в 13:26
"Любая позиция закроется либо по тейк-профиту, либо по стоп-лоссу." Позиция может вообще не закрыться. На рынке флэт - цена не дойдёт ни до TP ни до SL.
Нейросети — это просто (Часть 64): Метод Консервативного Весового Поведенческого Клонирования (CWBC) Нейросети — это просто (Часть 64): Метод Консервативного Весового Поведенческого Клонирования (CWBC)
В результате тестов, проведенных в предыдущих статьях, мы пришли к выводу, что оптимальность обученной стратегии во многом зависит от используемой обучаемой выборки. В данной статье я предлагаю вам познакомиться с довольно простым и эффективном методе выбора траекторий для обучения моделей.
Разработка системы репликации - Моделирование рынка (Часть 18):  Тики и еще больше тиков (II) Разработка системы репликации - Моделирование рынка (Часть 18): Тики и еще больше тиков (II)
В данном случае предельно ясно, что метрики очень далеки от идеального времени создания 1-минутного бара. Так что это первое, что мы действительно исправим. Исправить проблему синхронизации не сложно. Каким бы невероятным это ни казалось, на самом деле всё довольно просто. Однако мы не внесли исправление в предыдущую статью, потому что целью было объяснить, как перенести в окно Обзора рынка тиковые данные, которые использовались для создания 1-минутных баров на графике.
Разработка системы репликации - Моделирование рынка (Часть 19): Необходимые корректировки Разработка системы репликации - Моделирование рынка (Часть 19): Необходимые корректировки
Здесь мы подготовим почву для того, чтобы при необходимости добавления новых функций в код это происходило плавно и легко. Текущий код пока не может охватывать или обрабатывать некоторые моменты, которые будут необходимы для значимого прогресса. Нам нужно, чтобы всё было построено так, чтобы усилия по реализации некоторых вещей были минимальными. Если сделаем всё правильно, мы сможем получить действительно универсальную систему, способную очень легко адаптироваться к любой ситуации, которую необходимо охватить.
Нейросети — это просто (Часть 63): Предварительное обучение Трансформера решений без учителя (PDT) Нейросети — это просто (Часть 63): Предварительное обучение Трансформера решений без учителя (PDT)
Продолжаем рассмотрение семейства методов Трансформера решений. Из предыдущих работ мы уже заметили, что обучение трансформера, лежащего в основе архитектуры данных методов, довольно сложная задача и требует большого количества размеченных обучающих данных. В данной статье мы рассмотрим алгоритм использования не размеченных траекторий для предварительного обучения моделей.