Стратегия остановки потерь с задержкой градиента

Автор:Чао Чжан, Дата: 2023-10-25 14:56:28
Тэги:

img

Обзор

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

Принципы

Стратегия использует средний истинный диапазон (ATR) в качестве основы для динамического стоп-лосса. ATR эффективно отражает волатильность акций. Стратегия сначала принимает период ATR в качестве ввода, обычно 10 дней. Затем рассчитывается значение ATR. По мере роста цены линия стоп-лосса также поднимается, чтобы отслеживать цену. Когда цена падает, линия стоп-лосса остается неизменной, чтобы блокировать прибыль. Кроме того, стратегия позволяет отрегулировать расстояние стоп-лосса от цены с помощью параметра фактор.

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

Преимущества

  • Динамическая задержка стоп-потери регулирует стоп-расстояние на основе рыночных условий
  • ATR рассчитывает расстояние остановки на основе волатильности рынка
  • Простая и простая для автоматизации торговли
  • Применимый период ATR и коэффициент стоп-лосса для различных активов
  • Соотношения между остановкой потерь и получением прибыли
  • Уменьшает количество ненужных остановок

Риски

  • Выбор правильных параметров ATR имеет решающее значение
  • Слишком близкая стоп-лосс может увеличить ненужные стоп-ауты
  • Слишком высокая ставка стоп-лосса может не позволить контролировать риски
  • Сама по себе стратегия не может определить рыночные тенденции
  • Необходимость оценки периода ATR и параметров факторов

Усовершенствования

  • Добавьте фильтры, такие как скользящие средние, чтобы уменьшить ложные сигналы
  • Автоматическая оптимизация периода ATR и коэффициента остановки потери с помощью машинного обучения
  • Используйте стратегию получения прибыли для закрепления прибыли
  • Комбинировать с другими индикаторами для проверки сигналов покупки/продажи
  • Исследование лучше вычисления ATR или динамический период ATR
  • Изучите другие динамические алгоритмы остановки отслеживания
  • Дальнейшая оптимизация эффекта стоп-лосса

Заключение

Стратегия Gradient Trailing Stop Loss эффективно уравновешивает риск и прибыль, динамически регулируя расстояние стоп-лосса. Благодаря простой логике и высокой конфигурабельности, она подходит для алгоритмической торговли. Правильное настройка параметров и комбинации индикаторов все еще полагаются на человеческий опыт. Дальнейшая оптимизация может сделать эту стратегию еще более прибыльной.


/*backtest
start: 2023-10-17 00:00:00
end: 2023-10-24 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supertrend Strategy, by Ho.J.", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

// 백테스팅 시작일과 종료일 입력
startYear = input(2020, title="Start Year")
startMonth = input(1, title="Start Month")
startDay = input(1, title="Start Day")

endYear = input(9999, title="End Year")
endMonth = input(12, title="End Month")
endDay = input(31, title="End Day")

// 백테스팅 시간 범위 확인
backtestingTimeBool = (year >= startYear and month >= startMonth and dayofmonth >= startDay) and (year <= endYear and month <= endMonth and dayofmonth <= endDay)

atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)

[_, direction] = ta.supertrend(factor, atrPeriod)

var bool longCondition = false
var bool shortCondition = false

if backtestingTimeBool
    prevDirection = direction[1]
    if direction < 0
        longCondition := false
        shortCondition := true
    else if direction > 0
        longCondition := true
        shortCondition := false

if longCondition
    strategy.entry("My Long Entry Id", strategy.long)

if shortCondition
    strategy.entry("My Short Entry Id", strategy.short)

plot(strategy.equity, title="equity", color=color.rgb(255, 255, 255), linewidth=2, style=plot.style_area)

Больше