Esta estrategia combina el indicador RSI y el indicador RSI suavizado para encontrar oportunidades de compra en los mínimos de precios. Cuando el RSI hace un nuevo mínimo mientras que el precio no hace un nuevo mínimo, se considera como una señal de divergencia alcista.
La estrategia se basa principalmente en la característica de reversión del RSI, combinada con el juicio de tendencia del RSI suavizado, para comprar cuando el precio está bajo presión mientras que el RSI está sobrevendido.
Puede optimizar el tiempo de entrada ajustando los parámetros del RSI. Acercar la distancia de stop loss para detenerse más rápido. Combinar con otros indicadores para juzgar el riesgo de tendencia, reducir la tasa de inversión falsa.
Mejorar aún más el rendimiento de la estrategia ajustando los parámetros y combinando más indicadores.
La combinación dual de RSI aprovecha plenamente el efecto de reversión y también introduce incertidumbre por la divergencia del indicador. Es una idea típica de estrategia de indicador. Puede mejorar la adaptabilidad del indicador a través de pruebas y optimización incesantes.
/*backtest start: 2024-01-30 00:00:00 end: 2024-02-29 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/ // © BigBitsIO //@version=4 strategy(title="RSI and Smoothed RSI Bull Div Strategy [BigBitsIO]", shorttitle="RSI and Smoothed RSI Bull Div Strategy [BigBitsIO]", overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=.1, slippage=0) TakeProfitPercent = input(3, title="Take Profit %", type=input.float, step=.25) StopLossPercent = input(1.75, title="Stop Loss %", type=input.float, step=.25) RSICurve = input(14, title="RSI Lookback Period", type=input.integer, step=1) BuyBelowTargetPercent = input(0, title="Buy Below Lowest Low In RSI Divergence Lookback Target %", type=input.float, step=.05) BuyBelowTargetSource = input(close, title="Source of Buy Below Target Price", type=input.source) SRSICurve = input(10, title="Smoothed RSI Lookback Period", type=input.integer, step=1) RSICurrentlyBelow = input(30, title="RSI Currently Below", type=input.integer, step=1) RSIDivergenceLookback = input(25, title="RSI Divergence Lookback Period", type=input.integer, step=1) RSILowestInDivergenceLookbackCurrentlyBelow = input(25, title="RSI Lowest In Divergence Lookback Currently Below", type=input.integer, step=1) RSISellAbove = input(65, title="RSI Sell Above", type=input.integer, step=1) MinimumSRSIDownTrend = input(3, title="Minimum SRSI Downtrend Length", type=input.integer, step=1) SRSICurrentlyBelow = input(35, title="Smoothed RSI Currently Below", type=input.integer, step=1) PlotTarget = input(false, title="Plot Target") RSI = rsi(close, RSICurve) SRSI = wma(2*wma(RSI, SRSICurve/2)-wma(RSI, SRSICurve), round(sqrt(SRSICurve))) // Hull moving average SRSITrendDownLength = 0 if (SRSI < SRSI[1]) SRSITrendDownLength := SRSITrendDownLength[1] + 1 // Strategy Specific ProfitTarget = (close * (TakeProfitPercent / 100)) / syminfo.mintick LossTarget = (close * (StopLossPercent / 100)) / syminfo.mintick BuyBelowTarget = BuyBelowTargetSource[(lowestbars(RSI, RSIDivergenceLookback)*-1)] - (BuyBelowTargetSource[(lowestbars(RSI, RSIDivergenceLookback)*-1)] * (BuyBelowTargetPercent / 100)) plot(PlotTarget ? BuyBelowTarget : na) bool IsABuy = RSI < RSICurrentlyBelow and SRSI < SRSICurrentlyBelow and lowest(SRSI, RSIDivergenceLookback) < RSILowestInDivergenceLookbackCurrentlyBelow and BuyBelowTargetSource < BuyBelowTarget and SRSITrendDownLength >= MinimumSRSIDownTrend and RSI > lowest(RSI, RSIDivergenceLookback) bool IsASell = RSI > RSISellAbove if IsABuy strategy.entry("Positive Trend", true) // buy by market strategy.exit("Take Profit or Stop Loss", "Positive Trend", profit = ProfitTarget, loss = LossTarget) if IsASell strategy.close("Positive Trend")