Tendance suivant une stratégie basée sur la moyenne mobile et le MACD

Auteur:ChaoZhang est là., Date: 2023-11-15 à 15h58
Les étiquettes:

img

Résumé

Cette stratégie combine les moyennes mobiles et l'indicateur MACD pour déterminer les tendances et générer des signaux de trading. Elle appartient à une stratégie typique de suivi des tendances. Elle utilise deux moyennes mobiles ZLSMA de différentes périodes pour déterminer la direction de la tendance et un croisement MACD pour générer des signaux d'achat et de vente spécifiques. Cela lui permet de capturer efficacement les tendances à moyen et long terme tout en évitant d'être induit en erreur par le bruit du marché à court terme.

La logique de la stratégie

La stratégie est composée des principales composantes suivantes:

  1. Rapide ZLSMA et lent ZLSMA: la comparaison des moyennes mobiles ZLSMA de différentes périodes détermine la direction générale de la tendance. La ligne rapide se compose de ZLSMA de 32 périodes et la ligne lente se compose de ZLSMA de 400 périodes. Lorsque la ligne rapide traverse au-dessus de la ligne lente, c'est un signal haussier, et vice versa.

  2. L'indicateur MACD est calculé en soustrayant la ligne lente (26-période EMA) de la ligne rapide (12-période EMA).

  3. Les signaux de trading: Les signaux d'achat et de vente ne sont générés que lorsque la direction de la tendance ZLSMA s'aligne avec les signaux de croisement du MACD.

  4. Stop loss et take profit: la stratégie n'inclut actuellement pas la logique stop loss et take profit, qui doit être optimisée davantage.

La combinaison de l'utilisation de moyennes mobiles pour déterminer la tendance majeure et du MACD pour chronométrer l'entrée peut filtrer efficacement les fausses ruptures et éviter d'être induit en erreur par le bruit de marché à court terme.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. Capture des tendances: l'utilisation de moyennes mobiles de différentes périodes pour déterminer la direction de la tendance permet de négocier avec la tendance et de capturer efficacement les tendances à moyen et long terme.

  2. Filtrage du bruit: l'application de l'indicateur MACD permet de filtrer le bruit du marché à court terme et d'éviter d'être induit en erreur par des marchés à faible fourchette.

  3. Paramètres personnalisables: les périodes moyennes mobiles et les paramètres MACD sont personnalisables et peuvent être optimisés pour différents marchés.

  4. Facile à mettre en œuvre: tous les indicateurs utilisés sont des indicateurs techniques communs.

  5. Risque contrôlable: avec un stop loss et un profit net, le risque et la rentabilité de chaque transaction peuvent être contrôlés.

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  1. Détermination erronée de la tendance: si la tendance principale est déterminée incorrectement, toutes les transactions peuvent entraîner des pertes.

  2. Optimisation incorrecte des paramètres: la moyenne mobile et les paramètres MACD doivent être soigneusement testés et optimisés, sinon les résultats peuvent être insatisfaisants.

  3. L'absence de stop loss: actuellement, aucun stop loss n'est en place, ce qui pose le risque de pertes de taille excessive.

  4. Potentiel de profit limité: En tant que stratégie de tendance, le potentiel de profit de chaque transaction est limité, ce qui nécessite un volume élevé pour augmenter la rentabilité.

  5. Fréquence de négociation élevée: un ajustement inapproprié des paramètres peut entraîner une fréquence de négociation excessive, une augmentation des coûts de transaction et un glissement.

Directions d'optimisation

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

  1. Ajouter un mécanisme de stop loss: définir des points de stop loss appropriés pour contrôler strictement la perte maximale par transaction.

  2. Optimiser les paramètres: faire un backtest et optimiser pour trouver la combinaison optimale de moyenne mobile et de paramètres MACD.

  3. Réduction de la fréquence de négociation: ajuster les paramètres pour que les signaux de négociation ne soient générés que lorsque la tendance est prononcée.

  4. Incorporer d'autres facteurs: des facteurs tels que les variations de volume peuvent être ajoutés pour confirmer la tendance et les signaux.

  5. Améliorer le calendrier d'entrée: améliorer encore l'utilisation du MACD pour augmenter la précision de l'entrée.

  6. Rendre universellement applicable: Optimiser les paramètres pour rendre la stratégie largement applicable à différents produits, élargissant ainsi l'applicabilité.

Conclusion

