Esta estrategia combina herramientas de análisis técnico como promedios móviles (MA), índice de fuerza relativa (RSI) y rango verdadero promedio (ATR) para capturar oportunidades de tendencia en el mercado.
El núcleo de esta estrategia es utilizar el cruce de dos promedios móviles con períodos diferentes (rápidos y lentos) para identificar las tendencias del mercado. Cuando el MA rápido cruza por encima del MA lento, indica una tendencia alcista, y la estrategia generará una señal larga. Por el contrario, cuando el MA rápido cruza por debajo del MA lento, indica una tendencia bajista, y la estrategia generará una señal corta.
Para mejorar la confiabilidad de las señales comerciales, la estrategia introduce el indicador RSI como un filtro de impulso. Las posiciones largas solo se permiten cuando el RSI está por encima de un cierto umbral (por ejemplo, 50), y las posiciones cortas solo se permiten cuando el RSI está por debajo de ese umbral. Esto ayuda a evitar el comercio durante los mercados laterales o cuando falta impulso, mejorando así la calidad de la señal.
Además, la estrategia utiliza ATR como base para el stop-loss, ajustando dinámicamente el nivel de stop-loss de acuerdo con la volatilidad de los precios durante un período reciente.
Esta estrategia combina efectivamente el seguimiento de tendencias y el filtrado de impulso para capturar oportunidades de tendencias en el mercado mientras se gestiona el riesgo. La lógica de la estrategia es clara y fácil de implementar y optimizar. Sin embargo, en la aplicación práctica, se debe prestar atención al riesgo de la sierra y al riesgo de parámetros. La estrategia debe ajustarse y optimizarse de manera flexible en función de las características del mercado y las necesidades individuales. En general, esta es una estrategia equilibrada que considera tanto la captura de tendencias como el control de riesgos, digna de una mayor exploración y práctica.
/*backtest start: 2023-05-28 00:00:00 end: 2024-06-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Trend-Following Strategy with MACD and RSI Filter", overlay=true) // Input variables fastLength = input(12, title="Fast MA Length") slowLength = input(26, title="Slow MA Length") signalLength = input(9, title="Signal Line Length") stopLossPct = input(1.0, title="Stop Loss %") / 100 rsiLength = input(14, title="RSI Length") rsiThreshold = input(50, title="RSI Threshold") // Moving averages fastMA = ta.sma(close, fastLength) slowMA = ta.sma(close, slowLength) // MACD [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength) // RSI rsi = ta.rsi(close, rsiLength) // Entry conditions with RSI filter bullishSignal = ta.crossover(macdLine, signalLine) and rsi > rsiThreshold bearishSignal = ta.crossunder(macdLine, signalLine) and rsi < rsiThreshold // Calculate stop loss levels longStopLoss = ta.highest(close, 10)[1] * (1 - stopLossPct) shortStopLoss = ta.lowest(close, 10)[1] * (1 + stopLossPct) // Execute trades strategy.entry("Long", strategy.long, when=bullishSignal) strategy.entry("Short", strategy.short, when=bearishSignal) strategy.exit("Exit Long", "Long", stop=longStopLoss) strategy.exit("Exit Short", "Short", stop=shortStopLoss) // Plotting signals plotshape(bullishSignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Bullish Signal") plotshape(bearishSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Bearish Signal") // Plot MACD plot(macdLine, color=color.blue, title="MACD Line") plot(signalLine, color=color.orange, title="Signal Line") // Plot RSI hline(rsiThreshold, "RSI Threshold", color=color.gray) plot(rsi, color=color.purple, title="RSI")