Dynamische Pyramidenstrategie

Schriftsteller:ChaoZhang, Datum: 2023-12-22 14:36:30
Tags:

img

Übersicht

Die dynamische Pyramidenstrategie zielt darauf ab, die durchschnittlichen Haltekosten zu senken, indem sie zusätzliche Positionen pyramidiert, wenn der Preis fällt. Sie kann dazu beitragen, Verluste zu mindern und zusätzliche Gewinne zu erzielen, wenn der Preis zurückspringt. Die Strategie wird zusätzliche Positionen mit einer bestimmten Menge und einem bestimmten Intervall öffnen, wenn die Pyramidenbedingungen ausgelöst werden. In der Zwischenzeit ist die maximale Anzahl von Pyramiden festgelegt, um das Risiko zu begrenzen.

Strategie Logik

Die Kernlogik dieser Strategie umfaßt:

  1. Offene Position: Offene Long-Position mit angegebenem Preis, wenn die aktuelle Position 0 beträgt.

  2. Pyramidenzustand: Trigger-Pyramiden, wenn die aktuelle Pyramidenzeit unter dem maximalen Wert liegt und der Preis zu einem vorgegebenen Prozentsatz unter den letzten Einstiegspreis fällt.

  3. Pyramidenweise: Erhöhen Sie die Pyramidenmenge mit einem Skalierungsfaktor des vorherigen und verringern Sie das Intervall mit einem Skalierungsfaktor.

  4. Gewinnbedingung: Alle Positionen werden geschlossen, wenn das Gewinnziel auf der Grundlage des durchschnittlichen Haltepreises ausgelöst wird.

Durch die Pyramide mit sinkendem Preis senkt diese Strategie die durchschnittlichen Kosten dynamisch. Sie stoppt Verluste effizient und lässt mehr Spielraum für Gewinn, wenn sich der Trend umkehrt.

Analyse der Vorteile

Der größte Vorteil dieser Strategie besteht darin, durch die Verringerung der durchschnittlichen Betriebskosten durch Pyramidenbildung ein größeres Gewinnpotenzial mit akzeptablen Verlusten zu erzielen.

  1. Durch die Zugabe von zusätzlichen Kaufaufträgen zu niedrigeren Preisen, wenn der Drawdown stattfindet, wird die Strategie verwässernd zuvor höhere Einträge und senkt die Gesamtkosten.

  2. Erhöhen Sie den Gewinnspanne nach Senkung der Kosten. Wenn der Preis zurückspringt, erweitert sich das Gewinnpotenzial und ebnet den Weg für Gewinn.

  3. Flexible Anpassung für die Pyramidenlogik durch Festlegung der entsprechenden Parameter für Inkrement, Quantität und Intervall usw.

  4. Es verhindert unbegrenztes Pyramiden.

Risikoanalyse

Während die Strategie mit Pyramiden mehr Gewinnpotenzial ermöglicht, müssen einige Risiken beachtet werden:

  1. Verlustrisiko - Die Prämisse ist, bestimmte Verluste durch Pyramiden zu erzielen.

  2. Klippentauchrisiko - In extremen Fällen wie Klippentauch können Verluste den akzeptablen Bereich übersteigen.

  3. Verzögerte oder fehlende Gewinnspanne - Der Preisrückgang kann nicht immer die Gewinnspanne auslösen, was der Mangel der Strategie ist.

  4. Parameter-Tuning-Risiko - Unpassende Einstellungen von Parametern wie Pyramidenkoeffizienten und Gewinnprozentsatz können zum Scheitern führen.

Die folgenden Maßnahmen können dazu beitragen, die Risiken zu mindern:

  1. Niedrigere Inkrementalskala zur Kontrolle des Verlustbetrags bei einem einzigen Eintrag.

  2. Verringern Sie den Pyramidenintervall, um die Kosten schneller zu senken.

  3. Stellen Sie den Stop-Loss-Punkt angemessen, nicht zu locker ein.

Optimierungsrichtlinien

Angesichts der Tatsache, dass mit Pyramidensysteme ein höheres Gewinnpotenzial erzielt werden kann, konzentrieren sich die Optimierungsrichtlinien hauptsächlich auf eine bessere Risikokontrolle und die Steigerung der Rentabilität:

  1. Verbesserung der Pyramidenlogik, um Einträge intelligenter und anpassungsfähiger an die Marktbedingungen zu machen.

  2. Optimieren Sie Gewinnspielmechanismen für eine höhere Effizienz, wie z. B. nachträgliche Gewinnspiel, teilweise Schließung usw., um die Wahrscheinlichkeit eines fehlenden Preisrückgangs zu verringern.

  3. Einführung von Algorithmen für maschinelles Lernen, um die automatische Abstimmung von Parametern zu ermöglichen.

  4. Hinzufügen eines Stop-Loss-Mechanismus, um maximale Verluste zu begrenzen, wie zum Beispiel Trailing Stop-Loss und Take-Profit-Stop-Orders.

Schlussfolgerung

Die dynamische Pyramidenstrategie senkt die durchschnittlichen Holdingkosten um zusätzliche Einträge und ermöglicht ein höheres Gewinnpotenzial angesichts einer akzeptablen Verlusttoleranz. Diese Art von Strategie begünstigt Anleger mit relativ hohem Risikobereitschaft. Die zukünftigen Optimierungsrichtungen werden sich um intelligentere Pyramidenlogik, höhere Effizienz und Gewinnmechanismen drehen.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy("DCA Bot Emulator", overlay=true, pyramiding=99, default_qty_type=strategy.cash, commission_value = 0.02)

// Date Ranges
from_month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
from_day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
from_year  = input(defval = 2021, title = "From Year")
to_month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
to_day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = time >= start and time <= finish ? true : false // create function "within window of time"

// Strategy Inputs
price_deviation = input(2, title='Price deviation to open safety orders', maxval=0)/100
take_profit = input(1.5, title='Target Take Profit', minval=0)/100

// base order
base_order  = input(100000, title='base order') 
safe_order  = input(200, title='safe order') 
safe_order_volume_scale  = input(2, title='Safety order volume scale') 
safe_order_step_scale  = input(1, title='Safety order step scale') 

max_safe_order = input(10, title='max safe order') 
var current_so = 1
var initial_order = 0.0

// Calculate our key levels
pnl = (close - strategy.position_avg_price) / strategy.position_avg_price

take_profit_level = strategy.position_avg_price * (1 + take_profit)

// First Position
if(strategy.position_size == 0 and window)
    strategy.entry("Long", strategy.long, qty = base_order/close)
    initial_order := close
    current_so := 1

// Average Down!
if current_so > 0 and close  < initial_order * (1 - price_deviation * current_so * safe_order_step_scale) and current_so <= max_safe_order
    so_name = "SO " + tostring(current_so) 
    strategy.entry(so_name, long=strategy.long , qty = safe_order * safe_order_volume_scale /close)
    current_so := current_so + 1
    
// Take Profit!
strategy.close_all(when=take_profit_level <= close  and strategy.position_size > 0)


Mehr