Strategi dagangan purata bergerak berganda berdasarkan penunjuk MACD


Tarikh penciptaan: 2023-12-18 12:25:13 Akhirnya diubah suai: 2023-12-18 12:25:13
Salin: 1 Bilangan klik: 806
1
fokus pada
1621
Pengikut

Strategi dagangan purata bergerak berganda berdasarkan penunjuk MACD

Gambaran keseluruhan

Strategi ini dipanggilStrategi Mengikuti Garis Berganda MACDIa menggunakan indikator MACD untuk memberi isyarat perdagangan, digabungkan dengan harga terendah semalam sebagai titik hentian, untuk mengesan pergerakan garis pendek harga saham.

Prinsip Strategi

  1. Hitung garis laju EMA ((close, 5), garis perlahan EMA ((close, 8) dan garis isyarat SMA ((MACD, 3)
  2. Mendefinisikan isyarat berbilang kepala: lebih banyak semasa melalui talian perlahan pada talian cepat
  3. Tentukan isyarat kosong: cepat di bawah garis melintasi garis perlahan atau kosong apabila harga penutupan hari berada di bawah harga terendah semalam
  4. Jumlah pegangan adalah modal awal $ 2000 dibahagikan dengan harga penutupan
  5. Hentikan Kerosakan Multi-Head dengan menggunakan isyarat kosong

Analisis kelebihan

  1. Menggunakan indikator MACD untuk menentukan kawasan pasaran yang terlalu banyak dibeli dan dijual, bekerjasama dengan tanda perdagangan yang membentuk garis rata ganda, untuk mengelakkan pecah palsu
  2. Menjejaki trend jangka pendek, menghentikan kerugian tepat pada masanya
  3. Perubahan dinamik dalam jumlah pegangan untuk mengelakkan kerugian tunggal yang terlalu besar

Analisis risiko

  1. MACD Indicator terlewat, mungkin terlepas peluang untuk shortline
  2. Isyarat dagangan dua hala mungkin menghasilkan isyarat palsu
  3. Titik henti terlalu radikal, kemungkinan terlalu kerap berhenti

Arah pengoptimuman

  1. Mengoptimumkan kombinasi parameter MACD untuk meningkatkan kepekaan penunjuk
  2. Meningkatkan penilaian trend dan mengelakkan isyarat palsu yang dihasilkan oleh pasaran yang bergolak
  3. Kajian volatiliti pasaran dengan Indeks Volatiliti dan penyesuaian titik henti

ringkaskan

Strategi ini menggunakan indikator gabungan MACD klasik untuk menilai ruang overbought dan oversold, menghasilkan isyarat perdagangan, dan memperkenalkan jumlah pegangan dinamik dan reka bentuk titik hentian harga terendah hari sebelumnya, untuk menangkap ciri-ciri pergerakan garis pendek harga saham, strategi keseluruhan jelas dan mudah difahami, layak untuk diuji dan dioptimumkan lebih lanjut.

Kod sumber strategi
/*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)