Momentum-Strategie


Erstellungsdatum: 2023-09-26 15:16:56 zuletzt geändert: 2023-09-26 15:16:56
Kopie: 1 Klicks: 777
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Eine Dynamikstrategie ist eine Strategie, bei der der Handel auf der Grundlage von Preisveränderungen erfolgt. Die Strategie erzeugt ein Handelssignal, indem sie die Preisveränderungen innerhalb eines bestimmten Zeitraums berechnet, die Preisbewegung bestimmt und dann ein Handelssignal erzeugt. Wenn der Preis eine steigende Tendenz aufweist, erzeugt sie ein Kaufsignal.

Strategieprinzip

Die Strategie beurteilt die Dynamik des Preises durch die Berechnung der Schließungspreisänderungen innerhalb eines bestimmten Zeitraums. Konkret ist die Berechnung der Schließungspreisänderungen gegenüber den Schließungspreisen vor N-Zyklen.

Zuerst berechnet man den ersten Momentum-Indikator MOM0 mit der Formel:

MOM0 = CLOSE - CLOSE[N]

In diesem Fall bedeutet CLOSE den aktuellen Zyklusabschlusspreis.[N] ist der Schlusskurs vor N-Zyklen. MOM0>0 ist der Anstieg des Schlusskurses vor N-Zyklen gegenüber der aktuellen Periode. MOM0 ist der Rückgang des Schlusskurses vor N-Zyklen gegenüber der aktuellen Periode.

Dann berechnet man den zweiten Momentum-Indikator MOM1 mit der Formel:

MOM1 = MOM0 - MOM0[1]

MOM1>0 bedeutet, dass MOM0 gestiegen ist, MOM1 bedeutet, dass MOM0 gesunken ist.

Gleichzeitig wird der dritte Momentum-Indikator MOM2 berechnet mit der Formel:

MOM2 = CLOSE - CLOSE[1]

Das bedeutet, dass der Abschlusskurs der aktuellen Periode abzüglich des Abschlusskurses der vorherigen Periode berechnet wird. MOM2>0 bedeutet, dass der Abschlusskurs gestiegen ist, MOM2 bedeutet, dass der Abschlusskurs gefallen ist.

Wenn MOM0>0 und MOM1>0 ist, bedeutet dies, dass die Dynamik steigt und ein Kaufsignal erzeugt. Wenn MOM0 und MOM2 ist, bedeutet dies, dass die Dynamik weiter sinkt und ein Verkaufssignal erzeugt.

Der Code enthält auch die Zeitbedingung time_cond, die nur innerhalb der festgelegten Rücklaufzeit ein Handelssignal erzeugt. Außerdem wird vor der Aufstellung überprüft, ob die Bedingung noch gilt, um zu vermeiden, dass nach dem Verschwinden des Signals noch bestellt wird.

Analyse der Stärken

  • Die Dynamikstrategie erfasst die Trendentwicklung der Preise und ist nicht von den Preisen selbst beeinflusst, wodurch die Gefahr vermieden wird, die Höhen und Tiefen zu verfolgen.
  • Mit doppelten Massenanzeigen gekreuzt, filtert falsche Durchbrüche und vermeidet Fehlsignale
  • Erhöhung der Zeit und der Bedingungen für die Überprüfung, um ungültige Transaktionen zu verringern
  • Einfach zu verstehen und umzusetzen
  • Flexibel anpassbare Parameter für unterschiedliche Marktumgebungen

Risikoanalyse

  • Die Dynamometer sind nachlässig und könnten den Wendepunkt verpassen.
  • Die doppelte Kennzahl erhöht die Filterwirkung, kann aber auch einige Chancen verpassen.
  • Es ist unmöglich zu beurteilen, wie stark und schnell die Preise steigen oder fallen.
  • Vorsicht bei der Auswahl der Parameter, zu hoch empfindliche Parameter können die Häufigkeit der Transaktionen und die Kosten für den Slippage erhöhen.
  • Effekte sind abhängig von Parameteroptimierungen, die in verschiedenen Perioden angepasst werden müssen

Risiken können durch die Verkürzung der Dynamik-Zyklen, die Einführung von Trend-Urteil, oder die Konfiguration von Stop-Loss zu reduzieren. Es kann auch in Betracht gezogen werden, die Aufnahme von Handelsvolumen-Indikatoren für die Filterung.

Optimierungsrichtung

  • Versuchen Sie mit verschiedenen Dynamikberechnungen, wie ROC, RSI, etc.
  • Trendschätzung ist wichtig, um eine Umkehrung zu vermeiden.
  • Konfigurieren Sie eine Stop-Loss-Strategie, um einzelne Verluste zu kontrollieren
  • In Kombination mit den Volumenindikatoren, um sicherzustellen, dass der Volumenunterstützung
  • Mit Hilfe eines maschinellen Lernens optimiert man die Parameter dynamisch.
  • Mehrzeitstrategie, Unterscheidung zwischen kurz- und langfristigen Trends
  • Betrachten Sie Cross-Market-Arbitrage und nutzen Sie unterschiedliche Marktpreisbeziehungen

Zusammenfassen

Die Dynamik-Strategie kann durch die Verfolgung der Preisentwicklung Trends anstelle der Preise selbst, effektiv zu beurteilen, die Richtung der Markt-Hotspots zu ergreifen, die Preise zu steigen und zu fallen. Aber die Dynamik hat Lagerung, Parameter-Auswahl und Kombination Optimierung ist von entscheidender Bedeutung für die Strategie-Effekt.

Strategiequellcode
/*backtest
start: 2022-09-25 00:00:00
end: 2023-02-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Momentum Strategy", overlay = false, precision = 2, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash, commission_type = strategy.commission.percent, commission_value = 0, calc_on_every_tick = true)

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-02T00:00:00"), title = "Start Date", type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), title = "End Date",type = input.time)
 
time_cond  = true

i_len           =       input(defval = 12,      title = "Length",       minval = 1)
i_src           =       input(defval = close,   title = "Source")
i_percent       =       input(defval = true,    title = "Percent?")
i_mom           =       input(defval = "MOM2",  title = "MOM Choice",   options = ["MOM1", "MOM2"])

momentum(seria, length, percent) =>
	_mom        =       percent ? ( (seria / seria[length]) - 1) * 100 : seria - seria[length]
	_mom

mom0        =       momentum(i_src, i_len, i_percent)
mom1        =       momentum(mom0, 1, i_percent)
mom2        =       momentum(i_src, 1, i_percent)

momX        =       mom1

if i_mom == "MOM2"
    momX    :=     mom2

if (mom0 > 0 and momX > 0 and time_cond)
    strategy.entry("MomLE", strategy.long, stop = high + syminfo.mintick, comment = "MomLE")
else
	strategy.cancel("MomLE")
if (mom0 < 0 and momX < 0 and time_cond)
	strategy.entry("MomSE", strategy.short, stop = low - syminfo.mintick, comment = "MomSE")
else
	strategy.cancel("MomSE")

plot(mom0, color = #00bcd4, title = "MOM")
plot(mom1, color = #00FF00, title = "MOM1", display = display.none)
plot(mom2, color = #00FF00, title = "MOM2")