La stratégie MACD pour la répartition de l'élan

Auteur:ChaoZhang est là., Date: 2023-10-20 17:12:31 Je suis désolé
Les étiquettes:

img

Résumé

La stratégie MACD de la ventilation du momentum utilise principalement la combinaison de l'indicateur MACD et de l'indicateur Momentum pour générer des signaux de trading, appartenant à une stratégie de suivi de tendance. Cette stratégie calcule d'abord l'EMA rapide et l'EMA lente, puis calcule la valeur MACD, et calcule ensuite la ligne de signal du MACD. En même temps, elle calcule la valeur du momentum du prix. Lorsque la valeur du momentum dépasse le niveau zéro avec la différence MACD, elle génère un signal d'achat. Lorsque la valeur du momentum dépasse le niveau zéro avec la différence MACD, elle génère un signal de vente. Cela appartient à un mécanisme de double confirmation pour produire des signaux de trading.

La logique de la stratégie

Cette stratégie repose principalement sur la combinaison des indicateurs MACD et Momentum.

L'indicateur MACD est un indicateur de tendance, composé de l'EMA rapide, de l'EMA lente et de l'histogramme MACD.

EMA rapide = EMA (prix de clôture, 12)

Lente EMA = EMA ((prix de clôture, 26)

Le taux d'intérêt de l'indice de volatilité est le taux de change de l'indice de volatilité.

Ligne de signal = EMA ((MACD, 9)

Lorsque l'EMA rapide traverse au-dessus de l'EMA lente, cela signifie que la tendance haussière à court terme est plus forte que la tendance à long terme, qui est un signal d'achat.

L'indicateur Momentum reflète la vitesse de mouvement des prix et sa formule de calcul est:

Momentum = cours de clôture d'aujourd'hui - prix de clôture il y a N jours

Lorsque le prix de clôture d'aujourd'hui dépasse celui d'aujourd'hui il y a N jours, la valeur de l'élan est positive, indiquant une tendance haussière. Lorsque le prix de clôture d'aujourd'hui tombe en dessous de celui d'aujourd'hui il y a N jours, la valeur de l'élan est négative, indiquant une tendance à la baisse.

Cette stratégie combine l'indicateur MACD avec l'indicateur Momentum. Les critères pour générer des signaux de trading sont: lorsque la différence entre la différence MACD et la différence de momentum dépasse le niveau zéro, elle génère un signal d'achat, formant un croisement au-dessus de zéro. Lorsque la différence dépasse le niveau zéro, elle génère un signal de vente, formant un croisement au-dessous de zéro. Cela appartient à un mécanisme de confirmation double pour produire des signaux de trading, qui peut filtrer certains faux signaux et atteindre un suivi de tendance.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. La combinaison des indicateurs MACD et Momentum permet de suivre la tendance et d'éviter des transactions inefficaces lorsque le prix de l'actif oscille sans direction claire.

  2. Basé sur le double mécanisme de confirmation, il peut filtrer un certain bruit et éviter les interférences de faux signaux.

  3. Les paramètres MACD sont réglables, ce qui peut être optimisé pour différents produits et cycles de négociation, ce qui le rend très adaptable.

  4. Il adopte à la fois des mécanismes de négociation d'achat et de vente pour capturer les tendances dans les deux sens.

  5. La stratégie est facile à comprendre avec moins de paramètres, adaptée à l'apprentissage des débutants.

Analyse des risques

Cette stratégie comporte également des risques:

  1. Le MACD et le Momentum appartiennent tous deux à des indicateurs de suivi des tendances. Ils peuvent générer des transactions plus inefficaces lorsque le marché observe de violentes fluctuations ou n'a pas de tendance claire.

  2. Bien que la combinaison de deux indicateurs puisse filtrer les faux signaux, elle peut également manquer certaines opportunités de négociation.

  3. Lorsque les principales tendances du cycle s'inversent, l'indicateur MACD peut être retardé, ce qui entraîne des pertes commerciales.

  4. La fréquence des transactions peut être élevée, ce qui nécessite une attention particulière à la gestion des capitaux et au contrôle des commissions.

  5. Des paramètres incorrects peuvent entraîner une sensibilité excessive ou un retard.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Optimiser les paramètres MACD pour trouver la meilleure combinaison de paramètres pour différents produits et cycles de négociation.

  2. Optimiser le paramètre de période de l'indicateur de momentum pour équilibrer la sensibilité et le filtrage du bruit.

  3. Ajouter des mécanismes de stop loss pour contrôler la perte maximale par transaction.

  4. Ajoutez des modules de gestion de position pour faire évoluer la taille des transactions selon la tendance.

  5. Ajoutez des filtres comme l'indicateur ATR pour éviter de faire de mauvaises transactions sur des marchés instables.

  6. Incorporer d'autres indicateurs tels que les bandes de Bollinger et le RSI pour former des signaux de négociation à confirmation multiple.

  7. Ajouter des boucles d'optimisation pour l'itération et l'optimisation de paramètres continus.

Résumé

La stratégie MACD implémente le trading suivant la tendance en utilisant les forces des indicateurs MACD et Momentum. Son mécanisme de confirmation double peut filtrer efficacement le bruit du marché et éviter le trading inefficace. Cette stratégie est relativement simple et facile à comprendre, particulièrement adaptée aux débutants.


/*backtest
start: 2022-10-13 00:00:00
end: 2023-10-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="MACD MOMENTUM TEST", shorttitle="MACD MOM TEST")

// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
len = input(title="Momentum", type=input.integer, defval=10)
src1 = input(title="Source MACD", type=input.source, defval=close)
src2 = input(title="Source MOMENTUM", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 14)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #0c8e61
col_grow_below = #ffcdd2
col_fall_above = #b2dfdb
col_fall_below = #d42f28
col_macd = #ffffff
col_signal = #d42f28
col_mom = #fbc02d

// Calculating
fast_ma = sma_source ? sma(src1, fast_length) : ema(src1, fast_length)
slow_ma = sma_source ? sma(src1, slow_length) : ema(src1, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
mom = src2 - src2[len]


ma(s,l) => ema(s,l)
sema = ma( src1, fast_length )
lema = ma( src1, slow_length )
i1 = sema + mom + ma( src1 - sema, fast_length )
i2 = lema + mom + ma( src1 - lema, slow_length )
macdl = i1 - i2
macd1 =sema - lema

delta = mom - macd1

// Strategy
    // Backtest
FromYear  = input(defval = 2001, title = "From Year", minval = 2009)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

    // Function exampel
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

if (crossover(delta, 0))
    strategy.entry("Buy", true, when=window(), comment="Buy")

if (crossunder(delta, 0))
    strategy.close_all(when=window())

// Plot
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)
plot(hist, title="Histogram", style=plot.style_histogram, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
plot(mom, color=col_mom, title="Mom")






Plus de