Geldverwaltungssystem basierend auf RSI-Momentum und ADX-Trendstärke

RSI ADX ATR EMA TP
Erstellungsdatum: 2024-12-20 14:24:34 zuletzt geändert: 2024-12-20 14:24:34
Kopie: 0 Klicks: 397
1
konzentrieren Sie sich auf
1617
Anhänger

Geldverwaltungssystem basierend auf RSI-Momentum und ADX-Trendstärke

Überblick

Die Strategie ist ein Hybrid-Strategie-System, das Trend-Tracking und Shock-Trading kombiniert, um einen stabilen Handel durch die Auswahl von mehreren technischen Indikatoren und strenge Geldverwaltung zu ermöglichen. Die Strategie nutzt eine Schritt-Stopp-Methode, um Gewinne zu sperren, während maximale Rücknahme-Kontrollen eingerichtet werden, um Risiken zu kontrollieren, während Gewinne gesichert werden.

Strategieprinzip

Die Kernlogik der Strategie umfasst die folgenden Schlüsselelemente:

  1. Die Eintrittsvoraussetzungen sind gleichzeitig erfüllt: Die Handelsmenge ist größer als 1 Million, der ADX ist größer als 25 und zeigt einen klaren Trend, der RSI ist größer als 60 und zeigt starke Dynamik, der ATR ist größer als 2, um genügend Spielraum für Schwankungen zu gewährleisten, und der Preis hält sich oberhalb der 200-Tages-Durchschnittslinie in einer Aufwärtstrend.
  2. Schrittweise Stop-Loss-Design: Erster Stop-Loss liegt bei 15%, 50% der Positionen werden platziert; zweiter Stop-Loss liegt bei 30%, die verbleibenden Positionen werden platziert. Dieses Design kann sowohl einen Teil der Gewinne frühzeitig sperren als auch die großen Trends nicht verpassen.
  3. Stop-Loss-Kontrolle: Setzen Sie einen Stop-Loss-Schutz von 15% und gehen Sie aus, wenn der RSI unter 50 liegt oder der Kurs unter 200 fällt.
  4. Rücknahme-Management: Echtzeit-Tracking der Strategie-Netzwerte, systematische Wind-Control-Trigger bei Rücknahmen von mehr als 30% und Entlastung aller Positionen.

Strategische Vorteile

  1. Mehrere technische Indikatoren werden wechselseitig validiert, um die Zuverlässigkeit von Handelssignalen zu verbessern
  2. Der Schrittstopp ist so konzipiert, dass er sowohl kurzfristige Gewinne als auch die Notwendigkeit, große Trends zu erfassen, berücksichtigt.
  3. Gute Risikokontrollsysteme, einschließlich individueller Stop-Loss-Systeme und systematischer Risikokontrollen
  4. Die Handelsbedingungen sind streng und filtern falsche Signale effektiv ab.
  5. Klare Strategie-Logik, um Parameter an die Marktlage anzupassen

Strategisches Risiko

  1. Mehrfache Filterung könnte zu verpassten Handelschancen führen
  2. Stop-Loss-Aufträge können in volatilen Märkten häufig ausgelöst werden
  3. Die Stop-Loss- und Stop-Stop-Einstellungen mit festen Prozentsätzen sind möglicherweise nicht für alle Marktbedingungen geeignet
  4. Strategie basiert auf technischen Kennzahlen, die bei grundlegenden Unvorhergesehenen nicht ausreichend reagieren können
  5. Umfangreicher Kapitalbedarf zur Erfüllung der Transaktionsvolumenanforderungen

Richtung der Strategieoptimierung

  1. Die Einführung eines adaptiven Stop-Loss-Mechanismus, der sich dynamisch an Marktschwankungen anpasst
  2. Hinzufügung eines Moduls zur Marktrechnung, mit unterschiedlichen Parameter-Einstellungen für verschiedene Marktbedingungen
  3. Optimierung der ADX-Berechnungsmethode unter Berücksichtigung des Einsatzes von Adaptionszyklen
  4. Optimierung des Positionsmanagementsystems durch Berücksichtigung der Transaktionskosten
  5. Entwicklung eines Signalfiltermechanismus auf Basis von maschinellem Lernen

Zusammenfassen

Die Strategie ist ein umfassendes Handelssystem, das durch mehrere technische Indikatoren und strenge Kapitalverwaltung einen stabilen Handel ermöglicht. Die Kernvorteile der Strategie liegen in ihrem ausgefeilten Risikokontrollsystem und dem Schritt-für-Schritt-Stopp-Mechanismus, wobei jedoch auch darauf geachtet werden muss, die Parameter-Einstellungen in der Praxis entsprechend den Marktbedingungen anzupassen. Der Raum für weitere Optimierungen der Strategie liegt hauptsächlich in der dynamischen Anpassung der Parameter und der Verbesserung der Signalfiltermechanismen.

