Динамическая стратегия стоп-профита и стоп-лосса ATR


Дата создания: 2023-09-14 16:22:53 Последнее изменение: 2023-09-14 16:22:53
Копировать: 0 Количество просмотров: 904
1
Подписаться
1617
Подписчики

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

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

Конкретная логика сделки:

  1. Вычислить среднюю истинную колебательность ATR за определенный период (например, 20 дней)

  2. Стоп-стоп-потеря в позитивном состоянии равна максимальной цене за вычетом ATR

  3. Стоп-стоп-стоп-стоп является минимальной ценой плюс ATR, умноженный на ATR, когда она находится в состоянии падения

  4. Реверсная торговля, когда цена превышает точку остановки

  5. Изменение состояния тренда, когда цена пробивает остановку

  6. Стойкость к новой ситуации

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

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

  • ATR автоматически рассчитывает стоп-стоп-лосс

  • Динамическая корректировка, отслеживание цены в реальном времени

  • Своевременная ликвидация убытков и контроль рисков

Стратегический риск

  • ATR параметры требуют повторного тестирования и оптимизации

  • Слишком близко, чтобы остановить.

  • Следите за изменениями ATR в реальном времени

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

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

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

//@version=2
strategy("Dhananjay Volatility stop strategy v1.0", overlay=true)


length = input(20)
mult = input(1)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? green : red, style=line, linewidth=2)

bearish = close < vstop 
bullish = close > vstop 


if (bullish)
    strategy.entry("Buy", strategy.long, 1)
    
    

if (bearish)
    strategy.entry("Sell", strategy.short, 1)