Diese Strategie basiert auf dem DMI-Indikator, indem die Überschneidung von +DI und -DI überwacht wird, um die Trendrichtung der Aktienkurse zu bestimmen, und mit dem ADX-Indikator die Stärke des Trends ermittelt wird, um eine Trendverfolgung zu erreichen.
Diese Strategie verwendet zwei Komponenten des DMI-Indikators: +DI und -DI. +DI misst die Aufwärtsdynamik. Die Aufwärtsüberschreitung von +DI über -DI zeigt eine Stärkung der Aufwärtsdynamik an. -DI misst die Abwärtsdynamik. Die Abwärtsüberschreitung von -DI unter +DI zeigt eine Stärkung der Abwärtsdynamik an.
Wenn +DI über -DI überschreitet, entsteht ein Aufwärtstrend und die Strategie geht lang. Nach dem Eintritt in die Position verfolgt ein nachfolgender linearer Stop-Loss einen bestimmten Prozentsatz des höchsten Preises. Wenn der Preis zurückzieht, wird sich der Stop-Loss-Preis entsprechend senken und einige der früheren Gewinne bis zu einem gewissen Grad sperren.
Wenn -DI unter +DI überschreitet, übernimmt ein Abwärtstrend und die Strategie schließt ihre Position. Der ADX-Indikator kann verwendet werden, um die Stärke des Trends zu identifizieren. Je höher der ADX, desto ausgeprägter ist der Trend. Als solcher verwendet die Strategie ADX als Hilfsindikator für den Einstieg und tritt nur in eine Position ein, wenn ADX innerhalb eines bestimmten Bereichs liegt.
Zusammenfassend kann gesagt werden, dass diese Strategie die Wendepunkte der Preisentwicklung erfasst, um die Bewegung des gleitenden Durchschnitts zu erfassen.
Die wichtigsten Vorteile dieser Strategie spiegeln sich in drei Aspekten wider:
Die Verwendung des DMI-Indikators zur Bestimmung der Kursentwicklung ist genau und zuverlässig.
Die Anwendung des ADX-Indikators zur Ermittlung der Stärke von Trends verhindert häufiges Handeln in unruhigen Märkten und macht die Strategie robuster.
Der lineare Trailing-Stop-Mechanismus kann Stop-Loss-Positionen dynamisch anpassen und frühzeitig aussteigen, wenn sich der Trend umkehrt, wodurch teilweise Gewinne erzielt werden, um Risiken effektiv zu kontrollieren.
Die Strategieregeln sind einfach und klar, leicht verständlich und umsetzbar, geeignet für den algorithmischen Handel.
Die wichtigsten Risiken dieser Strategie sind:
Die Möglichkeit, dass der DMI-Indikator in bestimmten speziellen Märkten versagt.
Das Risiko, dass sich der Preis unter dem Stop-Loss-Level befindet, bevor er weiter abfällt.
Das Risiko durch unsachgemäße Einstellungen von ADX-Parametern. ADX-Parameter beeinflussen direkt die Ergebnisse der Strategiezeit. Die Leistung wird beeinträchtigt, wenn sie zu hoch oder zu niedrig eingestellt wird.
Die Leichtigkeit, in einem schnell fortschreitenden Aufwärtstrend aufgrund der linearen Trailing Stop-Methode gestoppt zu werden.
Die Risiken können durch Parameter-Tuning, strenge Stop-Losses, Optimierung der Programmarchitektur usw. weiter reduziert werden.
Diese Strategie kann in mehreren Aspekten optimiert werden:
Verwenden Sie andere Indikatoren wie MACD, KDJ für die Hilfsbeurteilung, um die Strategie-Stabilität zu verbessern.
Verschiedene Stop-Loss-Methoden wie Kurven-Trailing-Stops, zeitbasierte Trailing-Stops usw. testen.
Zusätzliche Positionsgrößenmechanismen, um nach Bestätigung der Trendrichtung schrittweise Positionen aufzubauen und die Rentabilität zu verbessern.
Einbeziehung von Hochfrequenzfaktoren, maschinellem Lernen usw. zur dynamischen Optimierung von DMI- und ADX-Parametern für höhere Intelligenz.
Zusätzlich werden programmatische Risikokontrollmodule mit Risikobudgeting usw. hinzugefügt, um den maximalen Rückzug genau zu steuern.
Verschiedene Mittel können kombiniert werden, um die Effizienz, Stabilität und Sicherheit der Strategie wirksam zu verbessern.
Die allgemeine Logik dieser Strategie ist klar und leicht zu verstehen, wobei der DMI-Indikator zur Bestimmung der Kursentwicklungsrichtung und der ADX-Indikator als Hilfsmaßstab für die Trendstärke verwendet wird, wobei lineare Trailing-Stops das Risiko effektiv kontrollieren. Die Strategie ist relativ stabil, erfordert aber immer noch Vorsicht gegen bestimmte Risiken. Durch kontinuierliche Optimierung und Tests können inkrementelle Verbesserungen der Robustheit und Effizienz der Strategie erzielt werden.
/*backtest start: 2023-02-13 00:00:00 end: 2024-02-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ //@version=5 //1.0 - 240202 @caddjax strategy(title = "+DI Crossover", overlay=false) //DMI + ADX Chart w/ overlay // © jrregencia lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50) len = input.int(6, minval=1, title="DI Length") up = ta.change(high) down = -ta.change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) trur = ta.rma(ta.tr, len) plus = fixnan(100 * ta.rma(plusDM, len) / trur) minus = fixnan(100 * ta.rma(minusDM, len) / trur) sum = plus + minus adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig) adxmax = input.int(50, title="ADX Max Buying Area", minval=1, maxval=100) adxmin = input.int(0, title="ADX Min Buying Area", minval=0, maxval=99) //DI cross alert DIPcross = ta.crossover(plus, minus) ? plus : na plotshape(DIPcross, style = shape.cross , color=color.white, location=location.absolute) plot(adx, color=color.rgb(255, 238, 0, 23), title="ADX", linewidth=2) p1 = plot(plus, color=color.rgb(16, 137, 0, 31), title="+DI", linewidth=1) p2 = plot(minus, color=color.rgb(143, 82, 255, 25), title="-DI", linewidth=1) adxmaxl = hline(adxmax, title="ADX MaxLine", color=color.silver, linestyle=hline.style_solid) adxminl = hline(adxmin, title="ADX MinLine", color=color.silver, linestyle=hline.style_solid) fill(p1, p2, title="Cloud Fill", color = plus > minus ? color.teal : color.red, transp=50) fill(adxmaxl, adxminl, title="ADX Fill", color=color.silver, transp=90) // Configure trail stop level with input options (optional) longTrailPerc = input.float(3, title="Trail Long Loss (%)", minval=0.0, step=0.1) * 0.01 // Determine trail stop loss prices longStopPrice = 0.0 // Determine entry condition enterLong = ta.crossover(plus, minus) ? plus : na longStopPrice := if strategy.position_size > 0 stopValue = high[1] * (1 - longTrailPerc) math.max(stopValue, longStopPrice[1]) else 0 // Submit entry orders if enterLong strategy.entry("EL", strategy.long) // Submit exit orders for trail stop loss price if strategy.position_size > 0 strategy.exit("XL TRL STP", stop=longStopPrice)