RSI dynamische Stop-Loss- und Take-Profit-Strategie


Erstellungsdatum: 2024-03-19 15:54:01 zuletzt geändert: 2024-03-19 15:54:01
Kopie: 1 Klicks: 623
1
konzentrieren Sie sich auf
1617
Anhänger

RSI dynamische Stop-Loss- und Take-Profit-Strategie

Strategie im Überblick: Die Strategie basiert auf der Beziehung zwischen dem RSI-Indikator und dem Preis und optimiert die Handelsperformance durch die dynamische Anpassung der Stop-Loss-Punkte. Die Hauptidee der Strategie ist es, die Überkauf-Überverkauf-Eigenschaften des RSI-Indikators zu nutzen, in Verbindung mit Preis- und Transaktionsvolumenänderungen, um bei Abweichungen des RSI rechtzeitig zu stoppen und gleichzeitig das Risiko durch dynamische Stopps zu kontrollieren.

Die Strategie:

  1. Berechnen Sie die Werte des RSI-Indikators und bestimmen Sie die Grenzwerte für Überkauf und Überverkauf anhand der eingegebenen Parameter.
  2. Vergleichen Sie den aktuellen RSI-Wert mit dem RSI-Wert der letzten K-Linien, um zu bestimmen, ob eine Spitze (isPeak) oder eine Unterseite (isBottom) vorliegt.
  3. Bei einer Spitzenform wird ein Verkaufssignal erzeugt, wenn der aktuelle Preis höher ist als der Höhepunkt des vorherigen Spitzes und die Transaktionsmenge geringer ist als die des vorherigen Spitzes.
  4. Bei einer Bottomform erzeugt ein Kaufsignal, wenn der aktuelle Preis unter dem Tiefpunkt des vorherigen Bodens liegt und der Umsatz geringer ist als der des vorherigen Bodens.
  5. Wenn ein Kaufsignal ausgelöst wird, wird ein Stopp ausgelöst, wenn der Preis auf das vorherige Tief zurückfällt oder wenn der Umsatz kleiner ist als der vorherige Tief.
  6. Nach dem Ausverkaufssignal wird ein Stopp ausgelöst, wenn der Preis auf den vorherigen Höchstwert zurückfällt oder der Umsatz geringer als der vorherige Höchstwert ist.
  7. Nach der Eröffnung der Position wird der Stop-Loss-Preis auf einen bestimmten Prozentsatz des Eröffnungspreises (±2%) festgelegt, um das Risiko zu kontrollieren.

Strategische Vorteile:

  1. Durch die dynamische Stop-Off-Methode können Sie die Gewinne in der Anfangsphase der Trendwende rechtzeitig sperren und die strategischen Gewinne verbessern.
  2. Durch die Verwendung von Verkehrsveränderungen als Hilfskriterien können falsche Signale effektiv gefiltert und die Genauigkeit der Signale verbessert werden.
  3. Die Stop-Loss-Einstellung kann die Risikothek für einzelne Geschäfte wirksam kontrollieren und die strategische Rücknahme reduzieren.
  4. Die Parameter sind anpassbar für verschiedene Marktumgebungen und Handelsarten.

Strategische Risiken:

  1. In einem bewegten Markt kann der RSI häufig überkaufen und überverkaufen, was zu mehr falschen Signalen führt.
  2. Die Stop-Loss-Einstellung kann zu einem größeren Rückzug der Strategie in der kurzen Zeit führen.
  3. Die Strategie kann in einem Trendmarkt schlechter abschneiden als eine Trend-Tracking-Strategie.

Optimierung:

  1. Die Einführung von anderen technischen Indikatoren wie MACD, Brinband usw. kann in Erwägung gezogen werden, um die Zuverlässigkeit des Signals zu verbessern.
  2. Optimierung des Stop-Loss-Through-Wertes, entsprechend der Eigenschaften der verschiedenen Sorten und der Dynamik der Marktumgebung.
  3. Positionsverwaltungsmodul, um die Positionsgröße an die Marktvolatilität und das Konto-Risiko anzupassen.
  4. Optimierung der Parameter der Strategie, um die optimale Kombination von Parametern zu finden.

Zusammenfassung: Die RSI-Dynamische Stop-Loss-Strategie nutzt die Abweichung zwischen RSI-Indikator und Preis, kombiniert die Veränderung des Handelsvolumens, setzt eine zeitnahe Stop-Loss-Strategie in der Anfangsphase des Trends ein, um das Risiko zu kontrollieren. Der Vorteil dieser Strategie besteht darin, dass die Gewinne in der Anfangsphase des Trendwechsels gesperrt werden können, um den Rückzug der Strategie zu verringern und gleichzeitig eine gewisse Anpassungsfähigkeit zu haben.