Strategiequellcode
/*backtest
start: 2023-12-20 00:00:00
end: 2024-12-18 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Swing Strategy (<30% DD)", shorttitle="SwingStratDD", overlay=true)

//-----------------------------------------------------
// Example Indicators and Logic
//-----------------------------------------------------
emaLen   = input.int(200, "EMA Length", minval=1)
emaValue = ta.ema(close, emaLen)

plot(emaValue, color=color.yellow, linewidth=2, title="EMA 200")


//-----------------------------------------------------
// User Inputs
//-----------------------------------------------------
adxLen           = input.int(14,  "ADX Length",      minval=1)
rsiLen           = input.int(14,  "RSI Length",      minval=1)
atrLen           = input.int(14,  "ATR Length",      minval=1)

rsiBuyThresh     = input.float(60, "RSI Buy Threshold",     minval=1, maxval=100)
adxThresh        = input.float(25, "ADX Threshold (Trend)", minval=1, maxval=100)
minVolume        = input.float(1e6,"Minimum Volume",         minval=1)
minATR           = input.float(2,  "Minimum ATR(14)",        minval=0.1, step=0.1)

stopLossPerc     = input.float(15, "Stop-Loss %",            minval=0.1, step=0.1)
// We’ll do two partial take-profit levels to aim for consistent cashflow:
takeProfit1Perc  = input.float(15, "Take-Profit1 %",         minval=0.1, step=0.1)
takeProfit2Perc  = input.float(30, "Take-Profit2 %",         minval=0.1, step=0.1)

ddLimit          = input.float(30, "Max Drawdown %",         minval=0.1, step=0.1)

//-----------------------------------------------------
// Indicators
//-----------------------------------------------------

rsiValue = ta.rsi(close, rsiLen)
atrValue = ta.atr(atrLen)

//--- Fully Manual ADX Calculation ---
upMove      = high - high[1]
downMove    = low[1] - low
plusDM      = (upMove > downMove and upMove > 0) ? upMove : 0.0
minusDM     = (downMove > upMove and downMove > 0) ? downMove : 0.0
smPlusDM    = ta.rma(plusDM, adxLen)
smMinusDM   = ta.rma(minusDM, adxLen)
smTR        = ta.rma(ta.tr, adxLen)
plusDI      = (smPlusDM / smTR) * 100
minusDI     = (smMinusDM / smTR) * 100
dx          = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100
adxValue    = ta.rma(dx, adxLen)

//-----------------------------------------------------
// Screener-Like Conditions (Technical Only)
//-----------------------------------------------------
volumeCondition   = volume > minVolume
adxCondition      = adxValue > adxThresh
rsiCondition      = rsiValue > rsiBuyThresh
atrCondition      = atrValue > minATR
aboveEmaCondition = close > emaValue

longCondition = volumeCondition and adxCondition and rsiCondition and atrCondition and aboveEmaCondition

//-----------------------------------------------------
// Strategy Entry / Exit Logic
//-----------------------------------------------------
var bool inTrade = false

// Entry
if longCondition and not inTrade
    strategy.entry("Long", strategy.long)

// Basic Exit Condition: RSI < 50 or Price < EMA
exitCondition = (rsiValue < 50) or (close < emaValue)
if inTrade and exitCondition
    strategy.close("Long")

// Update inTrade status
inTrade := strategy.position_size > 0

//-----------------------------------------------------
// Multi-Level Stop-Loss & Partial Profits
//-----------------------------------------------------
if inTrade
    float entryPrice = strategy.position_avg_price

    // Stop-Loss
    float stopPrice     = entryPrice * (1 - stopLossPerc / 100)

    // Two partial take-profit levels
    float tp1Price      = entryPrice * (1 + takeProfit1Perc / 100)
    float tp2Price      = entryPrice * (1 + takeProfit2Perc / 100)

    // Example approach: exit half at TP1, half at TP2
    strategy.exit("TP1/SL",     from_entry="Long", stop=stopPrice,    limit=tp1Price, qty_percent=50)
    strategy.exit("TP2",        from_entry="Long", limit=tp2Price,    qty_percent=50)

//-----------------------------------------------------
// Dynamic Drawdown Handling
//-----------------------------------------------------
var float peakEquity = strategy.equity
peakEquity := math.max(peakEquity, strategy.equity)

currentDrawdownPerc = (peakEquity - strategy.equity) / peakEquity * 100
if currentDrawdownPerc > ddLimit
    strategy.close_all("Max Drawdown Exceeded")

//-----------------------------------------------------
// Plotting
//-----------------------------------------------------
plot(emaValue, title="EMA 200", color=color.yellow, linewidth=2)
plotchar(rsiValue, title="RSI", char='●', location=location.bottom, color=color.new(color.teal, 50))
plot(adxValue, title="Manual ADX", color=color.orange)