Chiến lược này kết hợp chỉ số RSI và chỉ số RSI trơn để tìm cơ hội mua ở đáy giá. Khi RSI đạt mức thấp mới trong khi giá không đạt mức thấp mới, nó được coi là tín hiệu chênh lệch tăng.
Chiến lược chủ yếu dựa trên đặc điểm đảo ngược RSI, kết hợp với phán đoán xu hướng RSI trơn tru, để mua khi giá bị áp lực trong khi RSI bị bán quá mức.
Có thể tối ưu hóa thời gian nhập bằng cách điều chỉnh các thông số RSI. Tắt khoảng cách dừng lỗ để dừng nhanh hơn. Kết hợp với các chỉ số khác để đánh giá rủi ro xu hướng, giảm tỷ lệ đảo ngược sai.
Cải thiện hơn nữa hiệu suất chiến lược bằng cách điều chỉnh tham số và kết hợp nhiều chỉ số hơn.
Chiến lược này sử dụng đặc điểm đảo ngược RSI nói chung. Sự kết hợp RSI kép tận dụng đầy đủ hiệu ứng đảo ngược trong khi cũng giới thiệu sự không chắc chắn từ sự khác biệt của chỉ số. Đây là một ý tưởng chiến lược chỉ số điển hình. Có thể cải thiện khả năng thích nghi của chỉ số thông qua thử nghiệm và tối ưu hóa không ngừng. Cũng kết hợp nhiều chỉ số hơn để giảm đánh giá sai và tăng độ bền.
/*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")