Chiến lược này đánh giá xu hướng tăng và giảm của thị trường và đưa ra quyết định giao dịch bằng cách tính toán sự khác biệt của chỉ số RSI. Cụ thể, nó sẽ đánh giá các tín hiệu tăng ẩn khi RSI hình thành mức thấp hơn nhưng giá hình thành mức thấp hơn. Và nó sẽ đánh giá các tín hiệu giảm ẩn khi RSI hình thành mức cao hơn nhưng giá hình thành mức cao hơn. Sau đó nó xác định xu hướng tăng hoặc giảm tiềm năng của thị trường dựa trên các tín hiệu này và thực hiện giao dịch.
Chiến lược này chủ yếu dựa trên lý thuyết chênh lệch tăng và giảm của chỉ số RSI. Khi RSI và giá hình thành chênh lệch ngược, nó chỉ ra sự đảo ngược tiềm năng của thị trường. Có bốn tình huống cụ thể:
RSI hình thành cao thấp trong khi giá hình thành thấp thấp. Nó chỉ ra sức mua đẩy RSI lên nhưng không phản ánh đầy đủ về giá, ngụ ý sức mạnh tăng mạnh.
Tín hiệu tăng ẩn: RSI hình thành thấp hơn thấp hơn trong khi giá hình thành thấp hơn cao hơn. Nó ngụ ý sức bán đẩy RSI xuống nhưng không phải giá, cho thấy sức mạnh tăng mạnh hơn.
Tín hiệu giảm thường xuyên: RSI hình thành thấp cao hơn trong khi giá hình thành cao hơn cao hơn. Nó ngụ ý sức bán đẩy giá lên nhưng không phải RSI, cho thấy sức giảm mạnh hơn.
RSI hình thành cao hơn trong khi giá hình thành thấp hơn. Nó chỉ ra sức mua đẩy RSI lên nhưng không phải giá, ngụ ý sức mạnh giảm mạnh hơn.
Dựa trên những khác biệt trên, nó đánh giá các xu hướng tăng hoặc giảm tiềm năng của thị trường và tăng cường sức mua / bán để xây dựng các chiến lược giao dịch.
Chiến lược này chủ yếu tận dụng sự chênh lệch tăng và giảm của chỉ số RSI để xác định xu hướng tăng hoặc giảm tiềm năng của thị trường bằng cách nắm bắt sự thay đổi sức mạnh tương đối giữa sức mua và sức bán đằng sau các hành động giá. Nó có một số khả năng dự đoán đảo ngược. Nhưng nó cũng có rủi ro của các tín hiệu ồn ào. Những cách như tối ưu hóa tham số, kết hợp chỉ số, học máy có thể giúp tăng cường sự ổn định và lợi nhuận của chiến lược.
/*backtest start: 2024-01-07 00:00:00 end: 2024-01-14 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Divergence Indicator") len = input.int(title="RSI Period", minval=1, defval=20) src = input(title="RSI Source", defval=close) lbR = input(title="Pivot Lookback Right", defval=5) lbL = input(title="Pivot Lookback Left", defval=5) rangeUpper = input(title="Max of Lookback Range", defval=60) rangeLower = input(title="Min of Lookback Range", defval=5) plotBull = input(title="Plot Bullish", defval=true) plotHiddenBull = input(title="Plot Hidden Bullish", defval=true) plotBear = input(title="Plot Bearish", defval=true) plotHiddenBear = input(title="Plot Hidden Bearish", defval=true) bearColor = color.red bullColor = color.green hiddenBullColor = color.new(color.green, 80) hiddenBearColor = color.new(color.red, 80) textColor = color.white noneColor = color.new(color.white, 100) osc = ta.rsi(src, len) plot(osc, title="RSI", linewidth=2, color=#2962FF) hline(50, title="Middle Line", color=#787B86, linestyle=hline.style_dotted) obLevel = hline(70, title="Overbought", color=#787B86, linestyle=hline.style_dotted) osLevel = hline(30, title="Oversold", color=#787B86, linestyle=hline.style_dotted) fill(obLevel, osLevel, title="Background", color=color.rgb(33, 150, 243, 90)) plFound = na(ta.pivotlow(osc, lbL, lbR)) ? false : true phFound = na(ta.pivothigh(osc, lbL, lbR)) ? false : true _inRange(cond) => bars = ta.barssince(cond == true) rangeLower <= bars and bars <= rangeUpper //------------------------------------------------------------------------------ // Regular Bullish // Osc: Higher Low oscHL = osc[lbR] > ta.valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1]) // Price: Lower Low priceLL = low[lbR] < ta.valuewhen(plFound, low[lbR], 1) // bull : 상승 Condition : 조건 bullCond = plotBull and priceLL and oscHL and plFound // 상승다이버전스? strategy.entry("상승 다이버전스 진입", strategy.long, when = bullCond) // strategy.close("상승 다이버전스 진입", when = ta.crossover(osc, 70)) plot( plFound ? osc[lbR] : na, offset=-lbR, title="Regular Bullish", linewidth=2, color=(bullCond ? bullColor : noneColor) ) plotshape( bullCond ? osc[lbR] : na, offset=-lbR, title="Regular Bullish Label", text=" Bull ", style=shape.labelup, location=location.absolute, color=bullColor, textcolor=textColor ) //------------------------------------------------------------------------------ // Hidden Bullish // Osc: Lower Low oscLL = osc[lbR] < ta.valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1]) // Price: Higher Low priceHL = low[lbR] > ta.valuewhen(plFound, low[lbR], 1) hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound strategy.entry("히든 상승 다이버전스 진입", strategy.long, when = hiddenBullCond) // strategy.close("히든 상승 다이버전스 진입", when = ta.crossover(osc, 70)) plot( plFound ? osc[lbR] : na, offset=-lbR, title="Hidden Bullish", linewidth=2, color=(hiddenBullCond ? hiddenBullColor : noneColor) ) plotshape( hiddenBullCond ? osc[lbR] : na, offset=-lbR, title="Hidden Bullish Label", text=" H Bull ", style=shape.labelup, location=location.absolute, color=bullColor, textcolor=textColor ) //------------------------------------------------------------------------------ // Regular Bearish // Osc: Lower High oscLH = osc[lbR] < ta.valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1]) // Price: Higher High priceHH = high[lbR] > ta.valuewhen(phFound, high[lbR], 1) // bear : 하락 bearCond = plotBear and priceHH and oscLH and phFound strategy.entry("하락 다이버전스 진입", strategy.short, when = bearCond) // strategy.close("하락 다이버전스 진입", when = ta.crossunder(osc, 50)) plot( phFound ? osc[lbR] : na, offset=-lbR, title="Regular Bearish", linewidth=2, color=(bearCond ? bearColor : noneColor) ) plotshape( bearCond ? osc[lbR] : na, offset=-lbR, title="Regular Bearish Label", text=" Bear ", style=shape.labeldown, location=location.absolute, color=bearColor, textcolor=textColor ) //------------------------------------------------------------------------------ // Hidden Bearish // Osc: Higher High oscHH = osc[lbR] > ta.valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1]) // Price: Lower High priceLH = high[lbR] < ta.valuewhen(phFound, high[lbR], 1) hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound strategy.entry("히든 하락 다이버전스 진입", strategy.short, when = hiddenBearCond) // strategy.close("히든 하락 다이버전스 진입", when = ta.crossunder(osc, 50)) plot( phFound ? osc[lbR] : na, offset=-lbR, title="Hidden Bearish", linewidth=2, color=(hiddenBearCond ? hiddenBearColor : noneColor) ) plotshape( hiddenBearCond ? osc[lbR] : na, offset=-lbR, title="Hidden Bearish Label", text=" H Bear ", style=shape.labeldown, location=location.absolute, color=bearColor, textcolor=textColor )