Stratégie de trading à double moyenne mobile basée sur l'indicateur MACD


Date de création: 2023-12-18 12:25:13 Dernière modification: 2023-12-18 12:25:13
Copier: 1 Nombre de clics: 804
1
Suivre
1621
Abonnés

Stratégie de trading à double moyenne mobile basée sur l’indicateur MACD

Aperçu

Cette stratégie s’appelleLa stratégie suivie par le MACD, qui utilise le MACD comme signal de négociation, combiné avec le prix le plus bas d’hier comme point de stop-loss, pour suivre le mouvement de la courte ligne du cours des actions.

Principe de stratégie

  1. Le calcul des lignes rapides EMA (close, 5), lentes EMA (close, 8) et des lignes de signaux SMA (MACD, 3)
  2. Définition du signal multiple: faire plus sur la ligne rapide en traversant la ligne lente
  3. Définition du signal de tête vide: une ligne courte traversant une ligne lente ou une ligne blanche lorsque le cours de clôture du jour est inférieur au cours le plus bas de la journée précédente
  4. Le montant de la position est le capital initial de 2000 $ divisé par le prix de clôture.
  5. Arrêt de plusieurs têtes avec le signal de tête vide

Analyse des avantages

  1. Utilisez l’indicateur MACD pour déterminer les zones de survente et de survente du marché, en conjonction avec la formation de signaux de transaction en ligne de parité, afin d’éviter les fausses ruptures
  2. Suivez les tendances à court terme et arrêtez les pertes en temps opportun
  3. Modification dynamique du portefeuille afin d’éviter des pertes individuelles excessives

Analyse des risques

  1. L’indicateur MACD est en retard et pourrait manquer une occasion de raccourcir la ligne
  2. Les signaux de transaction bi-ligneux peuvent générer de faux signaux
  3. Le point d’arrêt est trop radical, il peut y avoir un arrêt trop fréquent

Direction d’optimisation

  1. Optimiser la combinaison de paramètres MACD pour améliorer la sensibilité des indicateurs
  2. Pour éviter les faux signaux d’un marché en perpétuel mouvement, il est important de mieux connaître les tendances.
  3. Indicateur de volatilité combiné pour évaluer la volatilité du marché et ajuster les points de rupture

Résumer

Cette stratégie utilise les indices classiques de la combinaison de MACD à double ligne égale pour juger de la zone de survente et de survente, générer des signaux de négociation, et introduire une conception de point d’arrêt de la possession dynamique et du prix le plus bas de la veille. La stratégie globale est claire et facile à comprendre et mérite d’être testée et optimisée.

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

//@version=2
// macd/cam v1 strategizing Chris Moody Macd indicator https://www.tradingview.com/script/OQx7vju0-MacD-Custom-Indicator-Multiple-Time-Frame-All-Available-Options/
// macd/cam v2 changing to macd 5,8,3
// macd/cam v2.1 
//      Sell when lower than previous day low. 
//      Initial capital of $2k. Buy/sell quantity of initial capital / close price
//      Quitar short action
//      Note: custom 1-week resolution seems to put AMD at 80% profitable

strategy(title="MACD/CAM 2.1", shorttitle="MACD/CAM 2.1") //
source = close
//get inputs from options
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above", defval="60")
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?")
venderLowerPrev = input(true,title="Vender cuando closing price < previous day low?")

res = useCurrentRes ? timeframe.period : resCustom

fastLength = input(5, minval=1), slowLength=input(8,minval=1)
signalLength=input(3,minval=1)

// find exponential moving average of price as x and fastLength var as y
fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)

macd = fastMA - slowMA
// simple moving average
signal = sma(macd, signalLength)
hist = macd - signal

outMacD = request.security(syminfo.tickerid, res, macd)
outSignal = request.security(syminfo.tickerid, res, signal)
outHist = request.security(syminfo.tickerid, res, 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 ? lime : red : 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)

circleCondition = sd and cross(outMacD, outSignal)

// Determine long and short conditions
longCondition  = circleCondition and macd_color == lime

redCircle = circleCondition and macd_color == red
redCirclePrevLow = redCircle or low<low[1]
shortCondition = redCircle
if (venderLowerPrev)
    shortCondition = redCirclePrevLow

strategy.initial_capital = 20000
// Set quantity to initial capital / closing price
cantidad = strategy.initial_capital/close

// Submit orders
strategy.entry(id="long", long=true, qty=cantidad, when=longCondition)
strategy.close(id="long", when=shortCondition)
plot(circleCondition ? circleYPosition : na, title="Cross", style=cross, linewidth=10, color=macd_color)
// hline(0, '0 Line', linestyle=solid, linewidth=2, color=white)