Dynamische doppelte exponentielle gleitende Durchschnittshandelsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-02-06 09:38:32
Tags:

img

Übersicht

Diese Strategie wird Dynamic Dual Exponential Moving Average Trading Strategy genannt. Es ist eine quantitative Handelsstrategie, die auf dem doppelten exponentiellen gleitenden Durchschnitt (DEMA) basiert. Die Strategie berechnet die Kursänderungsrate von Aktien und führt dann eine doppelte exponentielle Glättung sowohl auf ihrem absoluten Wert als auch auf ihrem nicht-absoluten Wert durch, um den True Strength Index (TSI) zu erhalten. Die Strategie erzeugt Kauf- und Verkaufssignale basierend auf dem goldenen/toten Kreuz des TSI-Wertes und seiner Signallinie.

Strategieprinzip

Der Kernindikator dieser Strategie ist der "True Strength Index" (TSI).

TSI = 100 * (PC1/PC2)

Wo PC1 und PC2 die doppelten exponentiellen gleitenden Durchschnitte der Preisänderungsrate und der absolute Wert der Preisänderungsrate sind. Der doppelte exponentielle gleitende Durchschnitt wird berechnet, indem zunächst ein exponentieller gleitender Durchschnitt mit einer Länge auf die Preisänderungsrate angewendet und dann ein anderer kürzerer exponentieller gleitender Durchschnitt auf den erhaltenen gleitenden Durchschnitt angewendet wird. Diese doppelte Glättung kann die Zufälligkeit in der Preisänderungsrate besser beseitigen und die Stabilität des TSI-Indikators verbessern.

Nach der Berechnung des TSI-Wertes berechnet die Strategie auch eine Signallinie für den TSI-Wert. Die Signallinie wird als exponentieller gleitender Durchschnitt des TSI-Wertes über einen bestimmten Zeitraum definiert. Im tatsächlichen Handel beurteilt die Strategie Markttrends und erzeugt Handelssignale, indem sie die Beziehung zwischen dem TSI-Wert und seiner Signallinie beobachtet. Wenn der TSI-Wert über die Signallinie überschreitet, ist es ein Kaufsignal. Wenn der TSI-Wert unter die Signallinie überschreitet, ist es ein Verkaufssignal.

Ein weiteres Merkmal dieser Strategie ist, dass die Handelsgröße dynamisch angepasst wird. Der Strategiecode legt ein Anfangskapital und eine Risikopositionsquote als Eingabeparameter fest. Diese beiden Parameter werden mit dem aktuellen Kurs der Aktie kombiniert, um die Anzahl der gehandelten Verträge oder das Risikopositionsniveau dynamisch zu berechnen. Dies kann das Gesamtrisiko der gesamten Strategie besser kontrollieren.

Analyse der Vorteile

Die dynamische doppelte exponentielle gleitende Durchschnittshandelsstrategie bietet mehrere Vorteile:

  1. Es verwendet den TSI-Indikator, der eine doppelte exponentielle Glättung anwendet, wodurch er weniger empfindlich auf Marktlärm reagiert und präzisere Signale erzeugen kann.

  2. Es baut auf dem bewährten Prinzip auf, dass ein Indikator und seine Signallinie sich kreuzen, um Handelssignale zu erzeugen.

  3. Die Strategie passt die Positionsgröße dynamisch an, basierend auf dem Risikobudget, was dazu beiträgt, Überhandelungen und Emotionen zu vermeiden.

  4. Es funktioniert auf täglichen und wöchentlichen Zeitrahmen und eignet sich sowohl für den Swing-Handel als auch für den Positionshandel.

  5. Es ist leicht in Bots und anderen Handelssystemen aufgrund der einfachen Ein-/Aus-Logik zu implementieren.

  6. Es gibt nicht zu viele Parameter, die abgestimmt werden müssen, so dass das System leicht zu optimieren ist.

Diese Vorteile zusammen machen es zu einer robusten und vielseitigen Handelsstrategie für Aktienhändler.

Risikoanalyse

Während die dynamische doppelte exponentielle gleitende Durchschnittshandelsstrategie viele Vorteile hat, birgt sie wie die meisten Aktienstrategien auch einige inhärente Risiken:

  1. Da die TSI und die Signallinie auf historischen Preisdaten basieren, besteht immer die Gefahr, dass die Signale falsch sind, insbesondere bei volatilen Marktbedingungen.

  2. Wenn der Markt um die Nulllinie des TSI-Indikators schwankt, kann es zu Schlagsaugen kommen, was zu Verlusten führen kann.

  3. Große Gap-Bewegungen können dazu führen, dass die Strategie mit Verlust geschlossen wird, da sie nicht rechtzeitig aussteigen konnte.

  4. Sollte der Markt weiterhin in einem starken Trend verbleiben, kann die TSI den Trend vorzeitig rückgängig machen und zu verpassten Gewinnen führen.

  5. Aufgrund des Verschuldungseffekts sind größere Verluste als die durch die Risikoparameter festgelegten Grenzwerte möglich.

