Стратегия стоп-лосса и тейк-профита на основе индикаторов


Дата создания: 2023-11-10 11:28:06 Последнее изменение: 2023-11-10 11:28:06
Копировать: 1 Количество просмотров: 728
1
Подписаться
1617
Подписчики

Стратегия стоп-лосса и тейк-профита на основе индикаторов

Обзор

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

Стратегический принцип

Основная логика этой стратегии заключается в следующем:

  1. использование 3-циклического SMA в качестве торгового сигнала, когда SMA выше 0, а SMA ниже 0 - ниже;

  2. После входа пользователь может настроить стоп-лосс и стоп-стоп;

  3. автоматическая установка линий стоп-лосса в зависимости от цены входа и пользовательских настроек;

  4. Автоматическая установка линий задержки в зависимости от цены за вход и пользовательских настроек;

  5. автоматическая остановка, когда цена касается линии остановки; автоматическая остановка, когда цена касается линии остановки;

  6. После ликвидации позиции автоматически отменяется стоп-стоп.

В частности, стратегия рассчитывает скользящую среднюю за 3 цикла с помощью функции sma и присваивает ее значение переменной ma.

Затем вычисляется многоугольная входная линия long, значение которой составляет ma плюс процент ma от lo. lo - это пользовательский параметр, который представляет собой отклонение входной линии во время выполнения многоугольной операции.

Когда ma наносится на 0, то начинается лишний доход, который вводится через функцию strategy.entry, цена входа long。

В то же время, установить стоп-убыток и стоп-цену. Стоп-убыток - это цена входа за вычетом sl% от цены входа. sl - это пользовательский параметр, который представляет собой стоп-процент. Стоп-убыток - это цена входа плюс tp% от цены входа.

Посредством функции strategy.entry устанавливаются стоп-ордер и стоп-ордер. Когда цена касается линии стоп-ордера, она автоматически останавливается; когда цена касается линии стоп-ордера, она автоматически останавливается.

После выбытия позиции, с помощью функции strategy.cancel автоматически отменяется стоп-стоп-ордер.

Стратегические преимущества

Эта стратегия имеет следующие преимущества:

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

  2. Настраиваемые коэффициенты остановки убытков для управления рисками;

  3. Это означает, что мы не можем использовать криптовалюты, чтобы вывести их из строя, и мы не можем использовать криптовалюты.

  4. Визуализация остановки торможения, прямолинейность;

  5. Стратегическая логика ясна, проста и легко понятна.

Риски и решения

Однако есть и другие риски:

  1. Риск создания ложных сигналов. Решение - оптимизация параметров, чтобы гарантировать стабильность и надежность показателя.

  2. Установка стоп-стоп-процентов может быть необоснованной, слишком мягкой или слишком радикальной. Решение состоит в том, чтобы скорректировать параметры стоп-стоп-стоп для разных рынков.

  3. Прорывный вход легко поддается ловушке. Решение состоит в том, чтобы фильтровать входные сигналы в сочетании с тенденциями, количественными показателями и т. Д.

  4. Возвращение может быть более крупным. Решение заключается в снижении стандарта позиции или отслеживании стоп-лосса.

Направление оптимизации стратегии

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Оптимизация параметров движущихся средних, чтобы сделать их более надежными;

  2. Оптимизация условий входа, предотвращение фальшивых прорывов, подтверждение количества, которое может быть добавлено;

  3. Оптимизация стратегии остановки убытков, которая может использовать динамические остановки, отслеживание остановки убытков и т. д.;

  4. Оптимизация управления капиталом, корректировка критериев позиций, снижение риска в отдельных случаях;

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

  6. Присоединяйтесь к Pyramiding для стратегии по наращиванию запасов, чтобы повысить прибыльность.

  7. Оптимизация параметров для конкретных сортов.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-01-01 00:00:00
end: 2023-11-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("example for panel signals", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//https://www.tradingview.com/script/m2a04xmb-noro-s-shiftma-tp-sl-strategy/
//Settings
lo = input(-5.0, title = "Long-line, %")
tp = input(5.0, title = "Take-profit")
sl = input(2.0, title = "Stop-loss")

//SMA
ma = sma(ohlc4, 3)
long = ma + ((ma / 100) * lo)

//Orders
avg = strategy.position_avg_price
if ma > 0
    strategy.entry("Long", strategy.long, limit = long)
    strategy.entry("Take", strategy.short, 0, limit = avg + ((avg / 100) * tp))
    strategy.entry("Stop", strategy.short, 0, stop = avg - ((avg / 100) * sl))
    
//Cancel order
if strategy.position_size == 0
    strategy.cancel("Take")
    strategy.cancel("Stop")

//Lines
plot(long, offset = 1, color = color.black, transp = 0)
take = avg != 0 ? avg + ((avg / 100) * tp) : long + ((long / 100) * tp)
stop = avg != 0 ? avg - ((avg / 100) * sl) : long - ((long / 100) * sl)
takelinecolor = avg == avg[1] and avg != 0 ? color.lime : na
stoplinecolor = avg == avg[1] and avg != 0 ? color.red : na
plot(take, offset = 1, color = takelinecolor, linewidth = 3, transp = 0)
plot(stop, offset = 1, color = stoplinecolor, linewidth = 3, transp = 0)
//
disp_panels = input(true, title="Display info panels?")
h=high
info_label_off = input(20, title="Info panel offset")
info_label_size = input(size.large, options=[size.tiny, size.small, size.normal, size.large, size.huge], title="Info panel label size")
info_panel_x = timenow + round(change(time)*info_label_off)
info_panel_y = h

info_title= "-=-=-=-=- Info Panel -=-=-=-=-"
info_div = "\n\n------------------------------"
a = "\n\ Long : " + tostring(long)
b = "\n\ Stop loss : " + tostring(stop)
c = "\n\ TP : " + tostring(take)
// info_text = a+c+b
// info_panel = disp_panels ? label.new(x=info_panel_x, y=info_panel_y, text=info_text, xloc=xloc.bar_time, yloc=yloc.price, color=color.yellow, style=label.style_labelup, textcolor=color.black, size=info_label_size) : na
// label.delete(info_panel[1])