Strategiequellcode
/*backtest
start: 2024-03-11 00:00:00
end: 2024-03-15 09:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RMM_byMR", overlay=true)

// RSI uzunluğu girişi
rsiLength = input(14, title="RSI Uzunluğu")

// Tepe ve dip seviyeleri için girişler
overboughtLevel = input(70, title="Aşırı Alım Seviyesi")
oversoldLevel = input(30, title="Aşırı Satım Seviyesi")

// RSI hesaplama
rsiValue = rsi(close, rsiLength)

// Son tepe noktalarını tespit etme // Son dip noktalarını tespit etme
isPeak = rsiValue[2] > overboughtLevel and rsiValue[2] > rsiValue[1] and rsiValue[2] > rsiValue[3] and (rsiValue[1] > rsiValue or rsiValue[3] > rsiValue[4])
isBottom = rsiValue[2] < oversoldLevel and rsiValue[2] < rsiValue[1] and rsiValue[2] < rsiValue[3] and (rsiValue[1] < rsiValue or rsiValue[3] < rsiValue[4])

// Önceki tepe noktalarını tespit etme
prevPeak = valuewhen(isPeak, rsiValue[2], 1)
prevPeakHighPrice = valuewhen(isPeak, high[2], 1)
volumePeak = valuewhen(isPeak, volume[1]+volume[2]+volume[3], 1)
prevPeakBarIndex = valuewhen(isPeak, bar_index, 1)

// Önceki dip noktalarını tespit etme
prevBottom = valuewhen(isBottom, rsiValue[2], 1)
prevBottomLowPrice = valuewhen(isBottom, low[2], 1)
volumeBottom = valuewhen(isBottom, volume[1]+volume[2]+volume[3], 1)
prevBottomBarIndex = valuewhen(isBottom, bar_index, 1)

// Tepe noktasında satış sinyali
isSellSignal = prevPeakBarIndex > prevBottomBarIndex and isPeak and rsiValue[2] < prevPeak and high[2] > prevPeakHighPrice and (volume[1]+volume[2]+volume[3]) < volumePeak
isBuyTakeProfit = isPeak and ((rsiValue[2] < prevPeak and high[2] > prevPeakHighPrice) or (rsiValue[2] < prevPeak and (volume[1]+volume[2]+volume[3]) < volumePeak))

// Dip noktasında alış sinyali
isBuySignal = prevBottomBarIndex > prevPeakBarIndex and isBottom and rsiValue[2] > prevBottom and low[2] < prevBottomLowPrice and (volume[1]+volume[2]+volume[3]) < volumeBottom
isSellTakeProfit = isBottom and ((rsiValue[2] > prevBottom and low[2] < prevBottomLowPrice) or (rsiValue[2] > prevBottom and (volume[1]+volume[2]+volume[3]) < volumeBottom))

sellTakeProfit = valuewhen(isSellTakeProfit, low, 1)
buyTakeProfit = valuewhen(isBuyTakeProfit, high, 1)

// isSellTakeProfit koşulu için işaretlemeyi yap
plotshape(isSellTakeProfit, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.small, title="Sell Take Profit", offset=-2) 

// isBuyTakeProfit koşulu için işaretlemeyi yap
plotshape(isBuyTakeProfit, style=shape.triangledown, location=location.belowbar, color=color.red, size=size.small, title="Buy Take Profit", offset=-2)

buyComment = "Buy \n Rsi:" + tostring(round(rsiValue[2], 2)) + " \n Low:" + tostring(round(low[2],2)) + " \n Hacim:" + tostring(round(volume[1]+volume[2]+volume[3],2))
sellComment = "Sell \n Rsi:" + tostring(round(rsiValue[2], 2)) + " \n High:" + tostring(round(high[2],2)) + " \n Hacim:" + tostring(round(volume[1]+volume[2]+volume[3],2)) 

// Alış sinyali durumunda uzun pozisyon aç
if (isBuySignal)
    strategy.entry("Buy", strategy.long, comment = buyComment )
    strategy.exit("SL", "Buy", stop=close * 0.98)

// Satış sinyali durumunda kısa pozisyon aç
if (isSellSignal)
    strategy.entry("Sell", strategy.short, comment = sellComment )
    strategy.exit("SL","Sell", stop=close * 1.02)
// Limit değerini sonradan belirleme


// Alış sinyali durumunda uzun pozisyon kapat
if (isBuyTakeProfit)
    strategy.close("Buy", comment="TP")

// Satış sinyali durumunda kısa pozisyon kapat
if (isSellTakeProfit)
    strategy.close("Sell", comment="TP")