Dynamisches Cost-Averaging-Strategiesystem basierend auf Bollinger Bands und RSI

BB RSI DCA SMA TP
Erstellungsdatum: 2024-11-27 16:37:12 zuletzt geändert: 2024-11-27 16:37:12
Kopie: 0 Klicks: 466
1
konzentrieren Sie sich auf
1617
Anhänger

Dynamisches Cost-Averaging-Strategiesystem basierend auf Bollinger Bands und RSI

Überblick

Die Strategie ist ein quantitativer Handelssystem, das Bollinger Bands, relativ starke Indikatoren und dynamische Kostenmittel kombiniert. Die Strategie führt automatische Lagerungsoperationen in Schuhen in Marktschwankungen durch, indem sie Geldmanagementregeln festlegt, während sie in Verbindung mit technischen Indikatoren für Kauf- und Verkaufssignale entscheidet, um eine risikokontrollierbare Handelsabwicklung zu ermöglichen. Das System enthält auch Stop-Logik und Cumulative Profit-Tracking-Funktionen, um die Handelsperformance effektiv zu überwachen und zu verwalten.

Strategieprinzip

Die Strategie basiert im Wesentlichen auf den folgenden Kernkomponenten:

  1. Der Brin-Band-Indikator wird verwendet, um die Bandbreite der Preisschwankungen zu bestimmen, indem er einen Kauf bei der Berührung der unteren Bahn und einen Verkauf bei der Berührung der oberen Bahn berücksichtigt.
  2. Der RSI-Indikator wird verwendet, um zu bestätigen, dass der Markt überkauft ist, wenn der RSI unter 25 überkauft ist und über 75 überkauft ist.
  3. Das DCA-Modul berechnet den Betrag für jede Einlage auf Basis der Konto-Zinsdynamik und ermöglicht die adaptive Verwaltung der Mittel.
  4. Der Stop-Loss-Modul setzt ein Gewinnziel von 5% und erreicht das Ziel der automatischen Geländeabsicherung.
  5. Marktstatus-Monitoring-Modul berechnet die 90-Tage-Marktveränderungen und hilft, die Gesamttrends zu bestimmen
  6. Das Modul für die Verfolgung der kumulierten Gewinne zeichnet die Gewinn- und Verlustrechnung für jeden Handel auf, um die Strategie-Performance zu bewerten

Strategische Vorteile

  1. Signalzuverlässigkeit durch Cross-Verifizierung mit mehreren technischen Kennzahlen
  2. Dynamisches Positionsmanagement, um die Risiken von festen Positionen zu vermeiden
  3. Setzen Sie angemessene Stop-Loss-Bedingungen und sperren Sie die Gewinne rechtzeitig ein
  4. Mit Markttrend-Monitoring-Funktionen, um den Überblick zu behalten
  5. Gute Gewinn-Tracking-Systeme, um die Strategie zu analysieren
  6. Die Alarmfunktion ist gut konfiguriert, um Sie in Echtzeit an die Handelsmöglichkeiten zu erinnern.

Strategisches Risiko

  1. Unbeständige Märkte könnten häufige Signale auslösen, die zu höheren Transaktionskosten führen.
  2. Der RSI könnte im Trendmarkt zurückbleiben
  3. Fixed-Percentage-Stopps könnten zu früh aus einem starken Markt aussteigen
  4. Die DCA-Strategie könnte zu einem größeren Rückzug in einem einseitigen fallenden Markt führen Zur Bewältigung der Risiken werden folgende Maßnahmen empfohlen:
  • Setzen Sie eine maximale Haltbarkeit
  • Parameter für die dynamische Anpassung an die Marktschwankungen
  • Trendfilter hinzufügen
  • Implementierung einer Stufenstop-Strategie

Richtung der Strategieoptimierung

  1. Dynamische Optimierung der Parameter:
  • Die Brin-Band-Parameter können an die Schwankungen angepasst werden.
  • RSI-Trenchwerte ändern sich im Marktzyklus
  • Der Anteil der DCA-Fonds kann mit der Größe des Kontos angepasst werden
  1. Signalsysteme werden verstärkt:
  • Bestätigung zur Lautstärkeerhöhung
  • Hinzufügen von Trendlinenanalysen
  • In Kombination mit mehr technischen Kennzahlen
  1. Die Risiken sind gut kontrolliert:
  • Dynamische Verlustminderung
  • Hinzufügen von maximaler Zurückziehungssteuerung
  • Setzen Sie eine tägliche Verlustgrenze

Zusammenfassen

Die Strategie baut ein relativ vollständiges Handelssystem auf, indem sie die Methoden der technischen Analyse und des Geldmanagements kombiniert. Die Strategie hat den Vorteil, dass sie mehrere Signale erkennt und ein gutes Risikomanagement bietet, muss jedoch in der Praxis ausreichend getestet und optimiert werden. Durch die kontinuierliche Verbesserung der Parameter-Einstellungen und das Hinzufügen von Hilfsindikatoren wird die Strategie eine stabile Leistung im realen Handel erwarten.

