RSI-Hoch- und Bären-Divergenz-Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-01-15 12:09:54
Tags:

img

Übersicht

Diese Strategie beurteilt die bullischen und bärischen Trends des Marktes und trifft Handelsentscheidungen, indem sie die Divergenz des RSI-Indikators berechnet. Insbesondere wird es versteckte bullische Signale beurteilen, wenn der RSI niedrigere Tiefs bildet, aber die Preise höhere Tiefs bilden. Und es wird versteckte bärische Signale beurteilen, wenn der RSI höhere Höchststände bildet, aber die Preise niedrigere Höchststände bilden. Dann bestimmt es die potenziellen bullischen oder bärischen Trends des Marktes auf der Grundlage dieser Signale und macht Trades.

Strategie Logik

Die Strategie basiert hauptsächlich auf der Theorie der bullischen und bärischen Divergenz des RSI-Indikators.

  1. Regelmäßiges Bullish-Signal: Der RSI bildet ein höheres Tief, während der Preis ein niedrigeres Tief bildet.

  2. Verborgenes Bullish Signal: Der RSI bildet sich niedriger niedrig, während sich der Preis höher niedrig bildet.

  3. Regelmäßiges Bärensignal: Der RSI bildet ein niedrigeres Hoch, während der Preis ein höheres Hoch bildet.

  4. Verborgenes Bärensignal: Der RSI bildet ein höheres Hoch, während der Preis ein niedrigeres Hoch bildet.

Auf der Grundlage der vorstehenden Abweichungen beurteilt sie die möglichen bullischen oder bärischen Trends des Marktes und die Stärkung der Kauf-/Verkaufskraft, um Handelsstrategien zu formulieren.

Vorteile

  1. Verwenden Sie die bullische und bärische Divergenztheorie des RSI, um die möglichen Markttrends zu bestimmen.
  2. Auch Kombination von Preisaktionen zur Bestätigung, um laute Signale zu vermeiden.
  3. Fähig, kritische Signale vor schnellen Marktumkehrungen zu erfassen.
  4. Implementieren visualisierter Anzeige für bullische und bärische Signale, einfach und intuitiv zu bedienen.
  5. Anpassungsfähige Parameter für verschiedene Marktbedingungen.

Risiken

  1. Abweichungen zwischen RSI und Preis können nicht unbedingt Rückschläge bedeuten, sie könnten nur bereichsgebundene Aktionen sein.
  2. Verborgene Signale haben relativ größere Geräusche, Risiken von Fehleinschätzungen.
  3. Es müssen mehr Indikatoren oder technische Analysemethoden hinzugefügt werden, um die Signale zu bestätigen.
  4. Auch falsche Parametereinstellungen können die Urteile beeinträchtigen.

Anweisungen zur Verbesserung

  1. Einbeziehung von MACD, KDJ und anderen Indikatoren in den RSI zur Bestimmung der Einstiegssignale.
  2. Hinzufügen einer Stop-Loss-Strategie, um Verluste pro Handel zu reduzieren.
  3. Optimieren Sie die Parameter-Einstellungen, wie zum Beispiel die Suche nach geeigneteren RSI-Perioden.
  4. Einführung von Algorithmen für maschinelles Lernen, um die Genauigkeit der Erfassung von Eingangssignalen zu trainieren.
  5. Implementieren Sie Websocket für Echtzeit-Zitate, um die Signalbestätigungslatenz zu reduzieren.

Zusammenfassung

Die Strategie nutzt hauptsächlich die bullischen und bärischen Divergenzen des RSI, um die potenziellen bullischen oder bärischen Trends des Marktes zu bestimmen, indem sie die relativen Veränderungen der Kauf- und Verkaufskraft hinter den Preisbewegungen erfasst. Sie hat bestimmte vorausschauende Fähigkeiten von Umkehrungen. Aber sie birgt auch Risiken für laute Signale. Wege wie Parameteroptimierung, Indikatorenkombination, maschinelles Lernen können dazu beitragen, die Stabilität und Rentabilität der Strategie weiter zu verbessern.


/*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
	 )

Mehr