Diese Strategie kombiniert den RSI-Indikator und den glatten RSI-Indikator, um Kaufmöglichkeiten an Preistief zu finden. Wenn der RSI ein neues Tief erreicht, während der Preis kein neues Tief erreicht, wird er als bullisches Divergenzsignal betrachtet.
Die Strategie stützt sich hauptsächlich auf das RSI-Umkehrmerkmal, kombiniert mit einem glätteten RSI-Trendurteil, um zu kaufen, wenn der Preis unter Druck steht, während der RSI überverkauft ist.
Kann den Eintrittszeitpunkt optimieren, indem die RSI-Parameter angepasst werden. Stärken Sie die Stop-Loss-Distanz für schnelleres Stoppen. Kombinieren Sie mit anderen Indikatoren, um das Trendrisiko zu beurteilen, senken Sie die falsche Umkehrrate.
Weiterentwicklung der Strategie durch Parameter-Ausrichtung und Kombination mehrerer Indikatoren.
Die Strategie nutzt die RSI-Umkehrungscharakteristik insgesamt. Die doppelte RSI-Kombination nutzt die Umkehrung voll aus und führt gleichzeitig Unsicherheit durch Indikatordivergenz ein. Es ist eine typische Indikatorstrategieidee. Kann die Indikatoradaptivität durch unermüdliches Testen und Optimieren verbessern. Kombiniere auch mehr Indikatoren, um Fehleinschätzungen zu reduzieren und die Robustheit zu verbessern.
/*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")