
Esta es una estrategia de inversión de tendencia que combina un indicador relativamente débil (RSI) y un indicador relativamente débil aleatorio (RSI estocástico). La estrategia capta un potencial reverso mediante la identificación de un estado de sobreventa y sobreventa en el mercado, así como cambios en el dinamismo. El núcleo de la estrategia es tomar el RSI como un indicador de dinámica básica y luego calcular el RSI estocástico sobre esta base para confirmar aún más la dirección de los cambios en la dinámica de los precios.
La lógica principal de la estrategia incluye los siguientes pasos clave:
Se trata de una estrategia integral que combina la dinámica y el cambio de tendencia para identificar oportunidades de comercio potenciales a través de la sinergia de RSI y RSI estocástico. La estrategia está diseñada de manera razonable, con una buena adaptabilidad y adaptabilidad.
/*backtest
start: 2024-06-15 00:00:00
end: 2025-02-19 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("RSI + Stochastic RSI Strategy", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// INPUTS
// RSI settings
rsiLength = input.int(14, "RSI Length", minval=1)
rsiOverbought = input.int(70, "RSI Overbought Level")
rsiOversold = input.int(30, "RSI Oversold Level")
// Stochastic RSI settings
stochLength = input.int(14, "Stoch RSI Length", minval=1)
smoothK = input.int(3, "Stoch %K Smoothing", minval=1)
smoothD = input.int(3, "Stoch %D Smoothing", minval=1)
stochOverbought = input.int(80, "Stoch Overbought Level")
stochOversold = input.int(20, "Stoch Oversold Level")
// CALCULATIONS
// Compute RSI value on the closing price
rsiValue = ta.rsi(close, rsiLength)
// Calculate Stochastic RSI using the RSI value as source
rsiStoch = ta.stoch(rsiValue, rsiValue, rsiValue, stochLength)
kValue = ta.sma(rsiStoch, smoothK)
dValue = ta.sma(kValue, smoothD)
// PLOTTING
// Plot RSI and reference lines
plot(rsiValue, title="RSI", color=color.blue)
hline(rsiOverbought, "RSI Overbought", color=color.red)
hline(rsiOversold, "RSI Oversold", color=color.green)
// Plot Stochastic RSI %K and %D along with overbought/oversold levels
plot(kValue, title="Stoch %K", color=color.orange)
plot(dValue, title="Stoch %D", color=color.purple)
hline(stochOverbought, "Stoch Overbought", color=color.red, linestyle=hline.style_dotted)
hline(stochOversold, "Stoch Oversold", color=color.green, linestyle=hline.style_dotted)
// STRATEGY CONDITIONS
// Long Condition: RSI below oversold and Stoch RSI crosses upward while in oversold territory
longCondition = (rsiValue < rsiOversold) and (kValue < stochOversold) and ta.crossover(kValue, dValue)
// Long Exit: When RSI goes above overbought or a downward cross occurs on the Stoch RSI
longExit = (rsiValue > rsiOverbought) or ta.crossunder(kValue, dValue)
// Short Condition: RSI above overbought and Stoch RSI crosses downward while in overbought territory
shortCondition = (rsiValue > rsiOverbought) and (kValue > stochOverbought) and ta.crossunder(kValue, dValue)
// Short Exit: When RSI goes below oversold or an upward cross occurs on the Stoch RSI
shortExit = (rsiValue < rsiOversold) or ta.crossover(kValue, dValue)
// EXECUTE TRADES
if (longCondition)
strategy.entry("Long", strategy.long)
if (longExit)
strategy.close("Long")
if (shortCondition)
strategy.entry("Short", strategy.short)
if (shortExit)
strategy.close("Short")