Динамическая стратегия закрытия Stop Loss Moving Average


Дата создания: 2024-01-29 15:52:43 Последнее изменение: 2024-01-29 15:52:43
Копировать: 0 Количество просмотров: 621
1
Подписаться
1617
Подписчики

Динамическая стратегия закрытия Stop Loss Moving Average

Обзор

Эта стратегия использует концепцию динамического трейлинг-стопа, чтобы рассчитать долгосрочную и короткую стоп-позиции в зависимости от ATR и ценовых максимумов. В сочетании с идеей Chandelier Exit, в зависимости от того, в какую сторону движется стоп-позиция, чтобы определить долгосрочную и короткую позиции.

Стратегия имеет двойную функцию - одновременно определяет стоп- и входные сигналы.

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

Стратегия состоит из следующих частей:

  1. Вычисление долгосрочной и краткосрочной стоп-линий на основе ATR

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

    longStop = 最高价 - ATR
    shortStop = 最低价 + ATR
  1. Прорыв в определении направления торгов

Сравнение стоп-линии предыдущей K-линии и стоп-линии текущей K-линии. Если стоп-линия текущей K-линии будет прорвана, то будет выпущен торговый сигнал:

    长仓止损线上方突破,做多
    短仓止损线下方突破,做空
  1. Остановка и остановка по сравнению с риском и отдачей

Стоп-стап и стоп-ранш рассчитываются из ATR в зависимости от установленного пользователем риска-возвращения по сравнению с риском-вознаграждения (risk-reward ratio). При открытии позиции устанавливаются стоп-лосс и стоп-плей.

Анализ преимуществ

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

  1. Динамическое отслеживание убытков, своевременное их устранение

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

  1. Одновременно с этим имеет функцию определения убытков и входа.

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

  1. Настраиваемый коэффициент возврата риска

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

  1. Легко понять и расширить

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

Анализ рисков

Однако эта стратегия также несет в себе некоторые риски:

  1. Двусторонние риски

Эта стратегия является двусторонней, при которой принимаются риски как лишнего, так и низкого курса.

  1. ATR-зависимость

Настройка параметров ATR напрямую влияет на линию стоп-лосса и частоту торгов. Неправильная настройка может привести к тому, что стоп-лосса станет слишком мягким или частота торгов станет слишком высокой.

  1. Тенденционная адаптивность рынка

Эта стратегия лучше подходит для прорывов после скорректировки средней линии, а не для сценариев с слишком сильной тенденцией.

В отношении этих рисков можно оптимизировать следующее:

  1. В сочетании с трендовыми показателями

В сочетании с трендовыми индикаторами, такими как MA, оценивайте рыночные тенденции и избегайте контрастной торговли.

  1. Оптимизация параметров

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

  1. Добавить условия фильтрации

Увеличение количества сделок или фильтрации показателей волатильности для обеспечения качества сделок.

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

В этой стратегии есть место для дальнейшей оптимизации:

  1. Вместе с машинным обучением

Использование моделей машинного обучения для прогнозирования ценовых тенденций повышает точность входа.

  1. Построение безрискового портфеля с помощью Options

Используйте ценовые колебания опционов, чтобы создать портфель без риска.

  1. Многовидовый арбитраж

Статистический арбитраж между различными рынками, различными видами, чтобы получить стабильную альфу.

  1. Алгоритмическая торговля

Эффективная стратегия обратной связи и реальные сделки с помощью алгоритмической торговой системы.

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

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

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

//@version=5
strategy("Chandelier Exit with 1-to-1 Risk-Reward", shorttitle='CE', overlay=true)

// Chandelier Exit Logic
length = input.int(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
useClose = input.bool(title='Use Close Price for Extremums', defval=true)

atr = mult * ta.atr(length)

longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop

shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop

var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir

// Risk-Reward Ratio
riskRewardRatio = input.int(1, title="Risk-Reward Ratio", minval=1, maxval=10, step=1)

// Calculate Take Profit and Stop Loss Levels
takeProfitLevel = atr * riskRewardRatio
stopLossLevel = atr

// Entry Conditions
longCondition = dir == 1 and dir[1] == -1
shortCondition = dir == -1 and dir[1] == 1

// Entry Signals
if (longCondition)
    strategy.entry("Long", strategy.long, stop=close - stopLossLevel, limit=close + takeProfitLevel)
if (shortCondition)
    strategy.entry("Short", strategy.short, stop=close + stopLossLevel, limit=close - takeProfitLevel)

longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.green)
shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.red)

midPricePlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none, editable=false)

fill(midPricePlot, longStopPlot, color=color.new(color.green, 90), title='Long State Filling')
fill(midPricePlot, shortStopPlot, color=color.new(color.red, 90), title='Short State Filling')

// Alerts
if (dir != dir[1])
    strategy.entry("Direction Change", strategy.long, comment="Chandelier Exit has changed direction!")
if (longCondition)
    strategy.entry("Buy Signal", strategy.long, comment="Chandelier Exit Buy!")
if (shortCondition)
    strategy.entry("Sell Signal", strategy.short, comment="Chandelier Exit Sell!")