Estrategia de negociación del RSI estocástico
Esta estrategia se opera basándose en señales cruzadas del indicador RSI estocástico.
Las normas específicas de entrada son:
Introduzca largo cuando el RSI estocástico cruce por encima de 30
Entrar en corto cuando el RSI estocástico cruce por debajo de 70
Filtros de entrada adicionales:
Las operaciones largas requieren una SMA de 9 períodos por encima de una SMA de 21 períodos.
Las posiciones cortas requieren una SMA de 9 períodos por debajo de la SMA de 21 períodos.
Las posiciones largas sólo por debajo de VWAP, las posiciones cortas sólo por encima de VWAP
La estrategia utiliza el stop loss y el take profit para la gestión del riesgo:
Se establece el stop loss en 20 ticks tanto para compras largas como para cortas
Tome ganancias fijadas en 25 ticks tanto para largos como para cortos
La principal ventaja es el uso del RSI estocástico para identificar regiones sobrecompradas/sobrevendidas combinadas con filtros SMA y VWAP para reducir las señales falsas.
/*backtest start: 2023-09-03 00:00:00 end: 2023-09-10 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © thedoggwalker //@version=4 strategy("Stochastic RSI Strategy", overlay=true) // Stochastic RSI length = input(14, title="Length") src = input(close, title="Source") smoothK = input(3, title="K") smoothD = input(3, title="D") rsiValue = rsi(src, length) highestRSI = highest(rsiValue, length) lowestRSI = lowest(rsiValue, length) k = (rsiValue - lowestRSI) / (highestRSI - lowestRSI) * 100 d = sma(k, smoothD) // Moving averages maShort = sma(close, 9) maLong = sma(close, 21) // Spread between moving averages spread = maShort - maLong // VWAP vwapValue = vwap(hlc3) // Entry conditions longCondition = crossover(k, 30) and spread > 0 and close < vwapValue shortCondition = crossunder(k, 70) and spread < 0 and close > vwapValue // Entry orders if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Exit orders // longStopLoss = close - 20 * syminfo.mintick // longTakeProfit = close + 25 * syminfo.mintick // strategy.exit("Exit Long", "Long", stop=longStopLoss, limit=longTakeProfit) // shortStopLoss = close + 20 * syminfo.mintick // shortTakeProfit = close - 25 * syminfo.mintick // strategy.exit("Exit Short", "Short", stop=shortStopLoss, limit=shortTakeProfit)