
La estrategia combina herramientas de análisis técnico como las medias móviles (MA), el índice de fuerza relativa (RSI) y la amplitud real promedio (ATR) con el objetivo de capturar oportunidades de tendencia en el mercado. La estrategia determina la dirección de la tendencia a través de cruces de pares y utiliza el indicador RSI para filtrar la dinámica de las señales de negociación, mientras que el ATR se utiliza como base de stop loss para controlar el riesgo.
El núcleo de esta estrategia es el uso de la cruz de dos promedios móviles de diferentes períodos (la línea rápida y la línea lenta) para determinar la tendencia del mercado. Cuando la línea rápida atraviesa la línea lenta, lo que indica una tendencia alcista, la estrategia generará una señal de desvío. Por el contrario, cuando la línea rápida atraviesa la línea lenta, lo que indica una tendencia bajista, la estrategia generará una señal de desvío.
Para mejorar la fiabilidad de las señales de negociación, la estrategia introduce el indicador RSI como un filtro de dinámica. Se permite abrir más posiciones cuando el RSI está por encima de un determinado umbral (como 50), y abrir posiciones vacías cuando el RSI está por debajo de ese umbral.
Además, la estrategia utiliza el ATR como base para detenerse y ajustar dinámicamente el punto de parada en función de la amplitud de la fluctuación de los precios en el período más reciente para adaptarse a diferentes estados del mercado. Esta forma de detenerse de forma adaptada puede detenerse rápidamente cuando la tendencia no es clara y controlar el retiro.
La estrategia es una combinación orgánica de seguimiento de la tendencia y filtración de la dinámica, al mismo tiempo que captura las oportunidades de tendencia del mercado. La lógica de la estrategia es clara, fácil de implementar y optimizar.
/*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")