Cette stratégie évalue les tendances haussières et baissières du marché et prend des décisions de trading en calculant la divergence de l'indicateur RSI. Plus précisément, elle évalue les signaux haussiers cachés lorsque le RSI forme des bas plus bas mais que les prix forment des bas plus élevés. Et elle évalue les signaux baissiers cachés lorsque le RSI forme des sommets plus élevés mais que les prix forment des sommets plus bas. Elle détermine ensuite les tendances haussières ou baissières potentielles du marché en fonction de ces signaux et effectue des transactions.
La stratégie est principalement basée sur la théorie de la divergence haussière et baissière de l'indicateur RSI.
Signal haussier régulier: le RSI se forme à un niveau plus bas tandis que le prix se forme à un niveau plus bas.
Signal haussier caché: le RSI se forme à un niveau inférieur alors que le prix se forme à un niveau supérieur.
Signal baissier régulier: le RSI se forme à un plus bas niveau tandis que le prix se forme à un plus haut niveau.
Signal baissier caché: le RSI se forme à un niveau plus élevé tandis que le prix se forme à un niveau plus bas.
Sur la base des divergences susmentionnées, il évalue les tendances haussières ou baissières potentielles du marché et le renforcement du pouvoir d'achat/de vente pour formuler des stratégies de négociation.
La stratégie tire principalement parti des divergences haussières et baissières du RSI pour déterminer les tendances potentielles haussières ou baissières du marché en capturant les changements de force relative entre le pouvoir d'achat et de vente derrière les actions de prix. Elle a certaines capacités prédictives d'inversions. Mais elle comporte également des risques de signaux bruyants. Des moyens tels que l'optimisation des paramètres, la combinaison d'indicateurs, l'apprentissage automatique peuvent aider à améliorer davantage la stabilité et la rentabilité de la stratégie.
/*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 )