Stratégie de trading robotisée MACD


Date de création: 2023-12-18 17:30:15 Dernière modification: 2023-12-18 17:30:15
Copier: 0 Nombre de clics: 723
1
Suivre
1621
Abonnés

Stratégie de trading robotisée MACD

Aperçu

Cette stratégie s’appelle la stratégie de trading robot MACD. Elle permet de déterminer le moment où le marché est en train d’être acheté ou vendu en calculant la relation entre la ligne rapide et la ligne lente de l’indicateur MACD, et de contrôler le risque en effectuant un suivi des arrêts.

Principe de stratégie

La stratégie est basée sur l’indicateur MACD. L’indicateur MACD est composé d’une ligne rapide et d’une ligne lente. La ligne rapide est la moyenne à court terme et la ligne lente est la moyenne à long terme. La relation entre les deux reflète l’état d’achat et de vente du marché.

Dans cette stratégie, les lignes rapides et les lignes lentes sont calculées en utilisant l’algorithme EMA, et la période peut être personnalisée. Pour améliorer la qualité du signal, des lignes de signal ont été ajoutées, utilisant l’algorithme EMA pour une nouvelle manipulation en douceur des valeurs MACD.

Pour déterminer le moment de l’achat, non seulement il faut regarder la fourchette rapide, mais aussi déterminer si la valeur absolue du MACD est supérieure à la ligne d’achat personnalisée. Si elle est satisfaite, un signal d’achat est émis et un arrêt de suivi des pertes est utilisé pour contrôler le risque.

Pour déterminer le moment de la vente, il est nécessaire de satisfaire à la fois à la condition que la ligne morte rapide et la ligne de signal soient positives, puis d’émettre un signal de vente et de niveler la position.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. L’indicateur MACD est plus fiable pour déterminer le moment d’acheter ou de vendre
  2. Augmentation de la qualité du signal
  3. Suivre les pertes et contrôler efficacement les risques
  4. La ligne d’entrée peut être personnalisée pour ajuster la sensibilité de la stratégie
  5. Les conditions sont toutes basées sur des indicateurs et ne sont pas influencées par des facteurs externes

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Le MACD est en retard et risque de manquer une occasion de courte ligne
  2. Une mauvaise configuration du point de rupture peut entraîner des pertes inutiles
  3. Parameter Tuning nécessite beaucoup de temps de test et d’ajustement
  4. Coût des transactions et effets des points de glissement

Ces risques peuvent être atténués par des ajustements appropriés des paramètres et des combinaisons d’autres indicateurs.

Direction d’optimisation

Cette stratégie peut être optimisée dans les directions suivantes:

  1. En combinaison avec d’autres indicateurs de filtrage, tels que KDJ, RSI, etc.
  2. Ajout d’algorithmes d’apprentissage automatique pour déterminer les points de vente
  3. Le stop-loss dynamique est remplacé par le stop-loss statique.
  4. Optimisation des tests sur les paramètres MACD et les lignes d’entrée
  5. Stratégies d’ajustement tenant compte de l’impact sur les coûts des transactions

Résumer

Cette stratégie est une stratégie de suivi de tendance de haute fiabilité. En utilisant les indicateurs MACD pour juger de la tendance, en prenant le risque de contrôle de la perte de suivi, il est possible d’obtenir un retour sur investissement stable.

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

//@version=3
strategy(shorttitle = "GBPUSD MACD", title = "GBPUSD 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.00045)
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, signal) and signal > 0
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)