Esta es una estrategia de solo largo que identifica señales de entrada cuando los precios se rompen por debajo de la banda inferior del canal ATR, y obtiene ganancias cuando los precios alcanzan la banda media (EMA) o la banda superior del canal ATR. También utiliza ATR para calcular los niveles de stop loss. Esta estrategia es adecuada para operaciones rápidas a corto plazo.
Cuando el precio se rompe por debajo de la banda inferior de ATR, indica una caída de anomalía. La estrategia se extenderá en la próxima candelera abierta. El stop loss se establece en el precio de entrada menos el multiplicador de pérdida de ATR.
Específicamente, la lógica clave incluye:
Las ventajas de esta estrategia:
Hay algunos riesgos:
Estos riesgos pueden reducirse ajustando el período ATR, el multiplicador de pérdida de parada, etc. También es importante elegir corredores con bajas tarifas de negociación.
La estrategia puede mejorarse mediante:
En resumen, esta es una estrategia de reversión media simple y práctica basada en el canal ATR. Tiene reglas de entrada claras, pérdida de parada estricta y una ganancia razonable. También hay espacio para ajustar los parámetros. Si los comerciantes pueden elegir el símbolo correcto y controlar el riesgo con la pérdida de parada, esta estrategia puede lograr buenos resultados.
/*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)