Esta estrategia es un sistema de negociación cuantitativo basado en promedios móviles, indicador RSI y stop loss. Combina indicadores de tendencia y impulso de análisis técnico, logrando una negociación controlada por riesgo a través de estrictas condiciones de entrada y salida. La lógica central es buscar oportunidades de sobreventa en tendencias alcistas y proteger las ganancias utilizando trailing stops.
La estrategia utiliza un promedio móvil simple (SMA) de 200 días como base para el juicio de tendencia, combinado con el índice de fuerza relativa (RSI) para generar señales comerciales. 1. Utiliza la SMA de 200 días para juzgar la tendencia principal, considerando solo las posiciones largas cuando el precio está por encima del promedio 2. Identifica las señales de sobreventa cuando el RSI cae por debajo del umbral preestablecido (default 40) 3. Activa la entrada larga cuando se cumplen ambas condiciones y ha transcurrido el período de espera desde la última salida (por defecto 10 días) 4. Protege las ganancias durante la retención de la posición a través del stop loss de seguimiento (por defecto 5%) 5. Salida de la posición cuando el precio se rompe por debajo de la parada de seguimiento o de la SMA de 200 días
Esta es una estrategia de trading cuantitativa con una estructura completa y lógica clara. Busca rendimientos estables mientras controla el riesgo combinando múltiples indicadores técnicos. Aunque hay espacio para la optimización, el marco básico tiene buena practicidad y extensibilidad. La estrategia es adecuada para inversores a medio y largo plazo y se adapta bien a diferentes entornos de mercado.
/*backtest start: 2025-01-09 00:00:00 end: 2025-01-16 00:00:00 period: 15m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("200 SMA Crossover Strategy", overlay=false) // Define inputs smaLength = input.int(200, title="SMA Length") rsiLength = input.int(14, title="RSI Length") rsiThreshold = input.float(40, title="RSI Threshold") trailStopPercent = input.float(5.0, title="Trailing Stop Loss (%)") waitingPeriod = input.int(10, title="Waiting Period (Days)") // Calculate 200 SMA sma200 = ta.sma(close, smaLength) // Calculate RSI rsi = ta.rsi(close, rsiLength) // Plot the 200 SMA and RSI plot(sma200, color=color.blue, linewidth=2, title="200 SMA") plot(rsi, color=color.purple, title="RSI", display=display.none) // Define buy and sell conditions var isLong = false var float lastExitTime = na var float trailStopPrice = na // Explicitly declare timeSinceExit as float float timeSinceExit = na(lastExitTime) ? na : (time - lastExitTime) / (24 * 60 * 60 * 1000) canEnter = na(lastExitTime) or timeSinceExit > waitingPeriod buyCondition = close > sma200 and rsi < rsiThreshold and canEnter if (buyCondition and not isLong) strategy.entry("Buy", strategy.long) trailStopPrice := na isLong := true // Update trailing stop loss if long if (isLong) trailStopPrice := na(trailStopPrice) ? close * (1 - trailStopPercent / 100) : math.max(trailStopPrice, close * (1 - trailStopPercent / 100)) // Check for trailing stop loss or sell condition if (isLong and (close < trailStopPrice or close < sma200)) strategy.close("Buy") lastExitTime := time isLong := false // Plot buy and sell signals plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=(isLong and close < trailStopPrice) or close < sma200, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")