Die Hauptidee dieser Strategie ist, dass, wenn der Aktienkurs auf einen bestimmten Prozentsatz sinkt, Positionen allmählich erhöht werden können, um die durchschnittlichen Kosten der Holding-Position zu senken.
Wenn der Aktienkurs erstmals über den 20-tägigen einfachen gleitenden Durchschnitt steigt, gehen Sie lang, um eine Position zu eröffnen. Wenn die Aktie dann um den festgelegten Zielverlustprozentsatz, z. B. 10% fällt, fügen Sie die Position zu einem bestimmten Prozentsatz, z. B. 50% der aktuellen Position, hinzu. Dies senkt die durchschnittlichen Kosten der Halteposition. Wenn der Aktienkurs den festgelegten Gewinnpunkt erreicht, z. B. 10% über den durchschnittlichen Haltepreis, schließen Sie alle Positionen, um Gewinn zu erzielen.
Insbesondere setzt die Strategiefunktion Parameter wie die Erlaubnis von bis zu 4 zusätzlichen Käufen, wobei die Positionsgröße als Prozentsatz des Eigenkapitals und die anfängliche Positionsgröße bei 10% des Eigenkapitals festgelegt wird. Sie erhält die 20-tägige einfache gleitende Durchschnittslinie. Wenn der Schlusskurs über diesen Durchschnitt liegt und es keine aktuelle Position gibt, eröffnet sie eine Long-Position. Sie berechnet dann den schwimmenden Gewinn/Verlustprozentsatz der Position. Wenn sie den Zielverlustprozentsatz erreicht, setzt sie die Pyramide am Ziel zusätzlichen Kaufprozentsatz fort, bis sich die Aktie erholt, um das Gewinnziel zu erreichen.
Der größte Vorteil dieser Art von Strategie besteht darin, dass bei ungünstigen Marktbedingungen die durchschnittlichen Kosten der Holding-Position durch Pyramide-Zusatzkäufe reduziert werden können. Dies ermöglicht es, größere Gewinne zu erzielen, wenn sich die Marktbedingungen verbessern, wodurch der "Lose less, earn more" Effekt erreicht wird. Im Vergleich zu einfachen Stop-Losses kann diese Strategie Marktbewegungen besser erfassen, anstatt gezwungen zu werden, Verluste zu stoppen, wenn die Preise weiter fallen.
Gleichzeitig erlaubt die Strategie mehrere zusätzliche Einkäufe, wobei die zeitlichen Unterschiede bei Marktumkehrungen maximal genutzt werden, um Positionen schrittweise anzupassen.
Wenn die Preise weiterhin sinken, besteht natürlich auch die Gefahr, dass diese Strategie erhebliche Verluste verursacht. Vor allem auf Bärenmärkten kann das Ausmaß der Preissenkungen unsere Vorstellung weit übersteigen. Daher müssen Anteil und Anzahl der zusätzlichen Einkäufe vernünftigerweise festgelegt werden, um das Risiko innerhalb eines akzeptablen Bereichs zu kontrollieren.
Gleichzeitig müssen wir uns bewusst sein, dass, wenn alle Anleger eine solche Strategie anwenden, wenn viele Anleger ihr Verlustprozentsatzziel erreichen, es zu einem kollektiven Szenario kommen könnte, bei dem die Positionen erhöht werden. Dies würde die Preise nach oben treiben und einen irrationalen kurzfristigen Aufschwung hervorrufen. Wenn wir die Situation nicht richtig bewerten, könnten wir den Markttrend falsch beurteilen und unsere Position weiter erhöhen. Das Ergebnis wären noch größere Verluste, wenn die Preise wieder sinken.
Diese Strategie kann auf verschiedene Weise optimiert werden:
Dynamische Anpassung des zusätzlichen Einkaufsprozentsatzes, der in Echtzeit anhand der Marktbedingungen angepasst werden kann.
Verwenden Sie quantitative Indikatoren, z. B. überwachen Sie Volumenanstiege, um Umkehrsignale zu bestätigen und falsche Signale zu vermeiden.
Verwenden Sie nach zusätzlichen Käufen ein progressives Stop-Loss-System, um sicherzustellen, dass die Verluste innerhalb eines bestimmten Bereichs gehalten werden.
Die dynamische Durchschnittspreisverfolgungsstrategie nutzt den Durchschnittspreiseffekt, indem sie Positionen durch zusätzliche Einkäufe anpasst. Unter der Voraussetzung, dass sie über ausreichende Kapitalunterstützung verfügt, kann sie bei Preisumkehr effektiv überdurchschnittliche Renditen erzielen. Der Schlüssel besteht darin, den Zeitpunkt und die Proportionen richtig zu beurteilen, um Risiken in akzeptablen Grenzen zu halten. Wenn dies angemessen angewendet wird, kann dies eine sehr effektive Methode im quantitativen Handel sein.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // ########################################################################## // // // This scipt is intended to demonstrate how pyramiding can be used to average // down a position. // // We will buy when a stock closes above its 20 day MA and Average down if // the trade does not go in our favor. We will hold until a profit is made. // (which could mean we hold forever) // // ########################################################################## // strategy("Average Down", overlay=true ) // 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 = 2010, 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 = true // Strategy Inputs target_perc = input(-10, title='Target Loss to Average Down (%)', maxval=0)/100 take_profit = input(10, title='Target Take Profit', minval=0)/100 target_qty = input(50, title='% Of Current Holdings to Buy', minval=0)/100 sma_period = input(20, title='SMA Period') // Get our SMA, this will be used for our first entry ma = sma(close,sma_period) // 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 first_long = crossover(close, ma) and strategy.position_size == 0 and window if (first_long) strategy.entry("Long", strategy.long) // Average Down! if (pnl <= target_perc) qty = floor(strategy.position_size * target_qty) strategy.entry("Long", strategy.long, qty=qty) // Take Profit! strategy.exit("Take Profit", "Long", limit=take_profit_level) // Plotting plot(ma, color=blue, linewidth=2, title='SMA') plot(strategy.position_avg_price, style=linebr, color=red, title='Average Price')