Diese Risiken können jedoch durch Aspekte wie Positionsgröße, Stop-Losses und andere Risikomanagementtechniken gemildert werden.

Optimierungsrichtlinien

Einige Ideen zur Optimierung dieser Strategie sind:

  1. Test unterschiedlicher Kombinationen von doppelten Glättungsparametern, um die Kombination zu finden, die die genauesten Handelssignale erzeugt.

  2. Hinzufügen von Filtern auf der Grundlage von Volatilität, Handelsvolumen oder anderen Indikatoren, um unnötige Handelssignale zu reduzieren. Dies kann die Handelshäufigkeit reduzieren und gleichzeitig die Rentabilität jedes Handels erhöhen.

  3. Einbeziehung von Stop-Loss-Logik, z. B. Stoppen, wenn der TSI-Wert die Nulllinie überschreitet. Dies kann unnötige Verluste reduzieren.

  4. Bewertung der Leistung verschiedener Handelsinstrumente wie Indizes, Rohstoffe usw. im Rahmen dieser Strategie.

  5. Sie können auch die Qualität und die Qualität der Produkte und Dienstleistungen ermitteln, die für den Handel mit Produkten verwendet werden.

  6. Die Verwendung von Methoden des maschinellen Lernens wie Walk-Forward-Analyse zur Auswahl optimaler Parameterkombinationen kann menschliche Auswahlverzerrungen reduzieren und bessere Parameter erzielen.

  7. Die Verwendung mehrerer Parameter-Sets basierend auf unterschiedlichen Marktregimen und dynamischer Wechsel zwischen ihnen. Zum Beispiel aggressivere Parameter während Bullenmärkte und konservative Parameter während Bärenmärkte.

Durch die Erprobung und Optimierung der oben genannten Aspekte besteht das Potenzial, die Stabilität und Rentabilität dieser Strategie weiter zu verbessern.

Zusammenfassung

Zusammenfassend lässt sich mit dieser Strategie die doppelten exponentiellen Glättungseigenschaften des TSI-Indikators nutzen, um eine relativ stabile und zuverlässige Aktienhandelsstrategie zu entwickeln. Durch die dynamische Anpassung der Positionsgrößen kann das Gesamtrisikoniveau effektiv kontrolliert werden. Die Strategie kombiniert die Vorteile, sowohl für den kurz- als auch für den mittelfristigen Handel geeignet zu sein.

Wie die meisten quantitativen Handelsstrategien hat diese Strategie natürlich auch einige Einschränkungen, die sich vor allem darin widerspiegeln, dass sie anfällig für die Auswirkungen drastischer Marktschwankungen ist. Darüber hinaus müssen Parameterwahl- und Filterkriterien weiter getestet und optimiert werden, um eine stärkere Anpassungsfähigkeit und Rentabilität auf den sich ständig verändernden Finanzmärkten zu erzielen.


/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © shankardey7310

//@version=5
strategy("TSI STOCKS", shorttitle="TSI", overlay=true)

initialCapital = input(10000, title="Initial Capital")
riskPercent = input(1, title="Risk Percentage") / 100

longLength = input(12, title="Long Length")
shortLength = input(9, title="Short Length")
signalLength = input(12, title="Signal Length")

price = close
pc = ta.change(price)

double_smooth(src, long, short) =>
    first_smooth = ta.ema(src, long)
    ta.ema(first_smooth, short)

double_smoothed_pc = double_smooth(pc, longLength, shortLength)
double_smoothed_abs_pc = double_smooth(math.abs(pc), longLength, shortLength)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
tsi_signal = ta.ema(tsi_value, signalLength)

riskAmount = (initialCapital * riskPercent) / close

if (tsi_value > tsi_signal and tsi_value[1] <= tsi_signal[1])
    strategy.entry("Long", strategy.long)

if (tsi_value < tsi_signal and tsi_value[1] >= tsi_signal[1])
    strategy.close("Long")

plot(tsi_value, title="True Strength Index", color=#2962FF)
plot(tsi_signal, title="Signal", color=#E91E63)
hline(0, title="Zero", color=#787B86)

Mehr