Stratégie d'inversion de l'élan

Auteur:ChaoZhang est là., Date: 2023-12-12 17:25:08 Je vous en prie.
Les étiquettes:

img

Résumé

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 logique de la stratégie

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.

Les avantages

  1. Capturez les points d'inversion des prix et entrez sur le marché à temps
  2. Petites baisses, éviter de courir après les hauts et de vendre les bas
  3. Mettre en œuvre un stop loss automatique pour réduire les risques

Les risques

  1. Des positions peuvent être ouvertes et fermées fréquemment lorsque les prix fluctuent
  2. Incapacité de déterminer avec précision les points d'inversion des prix si les paramètres sont définis de manière incorrecte
  3. Les événements du marché peuvent provoquer des signaux incorrects

Principales méthodes d'atténuation des risques:

  1. Optimiser les paramètres pour améliorer la précision du jugement
  2. Combiner avec d'autres indicateurs pour filtrer les signaux
  3. Intervention manuelle pour éviter les pertes causées par des marchés anormaux

Directions d'optimisation

  1. Optimiser les paramètres de l'indicateur de momentum pour mieux saisir le moment des renversements
  2. Ajouter des indicateurs comme le volume pour filtrer les signaux incorrects
  3. Ajouter des stratégies de stop loss pour réduire les pertes uniques

Résumé

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")

Plus de