Stratégie de suivi des moyennes mobiles doubles du MACD

Auteur:ChaoZhang est là., Date: 2023-12-18 à 12h25
Les étiquettes:

img

Résumé

Cette stratégie s'appelleStratégie de suivi des moyennes mobiles doubles du MACDIl utilise l'indicateur MACD de croix d'or et de croix de la mort des moyennes mobiles doubles comme signaux de négociation, combiné avec le prix le plus bas de la journée précédente comme point stop-loss pour suivre le mouvement des prix à court terme.

La logique de la stratégie

  1. Calculer l'EMA rapide (près de 5), l'EMA lente (près de 8) et le signal SMA (MACD, 3)
  2. Définition du signal long: lorsque le MA rapide dépasse le MA lent
  3. Définition du signal court: lorsque la MA rapide dépasse la MA lente ou que le prix de clôture est inférieur au prix le plus bas de la journée précédente
  4. La taille de la position est le capital initial de 2000 USD divisé par le prix de clôture
  5. Utiliser le signal court pour fermer la position longue comme stop loss

Analyse des avantages

  1. Utiliser l'indicateur MACD pour déterminer les zones de surachat et de survente, avec des MAs doubles pour former des signaux de négociation, évitant de fausses ruptures
  2. Suivre les tendances à court terme, arrêter les pertes rapidement
  3. L'ajustement dynamique de la taille de la position évite une perte unique excessivement importante

Analyse des risques

  1. L'indicateur MACD a un effet de retard, peut manquer des opportunités à court terme
  2. Les signaux de négociation à double MA peuvent produire de faux signaux
  3. Le point stop-loss est trop agressif, avec une fréquence élevée d'arrêt

Directions d'optimisation

  1. Optimiser la combinaison des paramètres MACD pour améliorer la sensibilité de l'indicateur
  2. Ajouter un jugement de tendance pour éviter de faux signaux de consolidation du marché
  3. Combiner avec l'indice de volatilité pour évaluer la volatilité du marché, ajuster le point de stop loss

Résumé

Cette stratégie utilise l'indicateur de combinaison de moyenne mobile MACD classique pour déterminer les zones de surachat et de survente, générant des signaux de trading, tout en introduisant la dimensionnement dynamique des positions et le prix le plus bas de la journée précédente comme conception de point de stop-loss pour capturer les fluctuations de prix à court terme.


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

Plus de