Stratégie de trading du robot MACD

Auteur:ChaoZhang est là., Date: 2023-12-18 17h30 et 15h
Les étiquettes:

img

Résumé

Cette stratégie s'appelle la stratégie de trading du robot MACD. Elle détermine le moment de l'achat et de la vente sur le marché en calculant la relation entre la ligne rapide et la ligne lente de l'indicateur MACD, et adopte un stop loss pour contrôler les risques.

Principe de stratégie

Cette stratégie est principalement développée sur la base de l'indicateur MACD. L'indicateur MACD se compose d'une ligne rapide et d'une ligne lente. La ligne rapide est une moyenne mobile à court terme et la ligne lente est une moyenne mobile à long terme.

Dans cette stratégie, la ligne rapide et la ligne lente sont calculées respectivement à l'aide de l'algorithme EMA, et les périodes peuvent être personnalisées.

Lors de la détermination du moment de l'achat, vérifiez non seulement la croix d'or des lignes rapides et lentes, mais aussi si la valeur absolue du MACD est supérieure à la ligne d'achat personnalisée.

Lors de la détermination du moment de la vente, il est nécessaire de respecter simultanément la limite entre les lignes rapides et les lignes lentes et la ligne de signal étant positive, puis un signal de vente est émis pour fermer la position.

Analyse des avantages

La stratégie présente les avantages suivants:

  1. Utilisation de l'indicateur MACD pour déterminer les signaux de négociation avec une fiabilité élevée
  2. L'augmentation de la ligne de signal améliore la qualité du signal
  3. Le contrôle des risques par un arrêt-perte de suivi
  4. Ligne d' achat personnalisable qui ajuste la sensibilité de la stratégie
  5. Toutes les conditions sont basées sur le calcul des indicateurs et ne sont pas affectées par des facteurs externes

Analyse des risques

La stratégie comporte également certains risques:

  1. L'indicateur MACD est à la traîne, peut manquer des opportunités de négociation à court terme
  2. Un réglage incorrect du point stop-loss peut entraîner des pertes inutiles.
  3. Le réglage des paramètres nécessite beaucoup de temps pour les tests et les ajustements
  4. Impact des coûts de transaction et des glissements

Ces risques peuvent être réduits en ajustant les paramètres de manière appropriée, en combinant d'autres indicateurs, etc.

Directions d'optimisation

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

  1. Combiner avec d'autres indicateurs pour filtrer les signaux, tels que KDJ, RSI, etc.
  2. Ajouter des algorithmes d'apprentissage automatique pour déterminer les points d'entrée et de sortie
  3. Utiliser un stop loss dynamique au lieu d'un stop loss statique
  4. Tester et optimiser les paramètres MACD et la ligne d'achat
  5. Considérer l'impact des coûts de transaction pour ajuster la stratégie

Conclusion

Dans l'ensemble, il s'agit d'une stratégie de suivi de tendance avec une grande fiabilité. En jugeant la tendance à travers l'indicateur MACD et en contrôlant les risques avec un stop loss, des rendements d'investissement stables peuvent être obtenus.


/*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)

Plus de