Стратегия выхода "Люстра"

Автор:Чао Чжан, Дата: 2024-01-05 15:57:51
Тэги:

img

Обзор

Эта стратегия использует индикатор Chandelier Exit для определения направления и импульса ценового прорыва и генерации сигналов купли и продажи.

Логика стратегии

Эта стратегия основана на индикаторе Chandelier Exit, который устанавливает линии стоп-лосса на основе самого высокого максимума, самого низкого минимума и среднего истинного диапазона. В частности, он вычисляет 22-дневный ATR и умножает его на коэффициент (по умолчанию 3) для получения значений для длинных и коротких стоп-линий. Стратегия генерирует сигнал продажи, когда цена превышает длинный стоп, когда длинный, и сигнал покупки, когда цена превышает короткий стоп, когда короткий.

Стратегия выполняет только операции покупки. Она запускает длинный вход, когда цена превышает предыдущую длинную линию остановки, и создает выходный сигнал, когда цена падает ниже короткой линии остановки, закрывая длинную позицию.

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

  • Использует динамические линии стоп-лосса от Chandelier Exit для эффективного контроля рисков
  • Сочетает в себе ценовые прорывы для фиксации движений тренда
  • Внедряет стратегию, которая избегает восходящих/снижающихся перемен, покупая только
  • Условия оповещения запускают уведомления для мониторинга состояния стратегии

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

  • Chandelier Exit чувствителен к росту волатильности, что может вызвать ложные сигналы.
  • Строгое изменение
  • Нет механизма получения прибыли для закрепления прибыли

Уменьшение риска:

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

Возможности для расширения

  1. Испытать различные наборы параметров для оптимизации входов и выходов
  2. Добавить индикаторные фильтры для подтверждения сигналов и избежать ложных сигналов
  3. Рассмотреть возможность осуществления как операций по покупке, так и продаж
  4. Внедрение механизмов стоп-лосса и прибыли

Заключение

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


/*backtest
start: 2023-12-28 00:00:00
end: 2024-01-04 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Chandelier Exit Strategy", overlay=true)

length = input(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
showLabels = input(title='Show Buy/Sell Labels ?', defval=true)
useClose = input(title='Use Close Price for Extremums ?', defval=true)
highlightState = input(title='Highlight State ?', 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

var color longColor = color.green
var color shortColor = color.red

longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.new(longColor, 0))
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal ? longStop : na, title='Long Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(longColor, 0))
plotshape(buySignal and showLabels ? longStop : na, title='Buy Label', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(longColor, 0), textcolor=color.new(color.white, 0))

shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.new(shortColor, 0))
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal ? shortStop : na, title='Short Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(shortColor, 0))
plotshape(sellSignal and showLabels ? shortStop : na, title='Sell Label', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(shortColor, 0), textcolor=color.new(color.white, 0))

changeCond = dir != dir[1]
alertcondition(changeCond, title='Alert: CE Direction Change', message='Chandelier Exit has changed direction!')
alertcondition(buySignal, title='Alert: CE Buy', message='Chandelier Exit Buy!')
alertcondition(sellSignal, title='Alert: CE Sell', message='Chandelier Exit Sell!')

// Define initial capital
initial_capital =25

// Trigger buy order and close buy order on sell signal
if buySignal
    strategy.entry("Buy", strategy.long, qty = initial_capital / close)

if sellSignal
    strategy.close("Buy")


Больше