Stratégie de négociation quantitative MACD

Auteur:ChaoZhang est là., Date: le 19 décembre 2023 15:11:57
Les étiquettes:

img

Résumé

Cette stratégie utilise l'indicateur MACD pour créer des signaux de trading de position longue lorsque le MACD est inférieur à un certain niveau afin de profiter des opportunités de réversion moyenne.

La logique de la stratégie

Un signal long est généré lorsque la ligne MACD est inférieure à la ligne SIGNAL et que la valeur absolue de MACD est inférieure à -0.00025. Après avoir pris une position longue, si la ligne MACD traverse à nouveau la ligne SIGNAL, la position sera fermée.

Cette stratégie utilise l'indicateur MACD pour détecter les zones de survente. Selon la théorie des moyennes mobiles, il existe une probabilité d'inversion moyenne à court terme, et un signal long est établi en fonction de cette probabilité.

Les avantages

  1. Utilise l'indicateur MACD pour juger des niveaux de survente, qui a une certaine fiabilité.
  2. Des signaux de trading simples et des règles faciles à mettre en œuvre.
  3. Des périodes de détention plus longues entraînent une moins grande fréquence de négociation, ce qui réduit les coûts de transaction et les dérapages.

Les risques

  1. Le risque d'échec de la réversion signifie des pertes si aucune réversion ne se produit.
  2. Les signaux invalides sont dus à une mauvaise sélection des paramètres MACD.

Ce risque peut être réduit par l'optimisation des paramètres.

Améliorations

  1. Optimiser les paramètres MACD pour trouver les meilleures combinaisons.
  2. Testez différentes périodes de rétention pour trouver la durée optimale.
  3. Ajouter des mécanismes de stop loss.

Résumé

Cette stratégie utilise la probabilité d'inversions moyennes des niveaux de survente identifiés par l'indicateur MACD pour générer des signaux longs et des bénéfices au cours de longues périodes de détention.


//@version=3
strategy(title="MACD - EURUSD", shorttitle="MACD EURUSD")

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

longCond = crossover(macd, signal) and macd < -0.00025
exitLong = crossover(macd, hist)


strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)

Plus de