Stratégie de suivi de tendance basée sur l'indicateur MACD


Date de création: 2023-11-16 17:42:09 Dernière modification: 2023-11-16 17:42:09
Copier: 6 Nombre de clics: 677
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance basée sur l’indicateur MACD

Aperçu

La stratégie utilise l’indicateur MACD pour identifier la direction de la tendance et le blocage des gains avec des arrêts dynamiques.

Principe de stratégie

  1. Calculer la ligne rapide, la ligne lente et l’indicateur MACD. La ligne rapide utilise une moyenne mobile à 12 périodes et la ligne lente utilise une moyenne mobile à 26 périodes. La MACD est la différence entre la ligne rapide et la ligne lente.

  2. Configurer des lignes d’achat et de vente. Générer un signal d’achat lorsque vous traversez une ligne d’achat sur le MACD; générer un signal de vente lorsque vous traversez une ligne de vente sous le MACD.

  3. Après l’ouverture de la position, définissez un stop-loss dynamique, suivez la ligne de stop-loss. La valeur initiale de la ligne de stop-loss est de 95% du prix d’ouverture de la position, afin de verrouiller les bénéfices avec le déplacement du prix sur la ligne de stop-loss.

  4. Lorsque le signal d’arrêt ou de renversement est déclenché, la position est levée.

Analyse des avantages

  1. L’utilisation de l’indicateur MACD pour identifier la direction de la tendance permet de suivre efficacement les tendances.

  2. Les mécanismes de stop-loss dynamiques permettent de bloquer les bénéfices en permanence et d’éviter l’expansion des pertes.

  3. La logique de la stratégie est simple et claire, facile à comprendre, adaptée à l’exécution automatique de transactions quantifiées.

Analyse des risques

  1. L’indicateur MACD est en retard et risque de manquer la reprise de la tendance à court terme.

  2. Si vous arrêtez trop facilement, vous risquez de manquer une partie de vos bénéfices, et si vous êtes trop strict, vous risquez de vous arrêter trop tôt.

  3. Les paramètres MACD et les lignes d’achat et de vente doivent être constamment testés et optimisés.

  4. Le risque de pertes est plus élevé en période de tendance que dans le cas d’une période de choc.

Direction d’optimisation

  1. Optimiser les paramètres MACD pour trouver la meilleure combinaison de paramètres

  2. Tester différentes méthodes de stop, comme le stop de score, le stop d’ATR, etc.

  3. Ajout de conditions de filtrage pour éviter les erreurs de trading avec d’autres indicateurs, tels que les bandes de Brin, le RSI, etc.

  4. Les paramètres de la stratégie d’ajustement dynamique, combinés à des indicateurs de jugement de tendance, permettent d’identifier les tendances et les chocs.

Résumer

La stratégie est clairement conçue, utilise les indicateurs MACD pour suivre la tendance et utilise les arrêts dynamiques pour bloquer les bénéfices, ce qui permet de suivre efficacement les tendances. Cependant, les indicateurs MACD sont en retard et les paramètres de points d’arrêt doivent également être optimisés.

Code source de la stratégie
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(shorttitle = "EURUSD MACD", title = "EURUSD MACD")
fastMA = input(title="Fast moving average",  defval = 12, minval = 7)
slowMA = input(title="Slow moving average",  defval = 26, minval = 7)
lastColor = yellow
[currMacd,_,_] = macd(close[0], fastMA, slowMA, 9)
[prevMacd,_,_] = macd(close[1], fastMA, slowMA, 9)
plotColor = currMacd > 0 ? currMacd > prevMacd ? lime : green : currMacd < prevMacd ? maroon : red
plot(currMacd, style = histogram, color = plotColor, linewidth = 3)
plot(0, title = "Zero line", linewidth = 1, color = gray)

//MACD
// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source",  defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

//plot(hist, title="Histogram", style=columns, 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)
///END OF MACD

//Long and Close Long Lines
linebuy = input(title="Enter Long", type=float, defval=-0.0002)
linesell = input(title="Close Long", type=float, defval=0.0001)

//Plot Long and Close Long Lines
plot(linebuy,color=green),plot(linesell,color=red)


//Stop Loss Input
sl_inp = input(0.05, title='Stop Loss %', type=float)/100


//Order Conditions
longCond = crossover(currMacd, linebuy)
exitLong = crossover(currMacd, linesell)
stop_level = strategy.position_avg_price * (1 - sl_inp)


//Order Entries
strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)
strategy.exit("Stop Loss", stop=stop_level)