Эта стратегия использует идею динамической последующей остановки, основанной на ATR и ценовых экстремалах для расчета длинных и коротких линий стоп-лосса. В сочетании с идеей Chandelier Exit, она определяет длинное/короткое направление на основе прорыва линии стоп-лосса. Когда линия стоп-лосса выходит вверх, она рассматривается как быстрая и длинная вход. Когда линия стоп-лосса выходит вниз, она рассматривается как медвежий и короткий вход.
Стратегия имеет как функции управления стоп-лосом, так и функции оценки сигналов входа.
Стратегия состоит из следующих основных частей:
Расчет длинных/коротких линий стоп-лосса на основе ATR
На основе длительности периода ATR, определенного пользователем, и множителя мультипликатора, рассчитывается ATR в режиме реального времени.
longStop = Highest - ATR
shortStop = Lowest + ATR
Судите о направлении торговли по прорыву
Сравните линии стоп-лосса между предыдущей и текущей панелью.
Long stop-loss line breakout upwards, long entry
Short stop-loss line breakout downwards, short entry
Установка стоп-лосса и прибыли на основе соотношения риск-вознаграждение
На основе определённого пользователем соотношения риск-вознаграждение riskRewardRatio расстояние остановки потери и расстояние получения прибыли рассчитываются на основе ATR. При открытии позиций устанавливаются ордер на остановку потерь и ордер на получение прибыли.
Преимущества этой стратегии включают:
Динамическая стоп-задержка
Принятие динамических линий остановки потерь помогает своевременно остановить потерю и контролировать риск снижения.
Двойные функции
Линия стоп-лосса служит как инструментом управления стоп-лосом, так и судьей условий входа, уменьшая сложность стратегии.
Коэффициент риска и прибыли, поддающийся настройке
Преследуйте более высокую прибыль с заранее определенным соотношением риск-вознаграждение.
Легко понять и расширить
Простая структура, легко понять и оптимизировать для расширения.
Для этой стратегии могут возникнуть некоторые риски:
Двусторонние риски
В качестве двусторонней торговой стратегии, она несет как длинный, так и короткий риск.
Зависимость от параметров ATR
Параметры ATR напрямую влияют на линии стоп-лосса и частоту торговли. Неправильные настройки могут привести к слишком широкому стоп-лоссу или слишком высокой частоте торговли.
Адаптация к тенденциям
Стратегия лучше подходит для сценариев с резким прорывом, но не подходит для сценариев сильного тренда.
Оптимизация для устранения вышеуказанных рисков:
Включить индикаторы тенденции
Включить MA и другие индикаторы тенденции для определения тенденции рынка, избегать торговли против тенденций.
Оптимизация параметров
Оптимизировать комбинации параметров ATR и соотношения риск-прибыль для более разумного стоп-лосса и получения прибыли.
дополнительные фильтры
Добавление фильтров условий объема торговли или волатильности для обеспечения качества торговли.
Есть еще возможности для дальнейшей оптимизации стратегии:
Включить машинное обучение
Принять модели машинного обучения для прогнозирования ценовой тенденции для более высокой точности входа.
Создать безрисковый портфель с опционами
Использовать опционы для хеджирования колебаний цен на базовые активы и создания безрисковых арбитражных портфелей.
Арбитраж между различными активами на рынке
Проводить статистический арбитраж на разных рынках и классах активов для получения стабильной альфы.
Алгоритмическая торговля
Используйте алгоритмические торговые системы для эффективного тестирования стратегий и торговли.
Эта статья подробно анализирует количественную торговую стратегию, основанную на динамическом стоп-лосе. Стратегия одновременно имеет функциональность управления стоп-лосом и определение торговых сигналов, которые эффективно контролируют риски. Мы также обсудили преимущества, потенциальные риски и будущие оптимизации стратегии. Это очень практичная торговая стратегия, достойная дальнейших исследований и применения.
/*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!")