Эта стратегия - это стратегия последнего остановки, применяемая к фьючерсам E-mini S&P500 (ES). Она использует 10-дневный ATR в качестве отсчета и устанавливает диапазон стоп-лосса до 3 раз ATR для определения длинных и коротких стоп-линий. Стратегия оценивает тренд по изменению направления линий ATR и генерирует сигналы входа в поворотных точках тренда. После ввода она будет регулировать линии стоп-лосса в режиме реального времени для отслеживания движения цен, защищая прибыль.
Стратегия использует hl2 в качестве источника цены. Сначала она рассчитывает 10-дневный ATR и позволяет пользователю выбирать между использованием метода SMA или встроенной функции ATR для расчета ATR. После получения ATR она добавляет 3 раза ATR вверх и вниз, чтобы сформировать диапазон. Две линии диапазона являются линиями стоп-лосса.
Метод оценки тренда заключается в том, что когда цена превышает верхнюю границу, она длинная; когда цена превышает нижнюю границу, она короткая. Когда цена возвращается обратно в диапазон, она подтверждает обратный тренд. В это время, если она переворачивается из короткой в длинную, она генерирует длинный сигнал входа; если она переворачивается из длинной в короткую, она генерирует короткий сигнал входа.
После входа длинная линия стоп-лосса устанавливается на верхнюю границу минус 1 тик, а короткая линия стоп-лосса устанавливается на нижнюю границу плюс 1 тик, отставая для защиты прибыли.
В целом, это надежная стратегия следования тренду. Она решает проблему определения диапазона стоп-лосса и снижает риски путем динамической корректировки остановок на основе ATR. В то же время, отстающие остановки блокируют прибыль. Но все еще есть место для оптимизации параметров, таких как периоды ATR, алгоритмы остановки и т. Д. С дальнейшим тестированием и настройкой эта стратегия может стать стратегией следования тренду с высокой надежностью.
/*backtest start: 2023-01-05 00:00:00 end: 2024-01-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("ATR Based Trailing Stop Strategy on ES! [v4]", overlay=true) // Given ATR study Periods = input(title="ATR Period", type=input.integer, defval=10) src = input(hl2, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0) changeATR = input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) atr2 = sma(tr, Periods) atr = changeATR ? atr(Periods) : atr2 up = src - (Multiplier * atr) up1 = nz(up[1], up) up := close[1] > up1 ? max(up, up1) : up dn = src + (Multiplier * atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend // Entry logic based on trend change longCondition = trend == 1 and trend[1] == -1 shortCondition = trend == -1 and trend[1] == 1 if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Trailing stop loss logic // For long positions, trail 1 point below the up plot longStopPrice = up - 1 // For short positions, trail 1 point above the dn plot shortStopPrice = dn + 1 strategy.exit("Trailing Stop Long", "Long", trail_offset=longStopPrice) strategy.exit("Trailing Stop Short", "Short", trail_offset=shortStopPrice)