Esta estrategia es un sistema de negociación cuantitativo que combina los principios de la reversión media con los indicadores técnicos MACD y ATR. Utiliza bandas de Bollinger para identificar desviaciones de precios, MACD para la confirmación de impulso y ATR para la gestión de riesgos dinámicos.
La estrategia emplea tres indicadores técnicos que trabajan en conjunto: primero, las bandas de Bollinger determinan desviaciones significativas de precios; segundo, el MACD valida el impulso de precios, asegurando que la dirección del comercio se alinee con las tendencias del mercado; finalmente, el ATR establece niveles dinámicos de stop-loss y take-profit.
Esta estrategia combina el análisis técnico clásico con métodos comerciales cuantitativos modernos. A través del uso coordinado de múltiples indicadores, mantiene las ventajas centrales de la reversión media mientras supera las limitaciones de indicadores individuales. La estrategia es altamente extensible, capaz de mejora continua a través de la optimización de parámetros y módulos funcionales adicionales. Mientras tanto, su mecanismo integral de control de riesgos garantiza la estabilidad.
/*backtest start: 2024-11-12 00:00:00 end: 2024-12-11 08:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Enhanced Mean Reversion with MACD and ATR", overlay=true) // Nastavenia Bollinger Bands bbLength = input(20, title="Bollinger Bands Length") bbMult = input(2, title="Bollinger Bands Multiplier") basis = ta.sma(close, bbLength) dev = ta.stdev(close, bbLength) upperBand = basis + bbMult * dev lowerBand = basis - bbMult * dev // MACD indikátor macdShort = input(12, title="MACD Short Length") macdLong = input(26, title="MACD Long Length") macdSignal = input(9, title="MACD Signal Length") [macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal) // ATR pre dynamický Stop Loss a Take Profit atrLength = input(14, title="ATR Length") atrMultiplier = input(1.5, title="ATR Multiplier") atrValue = ta.atr(atrLength) // Vstupné podmienky pre long pozície longCondition = ta.crossover(close, lowerBand) and macdLine > signalLine if (longCondition) strategy.entry("Long", strategy.long) // Vstupné podmienky pre short pozície shortCondition = ta.crossunder(close, upperBand) and macdLine < signalLine if (shortCondition) strategy.entry("Short", strategy.short) // Dynamický Stop Loss a Take Profit na základe ATR longSL = strategy.position_avg_price - atrValue * atrMultiplier longTP = strategy.position_avg_price + atrValue * atrMultiplier * 2 shortSL = strategy.position_avg_price + atrValue * atrMultiplier shortTP = strategy.position_avg_price - atrValue * atrMultiplier * 2 // Pridanie stop loss a take profit if (strategy.position_size > 0) strategy.exit("Take Profit/Stop Loss", "Long", stop=longSL, limit=longTP) if (strategy.position_size < 0) strategy.exit("Take Profit/Stop Loss", "Short", stop=shortSL, limit=shortTP) // Vizualizácia Bollinger Bands a MACD plot(upperBand, color=color.red, title="Upper Bollinger Band") plot(lowerBand, color=color.green, title="Lower Bollinger Band") plot(basis, color=color.blue, title="Bollinger Basis") hline(0, "MACD Zero Line", color=color.gray) plot(macdLine - signalLine, color=color.blue, title="MACD Histogram") plot(macdLine, color=color.red, title="MACD Line") plot(signalLine, color=color.green, title="Signal Line") // Generovanie alertov alertcondition(longCondition, title="Long Alert", message="Long Entry Signal") alertcondition(shortCondition, title="Short Alert", message="Short Entry Signal")