Cette stratégie calcule l'indicateur de dynamique du prix pour déterminer si la tendance des prix s'est inversée, afin de saisir les opportunités d'inversion des prix. Lorsque la tendance haussière ou baissière du prix ralentit, elle indique que la dynamique des prix s'est inversée. À ce moment, la stratégie ouvrira des positions longues ou courtes.
La stratégie est principalement basée sur le calcul des indicateurs de dynamique. L'indicateur de dynamique reflète la vitesse et la force des variations de prix. Deux indicateurs de dynamique MOM et MOM1 sont calculés dans la stratégie.
Formule de calcul de la MOM:
Le prix de clôture est le prix de clôture de l'entreprise.
Formule de calcul de la MOM1:
Mère 1 = Mère aujourd'hui - Mère hier
Jugez si les prix se sont inversés selon les valeurs de MOM et MOM1. Si MOM > 0 et MOM1 < 0, cela signifie que la tendance haussière du prix a ralenti et qu'un signal d'inversion semble aller long. Si MOM < 0 et MOM1 > 0, cela signifie que la tendance à la baisse du prix a ralenti et qu'un signal d'inversion semble aller court.
Principales méthodes d'atténuation des risques:
Cette stratégie calcule l'indicateur de dynamique des prix pour déterminer si la tendance des prix s'est inversée, en allant automatiquement long ou court. Les tests en arrière-plan montrent que cette stratégie fonctionne globalement sans heurts et capte efficacement les points d'inversion des prix. En optimisant les paramètres, en ajoutant des filtres de signal, etc., la stabilité et la rentabilité de la stratégie peuvent être encore améliorées.
/*backtest start: 2023-11-11 00:00:00 end: 2023-12-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Momentum - Strategy", overlay = false, precision = 2, initial_capital = 10000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_type = strategy.commission.percent, commission_value = 0.2 ) 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) strategy.entry("MomLE", strategy.long, stop = high + syminfo.mintick, comment = "MomLE") else strategy.cancel("MomLE") if (mom0 < 0 and momX < 0) strategy.entry("MomSE", strategy.short, stop = low - syminfo.mintick, comment = "MomSE") else strategy.cancel("MomSE") plot(mom0, color = #0000FF, title = "MOM") plot(mom1, color = #00FF00, title = "MOM1", display = display.none) plot(mom2, color = #00FF00, title = "MOM2")