Die Momentum-Strategie ist eine Handelsstrategie, die dem Preistrend basierend auf der Preisbewegung folgt. Sie erzeugt Handelssignale, indem sie die Preisänderungen über einen bestimmten Zeitraum berechnet. Wenn der Kursanstieg identifiziert wird, löst sie ein Kaufsignal aus. Wenn der Preisabwärtstrend identifiziert wird, löst sie ein Verkaufssignal aus. Diese Strategie verwendet ein doppeltes Momentum-Indikator-Crossover, um Handelssignale zu erzeugen.
Diese Strategie berechnet die Kursdynamik, indem die Änderung des Schlusskurses im Vergleich zum Schlusskurs vor N Perioden gemessen wird.
Der erste Impulsindikator MOM0 wird wie folgt berechnet:
MOM0 = KLEIN - KLEIN[N]
wobei CLOSE der Schlusskurs des laufenden Zeitraums
Der zweite Impulsindikator MOM1 wird wie folgt berechnet:
MOM1 = MOM0 - MOM0 [1]
Es berechnet die Differenz zwischen dem aktuellen MOM0 und dem vorhergehenden Zeitraum
Der dritte Impulsindikator MOM2 wird wie folgt berechnet:
MOM2 = NAHE - NAHE [1]
Es berechnet die Differenz zwischen dem aktuellen Schlusskurs und dem Schlusskurs des vorangegangenen Zeitraums.
Wenn MOM0 > 0 und MOM1 > 0, zeigt es an, dass die Dynamik stetig steigt und löst ein Kaufsignal aus. Wenn MOM0 < 0 und MOM2 < 0, zeigt es an, dass die Dynamik stetig sinkt und löst ein Verkaufssignal aus.
Der Code enthält auch eine Zeitbedingung time_cond, um nur Signale während des angegebenen Backtesting-Zeitraums zu generieren.
Die Risiken können durch Verkürzung der Momentumperioden, Hinzufügung der Trendbestimmung oder Konfiguration von Stop Loss reduziert werden.
Die Momentum-Strategie folgt den Preisänderungstrends anstelle von Preisniveaus und identifiziert effektiv Marktmomentum-Richtungen, um Auf- und Abwärtspreisbewegungen zu erfassen. Momentum hat jedoch Verzögerungsmerkmale und Parameterwahl und Kombinationsoptimierung sind entscheidend für die Strategieleistung. Diese Strategie verwendet eine doppelte Momentum-Indikator-Kreuzung als Basis, die etwas Lärm filtert. Die Leistung kann durch kontinuierliche Optimierung von Parametern, die Integration neuer technischer Indikatoren und die Nutzung von Maschinellen Lerntechniken weiter verbessert und die Risiken kontrolliert werden.
/*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")