
Esta estrategia es una estrategia de swing trading que combina el indicador RSI y el canal de Bandas de Bollinger. Toma decisiones comerciales identificando los estados de sobrecompra y sobreventa del mercado y combinándolos con la posición del precio en las Bandas de Bollinger. La estrategia adopta una configuración de umbral RSI relativamente flexible (60 para sobrecompra y 40 para sobreventa) y combina las pistas superior e inferior de las Bandas de Bollinger para determinar el momento de entrada y salida, al tiempo que establece un mecanismo de salida de ganancias del 2%.
La lógica central de la estrategia se basa en los siguientes componentes clave:
Condiciones de compra:
Condiciones de venta:
Riesgo de mercado volátil: pueden producirse transacciones frecuentes en un mercado lateral y volátil. Solución: puede agregar un filtro de promedio móvil o agregar un mecanismo de confirmación de tendencia.
Riesgo de ruptura falsa: una ruptura breve de las bandas de Bollinger por parte del precio podría desencadenar una señal falsa. Solución: Puede agregar un período de confirmación o aumentar el requisito de amplitud de ruptura.
Dependencia del entorno del mercado: el rendimiento de la estrategia puede variar en diferentes ciclos del mercado. Solución: Ajustar dinámicamente los parámetros en función de las diferentes características del mercado.
Esta estrategia construye un sistema de swing trading relativamente robusto a través de la sinergia del RSI y las Bandas de Bollinger. La característica principal de la estrategia es controlar los riesgos a través de un mecanismo de confirmación múltiple manteniendo las oportunidades comerciales. Si bien existen algunos riesgos potenciales, la estabilidad y confiabilidad de la estrategia se pueden mejorar aún más optimizando los parámetros y agregando condiciones de filtrado. La estrategia es adecuada para su uso en mercados con mayor volatilidad, pero es necesario realizar ajustes de parámetros correspondientes en función de las características específicas del mercado.
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Demo GPT - Adjusted Swing Trading for SBI", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)
// Input Parameters
rsiLength = input.int(14, minval=1, title="RSI Length")
rsiOverbought = input.int(60, minval=50, maxval=100, title="RSI Overbought Level") // Relaxed level
rsiOversold = input.int(40, minval=0, maxval=50, title="RSI Oversold Level") // Relaxed level
bbLength = input.int(20, minval=1, title="Bollinger Bands Length")
bbMult = input.float(2.0, minval=0.1, maxval=5, title="Bollinger Bands StdDev Multiplier")
maLength = input.int(50, minval=1, title="Moving Average Length")
// RSI Calculation
rsi = ta.rsi(close, rsiLength)
// Bollinger Bands Calculation
bbBasis = ta.sma(close, bbLength)
bbDev = bbMult * ta.stdev(close, bbLength)
bbUpper = bbBasis + bbDev
bbLower = bbBasis - bbDev
// Moving Average
ma = ta.sma(close, maLength)
// Buy Signal: Price near or below lower Bollinger Band AND RSI below oversold level
buySignal = (close <= bbLower * 1.01) and (rsi < rsiOversold)
// Sell Signal: Price near or above upper Bollinger Band OR RSI above overbought level
sellSignal = (close >= bbUpper * 0.99) or (rsi > rsiOverbought)
// Date Range Inputs
startDate = input(timestamp("2018-01-01 00:00"), title="Start Date")
endDate = input(timestamp("2069-12-31 23:59"), title="End Date")
inDateRange = true
// Strategy Logic
if buySignal and inDateRange
strategy.entry("Swing Long SBI", strategy.long)
if strategy.position_size > 0 and (sellSignal or close >= strategy.position_avg_price * 1.02)
strategy.close("Swing Long SBI")
// Plotting
plot(bbBasis, title="Bollinger Bands Basis", color=color.blue)
plot(bbUpper, title="Bollinger Bands Upper", color=color.red)
plot(bbLower, title="Bollinger Bands Lower", color=color.green)
plot(ma, title="Moving Average", color=color.orange)
hline(rsiOverbought, "RSI Overbought", color=color.red, linestyle=hline.style_dotted)
hline(rsiOversold, "RSI Oversold", color=color.green, linestyle=hline.style_dotted)
plot(rsi, title="RSI", color=color.purple)
// Fill Bollinger Bands for Visualization
fill(plot(bbUpper), plot(bbLower), title="Bollinger Bands Background", color=color.rgb(33, 150, 243, 95))