Auf Long/Short basierte adaptive dynamische Grid-Strategie
Überblick
Dies ist eine auf Pine Script basierte adaptive dynamische Grid-Handelsstrategie für Long- und Short-Positionen. Das Kernkonzept der Strategie besteht darin, basierend auf den jüngsten Hochs und Tiefs der Kurse oder einem einfachen gleitenden Durchschnitt automatisch die obere und untere Grenze eines Grids zu berechnen und diesen Bereich dann gleichmäßig in mehrere Grid-Linien zu unterteilen. Wenn der Preis eine bestimmte Grid-Linie erreicht, wird an dieser Stelle eine Long-Position eröffnet oder geschlossen. Auf diese Weise kann die Strategie in Seitwärtsmärkten kontinuierlich Positionen eröffnen und schließen, um Spread-Gewinne zu erzielen. Durch die dynamische Anpassung der Grid-Grenzen kann sie sich auch an unterschiedliche Markttrends anpassen.
Funktionsweise der Strategie
-
Berechnung der oberen und unteren Grenze des Grids: Je nach Benutzerauswahl können die oberen und unteren Grenzen auf den höchsten und niedrigsten Kursen der letzten N Kerzen basieren, mit einem optionalen prozentualen Auf- oder Abschlag; oder auf dem einfachen gleitenden Durchschnitt der Schlusskurse der letzten N Kerzen mit einem festgelegten Auf- und Abschlagsprozentsatz.
-
Erzeugung eines Arrays von Grid-Linien: Entsprechend der festgelegten Anzahl von Grid-Linien wird der Grid-Bereich gleichmäßig aufgeteilt, um ein Array von Grid-Linien mit den entsprechenden Preisen zu erzeugen.
-
Einstieg / Nachkauf: Die Grid-Linien werden von unten nach oben durchlaufen. Wenn der aktuelle Schlusskurs unter dem Preis einer Grid-Linie liegt und für diese Grid-Linie noch keine Position besteht, wird an dieser Stelle eine Long-Position eröffnet. Auf diese Weise wird bei Erreichen höherer Grid-Linien kontinuierlich nachgekauft.
-
Ausstieg / Reduzierung: Die Grid-Linien werden von oben nach unten durchlaufen. Wenn der aktuelle Schlusskurs über dem Preis einer Grid-Linie liegt und die nächstniedrigere Grid-Linie eine Position hält, wird die Long-Position der nächstniedrigeren Grid-Linie geschlossen. Auf diese Weise wird bei fallenden Kursen kontinuierlich reduziert.
-
Dynamische Anpassung: Wenn die dynamische Grid-Funktion aktiviert ist, werden die oberen und unteren Grenzen des Grids und das Array der Grid-Linien für jede Kerze neu berechnet, sodass sich das Grid kontinuierlich an die Marktbewegungen anpassen kann.
Vorteile
-
Hohe Anpassungsfähigkeit: Die Grid-Handelsstrategie kann sich sowohl an Seitwärts- als auch an Trendmärkte anpassen. In Seitwärtsmärkten eröffnet und schließt die Grid-Strategie kontinuierlich Positionen, um Spread-Gewinne zu erzielen. In Trendmärkten kann sie aufgrund der mit dem Preis wandernden Grids eine gewisse Positionsgröße aufrechterhalten und von Trendgewinnen profitieren.
-
Kontrolliertes Risiko: Die Größe jeder eröffneten Position wird durch die Anzahl der festgelegten Grid-Linien bestimmt, sodass das einmalige Risiko gering und kontrollierbar ist. Da beim Erreichen einer höheren Grid-Linie Gewinne realisiert werden, wird auch das potenzielle Verlustrisiko teilweise abgesichert.
-
Hoher Automatisierungsgrad: Die Strategie kann weitgehend vollautomatisch laufen und erfordert kein manuelles Eingreifen, was sie ideal für Anleger macht, die langfristig stabile Erträge anstreben.
-
Flexible Parameter: Benutzer können je nach Marktcharakteristik die Anzahl der Grid-Linien, dynamische Grid-Parameter usw. flexibel anpassen, um die Performance der Strategie zu optimieren.
Risikoanalyse
-
Black-Swan-Risiko: Bei extremen Markteinbrüchen, bei denen der Preis direkt unter die niedrigste Grid-Linie springt, würde die Strategie voll investiert sein und erhebliche Verluste erleiden. Um dieses Risiko zu verringern, kann eine Stop-Loss-Bedingung festgelegt werden, die alle Positionen schließt, sobald der Verlust einen Schwellenwert erreicht.
-
Falsche Grid-Parameter: Wenn die Grid-Dichte zu hoch ist, wird der Spread zwischen Eröffnung und Schließung sehr gering, und Handelsgebühren könnten den Großteil der Gewinne aufzehren. Wenn die Grid-Breite zu groß ist, ist die einmalige Eröffnungsposition groß und das Risiko hoch. Es ist wichtig, die Eigenschaften des Basiswerts sorgfältig zu bewerten und geeignete Grid-Parameter zu wählen.
-
Basisrisiko: Die Strategie legt Eröffnungs- und Schließungsbedingungen auf Basis des aktuellen Preises fest. Bei Märkten wie Futures kann es zu erheblichen Abweichungen zwischen dem Kontraktpreis und dem Preis des Basiswerts kommen, sodass die tatsächlichen Eröffnungs-/Schließungskurse deutlich von den erwarteten abweichen können.
Optimierungsansätze
-
Hinzufügen eines Trendfilters: Grid-Strategien schneiden in einseitigen Trendmärkten schlecht ab. Es kann ein Trendindikator als Filter hinzugefügt werden, z. B. wird das Grid nur aktiviert, wenn der ADX unter einem bestimmten Schwellenwert liegt, und bei klaren Trends wird das Grid deaktiviert und nur eine einseitige Position gehalten.
-
Signalkombination: Über das Grid hinaus können weitere Signale überlagert werden, z. B. Grid + gleitender Durchschnitt: Die Entscheidung zum Eröffnen/Schließen wird hauptsächlich vom Grid getroffen, jedoch nur dann, wenn der Preis einen bestimmten gleitenden Durchschnitt kreuzt, andernfalls nicht. Dies reduziert die Kosten durch häufiges Eröffnen und Schließen.
-
Positionsmanagement: Derzeit ist die Positionsgröße pro Grid festgelegt. Man könnte die Größe pro Grid verringern, wenn der Preis weit vom Marktdurchschnitt entfernt ist, und sie in der Nähe des Marktdurchschnitts erhöhen, um die Kapitaleffizienz zu steigern.
-
Adaptive Grid-Dichte: Passen Sie die Grid-Dichte dynamisch an die Volatilität des Preises an: Bei hoher Volatilität kann die Anzahl der Grid-Linien erhöht werden, bei niedriger Volatilität verringert. Dies optimiert die Grid-Breite und verbessert die Kapitalnutzung.
Zusammenfassung
Die Strategie nutzt ein adaptives dynamisches Grid, um in Seitwärtsmärkten häufig Positionen zu eröffnen und zu schließen und Spread-Gewinne zu erzielen, während sie in Trendmärkten ein gewisses Engagement aufrechterhalten kann, um von Trendgewinnen zu profitieren. Es handelt sich um eine anpassungsfähige mittel- bis langfristige quantitative Strategie. Durch eine angemessene Einstellung der Grid-Triggerlogik und des Positionsmanagements können stabile Erträge erzielt werden. Es ist jedoch wichtig, das Risiko extremer Marktbewegungen und Preissprünge zu beachten, was durch die Festlegung geeigneter Stop-Loss-Bedingungen kontrolliert werden muss. Darüber hinaus gibt es Raum für weitere Optimierungen in Bezug auf Parametereinstellungen und Risikomanagement, z. B. durch die Einführung von Trendfiltern, Signalkombination, Positionsmanagement und adaptiver Grid-Dichte, um die Robustheit und Rentabilität der Strategie zu verbessern. Insgesamt basiert die Strategie auf der grundlegenden Grid-Logik und ergänzt sie um einen dynamischen Anpassungsmechanismus, der mittel- bis langfristigen quantitativen Anlegern neue Denkansätze und Referenzen bieten kann.
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jcloyd
//@version=4
strategy("(IK) Grid Script", overlay=true, pyramiding=14, close_entries_rule="ANY", default_qty_type=strategy.cash, initial_capital=100.0, currency="USD", commission_type=strategy.commission.percent, commission_value=0.1)
i_autoBounds = input(group="Grid Bounds", title="Use Auto Bounds?", defval=true, type=input.bool) // calculate upper and lower bound of the grid automatically? This will theorhetically be less profitable, but will certainly require less attention
i_boundSrc = input(group="Grid Bounds", title="(Auto) Bound Source", defval="Hi & Low", options=["Hi & Low", "Average"]) // should bounds of the auto grid be calculated from recent High & Low, or from a Simple Moving Average
i_boundLookback = input(group="Grid Bounds", title="(Auto) Bound Lookback", defval=250, type=input.integer, maxval=500, minval=0) // when calculating auto grid bounds, how far back should we look for a High & Low, or what should the length be of our sma
i_boundDev = input(group="Grid Bounds", title="(Auto) Bound Deviation", defval=0.10, type=input.float, maxval=1, minval=-1) // if sourcing auto bounds from High & Low, this percentage will (positive) widen or (negative) narrow the bound limits. If sourcing from Average, this is the deviation (up and down) from the sma, and CANNOT be negative.
i_upperBound = input(group="Grid Bounds", title="(Manual) Upper Boundry", defval=0.285, type=input.float) // for manual grid bounds only. The upperbound price of your grid
i_lowerBound = input(group="Grid Bounds", title="(Manual) Lower Boundry", defval=0.225, type=input.float) // for manual grid bounds only. The lowerbound price of your grid.
i_gridQty = input(group="Grid Lines", title="Grid Line Quantity", defval=8, maxval=15, minval=3, type=input.integer) // how many grid lines are in your grid- 1

