
Стратегия динамического отслеживания с использованием динамического среднего значения для отслеживания ценовых тенденций. Она определяет текущую тенденцию путем вычисления движущихся средних цен на наивысшие и наименьшие цены за определенный период и в сочетании с ATR для реализации динамического стоп-лосса. Эта стратегия применяется в основном для рынков с заметной тенденцией, для долгосрочного удержания позиций путем своевременного захвата трендовых поворотов.
Эта стратегия сначала рассчитывает скользящие средние значения наивысшей и наименьшей цены в течение определенного периода (например, 200 дней) и использует их среднюю точку в качестве базовой линии. Затем рассчитывается степень отклонения цены от базовой линии, которая считается в восходящем тренде, когда цена выше базовой линии ATR (например, в 0,5 раза выше базовой линии ATR на 10 дней), и в нисходящем тренде, когда цена ниже базовой линии ATR.
Кроме того, изменение динамики ATR позволяет постепенно растягивать стоп-стоп в больших тенденциях, что снижает частоту торгов, вызванную нетрадиционными колебаниями.
Можно снизить чувствительность к остановке убытков путем соответствующей корректировки параметров ATR или включить другие показатели, чтобы отфильтровать определенные торговые моменты. Также можно оценить риск в сочетании с движением большого рынка.
Движущаяся стратегия многополосного отслеживания в целом является простой и практичной стратегией отслеживания тенденций. Она определяет направление тенденции с помощью динамических средних и использует ATR для реализации динамического остановки убытков, что позволяет эффективно контролировать риск. Эта стратегия подходит для рыночной среды, где тенденция очевидна, и за счет своевременного захвата обратного тренда можно получить долгосрочную избыточную прибыль.
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Trend Following Long Only Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
lookback_length = input(200, type=input.integer, minval=1, title="Lookback Length")
smoother_length = input(5, type=input.integer, minval=1, title="Smoother Length")
atr_length = input(10, type=input.integer, minval=1, title="ATR Length")
atr_multiplier = input(0.5, type=input.float, minval=0.5, title="ATR Multiplier")
vola = atr(atr_length) * atr_multiplier
price = sma(close, 3)
l = ema(lowest(low, lookback_length), smoother_length)
h = ema(highest(high, lookback_length), smoother_length)
center = (h + l) * 0.5
upper = center + vola
lower = center - vola
trend = ema(price > upper ? 1 : (price < lower ? -1 : 0), 3)
c = trend < 0 ? upper : lower
pcenter = plot(center, transp=100)
pclose = plot(close, transp=100)
pc = plot(c, transp=100)
buy_signal = crossover(trend, 0.0)
sell_signal = crossunder(trend, 0.0)
strategy.entry("Buy", strategy.long, when=buy_signal)
strategy.close("Buy", when=sell_signal)
bgcolor(trend >= 0 ? color.green : color.red, transp=95)
fill(pc, pclose, color=trend >= 0 ? color.green : color.red)