MACD Dual Moving Average-Verfolgungsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-12-18 12:25:13
Tags:

img

Übersicht

Diese Strategie heißtMACD Dual Moving Average-VerfolgungsstrategieEs verwendet das goldene Kreuz des MACD-Indikators und das Todeskreuz der doppelten gleitenden Durchschnitte als Handelssignale, kombiniert mit dem niedrigsten Preis des vorherigen Tages als Stop-Loss-Punkt, um die kurzfristige Kursbewegung zu verfolgen.

Strategie Logik

  1. Berechnung der schnellen EMA ((nahe 5), der langsamen EMA ((nahe 8) und des Signals SMA ((MACD,3)
  2. Definition eines langen Signals: wenn der schnelle MA über den langsamen MA überschreitet
  3. Definieren Sie ein Kurzsignal: wenn ein schneller MA unter einen langsamen MA fällt oder der Schlusskurs unter dem niedrigsten Preis des vorherigen Tages liegt
  4. Positionsgröße ist das Anfangskapital 2000 USD geteilt durch den Schlusskurs
  5. Verwenden Sie das Kurzsignal zum Schließen einer Long-Position als Stop-Loss

Analyse der Vorteile

  1. Verwendung des MACD-Indikators zur Bestimmung von Überkauf- und Überverkaufszonen, wobei zwei MAs Handelssignale bilden, um einen falschen Ausbruch zu vermeiden
  2. Kurzfristige Trends verfolgen, rechtzeitige Stop-Loss
  3. Dynamische Anpassung der Positionsgröße vermeidet zu hohe Einzelverluste

Risikoanalyse

  1. Der MACD-Indikator wirkt nachlässig und kann kurzfristige Chancen verpassen
  2. Bei Handelssignalen mit doppelter MA können falsche Signale auftreten
  3. Stopp-Loss-Punkt ist zu aggressiv, mit hoher Häufigkeit von ausgeschaltet werden

Optimierungsrichtlinien

  1. Optimierung der Kombination der MACD-Parameter zur Verbesserung der Indikatorempfindlichkeit
  2. Hinzufügen von Trendbeurteilungen, um falsche Signale aus der Marktkonsolidierung zu vermeiden
  3. Kombination mit dem Volatilitätsindex zur Bewertung der Marktvolatilität, Anpassung des Stop-Loss-Punkts

Zusammenfassung

Diese Strategie verwendet den klassischen MACD-Dual Moving Average-Kombinationsindikator, um Überkauf- und Überverkaufszonen zu bestimmen, Handelssignale zu generieren und gleichzeitig eine dynamische Positionsgröße und den niedrigsten Preis des vorherigen Tages als Stop-Loss-Punkt-Design einzuführen, um kurzfristige Kursschwankungen zu erfassen.


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

Mehr