Stratégie Momentum


Date de création: 2023-09-26 15:16:56 Dernière modification: 2023-09-26 15:16:56
Copier: 1 Nombre de clics: 777
1
Suivre
1617
Abonnés

Aperçu

La stratégie de dynamique est une stratégie de négociation basée sur la tendance des variations de prix. Elle permet de déterminer la tendance du mouvement des prix en calculant les variations de prix au cours d’une période donnée, puis de générer un signal de négociation.

Principe de stratégie

La dynamique des prix est déterminée par le calcul de la variation des prix de clôture au cours d’un certain cycle. Plus précisément, il s’agit de calculer la variation des prix de clôture par rapport aux prix de clôture avant N cycles.

On calcule d’abord le premier indice de mouvement MOM0 avec la formule:

MOM0 = CLOSE - CLOSE[N]

Dans ce cas, CLOSE représente le prix de clôture du cycle actuel.[N] représente le prix de clôture avant N cycles. Ainsi, MOM0>0 représente une hausse du prix de clôture avant N cycles par rapport à la période actuelle, et MOM0 représente une baisse du prix de clôture avant N cycles par rapport à la période actuelle.

On calcule ensuite le deuxième indicateur de dynamique MOM1, avec la formule:

MOM1 = MOM0 - MOM0[1]

On calcule la valeur de MOM0 de la période actuelle en soustrayant la valeur de la période précédente. MOM1>0 signifie que MOM0 a augmenté, et MOM1 signifie que MOM0 a diminué.

On calcule en même temps le troisième indicateur de dynamique MOM2 avec la formule:

MOM2 = CLOSE - CLOSE[1]

On calcule le prix de clôture de la période actuelle en soustrayant le prix de clôture de la période précédente. MOM2>0 indique une hausse du prix de clôture, MOM2 indique une baisse du prix de clôture.

Lorsque MOM0>0 et MOM1>0, indique une augmentation continue de la dynamique, générant un signal d’achat; lorsque MOM0 et MOM2, indique une baisse continue de la dynamique, générant un signal de vente.

Le code a également ajouté la condition temporelle time_cond, qui ne génère des signaux de transaction que pendant la période de rétroaction définie. En outre, vérifiez si la condition est toujours en vigueur avant de placer une commande, afin d’éviter que la commande ne soit toujours passée après la disparition du signal.

Analyse des avantages

  • Les stratégies de dynamisme captent les tendances des changements de prix, sans être influencées par les prix eux-mêmes, évitant ainsi le risque de suivre les hauts et les bas.
  • Le double indicateur de masse est utilisé pour filtrer les fausses percées et éviter les signaux erronés
  • Augmentation du temps et des conditions de vérification pour réduire les transactions invalides
  • Une stratégie simple à comprendre et facile à mettre en œuvre
  • Paramètres flexibles et adaptés à différents environnements de marché

Analyse des risques

  • Les indicateurs de dynamique sont en retard et risquent de manquer le tournant
  • Le croisement des deux indices augmente le filtrage, mais peut aussi laisser passer des opportunités
  • La force et la vitesse de la hausse ou de la baisse des prix ne peuvent pas être déterminées.
  • Les paramètres doivent être choisis avec prudence, car une sensibilité excessive peut augmenter la fréquence des transactions et les coûts des points de glissement.
  • L’effet dépend de l’optimisation des paramètres, les paramètres doivent être ajustés à différentes périodes

Il est possible de réduire le risque en raccourcissant les cycles de volume, en introduisant des jugements de tendance ou en configurant des arrêts de perte. Il est également possible d’envisager d’ajouter un indicateur de volume de transaction pour le filtrage.

Direction d’optimisation

  • Essayez différentes méthodes de calcul de la dynamique, telles que le ROC, le RSI, etc.
  • Le gouvernement a décidé d’éliminer les effets négatifs de l’inflation.
  • Configurer une stratégie de stop-loss pour contrôler les pertes individuelles
  • Les indicateurs de volume des transactions sont combinés pour assurer le support des transactions.
  • Ajout d’algorithmes d’apprentissage automatique pour une optimisation dynamique des paramètres
  • Stratégies de cadres temporels multiples, différenciant les tendances à court et à long terme
  • Considérer l’arbitrage entre les marchés et tirer parti des différents rapports de prix

Résumer

Les stratégies de dynamique permettent de déterminer efficacement la direction des points chauds du marché en suivant la tendance des changements de prix plutôt que le prix lui-même et de saisir les opportunités de hausse et de baisse des prix. Cependant, la dynamique est laxiste. Le choix des paramètres et l’optimisation de la combinaison sont essentiels à l’efficacité de la stratégie.

Code source de la stratégie
/*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")