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.
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.
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.
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.
/*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")