En conclusion, cette stratégie capte efficacement les tendances à moyen et long terme grâce à une combinaison simple mais efficace de moyennes mobiles et de MACD, ce qui en fait une base solide de stratégie de trading quantitative.


/*backtest
start: 2023-11-07 00:00:00
end: 2023-11-10 05:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © veryfid

//@version=5
strategy("Stratégie ZLSMA Bruno", shorttitle="Stratégie ZLSMA Bruno", overlay=false)

source = close
useCurrentRes = input(true, title="Use Current Chart Resolution?")
smd = input(true, title="Show MacD & Signal Line? Also Turn Off Dots Below")
sd = input(true, title="Show Dots When MacD Crosses Signal Line?")
sh = input(true, title="Show Histogram?")
macd_colorChange = input(true,title="Change MacD Line Color-Signal Line Cross?")
hist_colorChange = input(true,title="MacD Histogram 4 Colors?")

//res = useCurrentRes ? period : resCustom

fastLength = input(12), 
slowLength=input(26)
signalLength=input(9)

fastMA = ta.ema(source, fastLength)
slowMA = ta.ema(source, slowLength)

macd = fastMA - slowMA
signal = ta.sma(macd, signalLength)
hist = macd - signal

outMacD =  macd
outSignal = signal
outHist =  hist

histA_IsUp = outHist > outHist[1] and outHist > 0
histA_IsDown = outHist < outHist[1] and outHist > 0
histB_IsDown = outHist < outHist[1] and outHist <= 0
histB_IsUp = outHist > outHist[1] and outHist <= 0

//MacD Color Definitions
macd_IsAbove = outMacD >= outSignal
macd_IsBelow = outMacD < outSignal

//plot_color = hist_colorChange ? histA_IsUp ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? color.lime : color.red : color.red
//signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime

circleYPosition = outSignal
 
//plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=4)
//plot(smd and outSignal ? outSignal : na, title="Signal Line", color=signal_color, style=line ,linewidth=2)
//plot(sh and outHist ? outHist : na, title="Histogram", color=plot_color, style=histogram, linewidth=4)
plot(sd and ta.cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=plot.style_circles, linewidth=4, color=macd_color)
hline(0, '0 Line', linestyle=hline.style_solid, linewidth=2, color=color.white)

// Paramètres de la ZLSMA
length = input(32, title="Longueur")
offset = input(0, title="Décalage")
src = input(close, title="Source")
lsma = ta.linreg(src, length, offset)
lsma2 = ta.linreg(lsma, length, offset)
eq = lsma - lsma2
zlsma = lsma + eq

length_slow = input(400, title="Longueur")
offset_slow = input(0, title="Décalage")
lsma_slow = ta.linreg(src, length_slow, offset_slow)
lsma2_slow = ta.linreg(lsma_slow, length_slow, offset_slow)
eq_slow = lsma_slow - lsma2_slow
zlsma_slow = lsma_slow + eq_slow

// Paramètres de la sensibilité
sensitivity = input(0.5, title="Sensibilité")

// Règles de trading
longCondition = zlsma < zlsma_slow and  zlsma_slow < zlsma_slow[1] and zlsma > zlsma[1] and ta.cross(outMacD, outSignal) and  macd_color == color.lime//ta.crossover(zlsma, close) and ta.crossover(zlsma, zlsma[1]) // Croisement vers le haut
shortCondition = zlsma > zlsma_slow and  zlsma_slow > zlsma_slow[1] and zlsma < zlsma[1] and ta.cross(outMacD, outSignal) and  macd_color == color.lime   //ta.crossunder(zlsma, close) and ta.crossunder(zlsma, zlsma[1]) // Croisement vers le bas

// Entrée en position
strategy.entry("Achat", strategy.long, when=longCondition)
strategy.entry("Vente", strategy.short, when=shortCondition)
botifySignalZLSMA = longCondition ? 1 : shortCondition ? -1 : 0
plot(botifySignalZLSMA, title='Botify_signal', display=display.none)
// Sortie de position
strategy.close("Achat", when=ta.crossunder(zlsma, close)) // Close the "Achat" position
strategy.close("Vente", when=ta.crossover(zlsma, close)) // Close the "Vente" position


// Tracé de la courbe ZLSMA
plot(zlsma, color=color.yellow, linewidth=3)
plot(zlsma_slow, color=color.red, linewidth=3)



Plus de