Strategiequellcode
/*backtest
start: 2023-11-27 00:00:00
end: 2024-11-26 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Combined BB RSI with Cumulative Profit, Market Change, and Futures Strategy (DCA)", shorttitle="BB RSI Combined DCA Strategy", overlay=true)

// Input Parameters
length = input.int(20, title="BB Length")  // Adjusted BB length
mult = input.float(2.5, title="BB Multiplier")  // Adjusted BB multiplier
rsiLength = input.int(14, title="RSI Length")  // Adjusted RSI length
rsiBuyLevel = input.int(25, title="RSI Buy Level")  // Adjusted RSI Buy Level
rsiSellLevel = input.int(75, title="RSI Sell Level")  // Adjusted RSI Sell Level
dcaPositionSizePercent = input.float(1, title="DCA Position Size (%)", tooltip="Percentage of equity to use in each DCA step")
takeProfitPercentage = input.float(5, title="Take Profit (%)", tooltip="Take profit percentage for DCA strategy")

// Calculate DCA position size
equity = strategy.equity  // Account equity
dcaPositionSize = (equity * dcaPositionSizePercent) / 100  // DCA position size as percentage of equity

// Bollinger Bands Calculation
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev

// RSI Calculation
rsi = ta.rsi(close, rsiLength)

// Plotting Bollinger Bands and RSI levels
plot(upper, color=color.red, title="Bollinger Upper")
plot(lower, color=color.green, title="Bollinger Lower")
hline(rsiBuyLevel, "RSI Buy Level", color=color.green)
hline(rsiSellLevel, "RSI Sell Level", color=color.red)

// Buy and Sell Signals
buySignal = (rsi < rsiBuyLevel and close <= lower)
sellSignal = (rsi > rsiSellLevel and close >= upper)

// DCA Strategy: Enter Long or Short based on signals with calculated position size
if (buySignal)
    strategy.entry("DCA Buy", strategy.long)

if (sellSignal)
    strategy.entry("DCA Sell", strategy.short)

// Take Profit Logic
if (strategy.position_size > 0)  // If long
    strategy.exit("Take Profit Long", from_entry="DCA Buy", limit=close * (1 + takeProfitPercentage / 100))

if (strategy.position_size < 0)  // If short
    strategy.exit("Take Profit Short", from_entry="DCA Sell", limit=close * (1 - takeProfitPercentage / 100))

// Plot Buy/Sell Signals on the chart
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", textcolor=color.white)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", textcolor=color.white)

// Alerts for Buy/Sell Signals
alertcondition(buySignal, title="Buy Alert", message="Buy Signal Detected")
alertcondition(sellSignal, title="Sell Alert", message="Sell Signal Detected")

// Cumulative Profit Calculation
var float buyPrice = na
var float profit = na
var float cumulativeProfit = 0.0  // Cumulative profit tracker

if (buySignal)
    buyPrice := close
if (sellSignal and not na(buyPrice))
    profit := (close - buyPrice) / buyPrice * 100
    cumulativeProfit := cumulativeProfit + profit  // Update cumulative profit
    label.new(bar_index, high, text="P: " + str.tostring(profit, "#.##") + "%", color=color.blue, style=label.style_label_down)
    buyPrice := na  // Reset buyPrice after sell

// Plot cumulative profit on the chart
var label cumulativeLabel = na
if (not na(cumulativeProfit))
    if not na(cumulativeLabel)
        label.delete(cumulativeLabel)
    cumulativeLabel := label.new(bar_index, high + 10, text="Cumulative Profit: " + str.tostring(cumulativeProfit, "#.##") + "%", color=color.purple, style=label.style_label_up)

// Market Change over 3 months Calculation
threeMonthsBars = 3 * 30 * 24  // Approximation of 3 months in bars (assuming 1 hour per bar)
priceThreeMonthsAgo = request.security(syminfo.tickerid, "D", close[threeMonthsBars])
marketChange = (close - priceThreeMonthsAgo) / priceThreeMonthsAgo * 100

// Plot market change over 3 months
var label marketChangeLabel = na
if (not na(marketChange))
    if not na(marketChangeLabel)
        label.delete(marketChangeLabel)
    marketChangeLabel := label.new(bar_index, high + 20, text="Market Change (3 months): " + str.tostring(marketChange, "#.##") + "%", color=color.orange, style=label.style_label_up)

// Both labels (cumulative profit and market change) are displayed simultaneously
var label infoLabel = na
if (not na(cumulativeProfit) and not na(marketChange))
    if not na(infoLabel)
        label.delete(infoLabel)
    infoLabel := label.new(bar_index, high + 30, text="Cumulative Profit: " + str.tostring(cumulativeProfit, "#.##") + "% | Market Change (3 months): " + str.tostring(marketChange, "#.##") + "%", color=color.purple, style=label.style_label_upper_right)