Это долгосрочная стратегия, которая идентифицирует сигналы входа, когда цены опускаются ниже нижней полосы ATR-канала, и получает прибыль, когда цены достигают средней полосы (EMA) или верхней полосы ATR-канала.
Когда цена проходит ниже нижней полосы ATR, это сигнализирует о падении аномалии. Стратегия будет длинной на следующем открытии свечи. Стоп-лосс устанавливается по цене входа минус ATR стоп-лосс умножитель раз ATR. Приобретение прибыли находится в средней полосе (EMA) или верхней полосе ATR. Если текущий закрытие барьера ниже предыдущего, то используйте предыдущие низкие барьеры в качестве прибыли.
В частности, ключевая логика включает:
Преимущества этой стратегии:
Есть некоторые риски:
Эти риски могут быть уменьшены путем корректировки периода ATR, стоп-лосс мультипликатора и т. д. Выбор брокеров с низкими торговыми сборами также важен.
Стратегия может быть улучшена путем:
В общем, это простая и практичная стратегия реверсии среднего значения, основанная на канале ATR. У нее есть четкие правила входа, строгие стоп-лосс и разумная прибыль. Есть также место для настройки параметров. Если трейдеры могут выбрать правильный символ и контролировать риск с стоп-лосом, эта стратегия может достичь хороших результатов.
/*backtest start: 2022-12-04 00:00:00 end: 2023-12-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Bcullen175 //@version=5 strategy("ATR Mean Reversion", overlay=true, initial_capital=100000,default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=6E-5) // Brokers rate (ICmarkets = 6E-5) SLx = input(1.5, "SL Multiplier", tooltip = "Multiplies ATR to widen stop on volatile assests, Higher values reduce risk:reward but increase winrate, Values below 1.2 are not reccomended") src = input(close, title="Source") period = input.int(10, "ATR & MA PERIOD") plot(open+ta.atr(period)) plot(open-ta.atr(period)) plot((ta.ema(src, period)), title = "Mean", color=color.white) i_startTime = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups") i_endTime = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups") // Check filter(s) f_dateFilter = true atr = ta.atr(period) // Check buy/sell conditions var float buyPrice = 0 buyCondition = low < (open-ta.atr(period)) and strategy.position_size == 0 and f_dateFilter sellCondition = (high > (ta.ema(close, period)) and strategy.position_size > 0 and close < low[1]) or high > (open+ta.atr(period)) stopDistance = strategy.position_size > 0 ? ((buyPrice - atr)/buyPrice) : na stopPrice = strategy.position_size > 0 ? (buyPrice - SLx*atr): na stopCondition = strategy.position_size > 0 and low < stopPrice // Enter positions if buyCondition strategy.entry(id="Long", direction=strategy.long) if buyCondition[1] buyPrice := open // Exit positions if sellCondition or stopCondition strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : "")) buyPrice := na // Draw pretty colors plot(buyPrice, color=color.lime, style=plot.style_linebr) plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)