MACD Crossover dengan Strategi Isyarat

Penulis:ChaoZhang, Tarikh: 2023-12-13 16:58:15
Tag:

img

Ringkasan

Strategi MACD Crossover with Signal menghasilkan isyarat perdagangan apabila MACD melintasi di atas atau di bawah garis isyarat. Strategi ini menggabungkan idea purata bergerak berganda untuk menangkap titik perubahan trend jangka menengah dalam harga saham, yang tergolong dalam strategi stop loss yang biasa.

Prinsip Strategi

Strategi ini mula-mula mengira garis purata bergerak pantas fastMA dan garis purata bergerak perlahan slowMA. Parameter purata bergerak pantas adalah 12 hari, dan parameter purata bergerak perlahan adalah 26 hari. Kemudian mengira perbezaan antara dua garis purata bergerak untuk membentuk MACD. Kemudian mengira purata bergerak 9 hari MACD untuk mendapatkan garis isyarat. Isyarat perdagangan dihasilkan apabila MACD melintasi di atas atau di bawah garis isyarat.

Kelebihan strategi ini adalah untuk menangkap titik perubahan trend jangka menengah harga saham. Gabungan purata bergerak pantas dan perlahan menapis turun naik harga jangka pendek dan bunyi bising, dan dapat menangkap trend harga jangka sederhana. Apabila harga saham mengalami pembalikan jangka menengah, MACD akan menembusi garis isyarat dan menghasilkan isyarat perdagangan yang agak jelas.

Analisis Kelebihan

Strategi MACD Crossover dengan Isyarat menggabungkan idea purata bergerak berganda untuk menapis bunyi bising jangka pendek dan hanya menangkap titik perubahan trend jangka panjang dan sederhana.

MACD sendiri lebih sensitif dan boleh bertindak balas dengan sensitif terhadap perubahan trend harga. Penambahan garis isyarat boleh menapis lebih banyak isyarat palsu jangka pendek. Hanya apabila trend jangka sederhana berubah dengan ketara, MACD memecahkan garis isyarat ke atas dan ke bawah, isyarat akan dihasilkan.

Dalam trend menaik yang mampan, MACD mengekalkan di atas garis isyarat kebanyakan masa, yang boleh menangkap pelbagai peluang di sepanjang jalan.

Analisis Risiko

Oleh kerana isyarat beli dan jual strategi bergantung sepenuhnya pada persilangan purata bergerak, jika pasaran turun naik dengan ketara, lebih banyak isyarat palsu akan dihasilkan, yang mengakibatkan kehilangan berhenti yang kerap.

Menembusi garis isyarat tidak semestinya memastikan bahawa trend jangka sederhana telah berubah. Bergantung hanya pada satu petunjuk teknikal sebagai isyarat beli mempunyai kebutaan tertentu, dan masa mungkin tidak cukup tepat.

Dalam pasaran yang sentiasa berubah, menggunakan persilangan purata bergerak berganda sahaja sebagai ambang mungkin kehilangan lebih banyak peluang perdagangan.

Arahan pengoptimuman

  1. Tambah indikator penapisan kecairan dan turun naik untuk mengurangkan kekerapan pembukaan dan mengelakkan perdagangan yang tidak berkesan.

  2. Menggabungkan beberapa penunjuk teknikal lain untuk membentuk portfolio penunjuk untuk meningkatkan kualiti isyarat.

  3. Tambah algoritma pembelajaran mesin untuk melatih parameter dan ambang perhatian yang lebih sesuai untuk persekitaran pasaran semasa, mengurangkan campur tangan manusia.

  4. Menggabungkan VIX dan indeks ketakutan lain untuk meramalkan trend pasaran dan turun naik, dan menyesuaikan parameter secara dinamik untuk memanfaatkan peluang MACD dengan lebih baik.

Kesimpulan

Strategi MACD Crossover dengan Isyarat menggunakan prinsip crossover purata bergerak berganda untuk menjana isyarat perdagangan. Menggambar grafik harga dengan perbezaan antara purata bergerak pantas dan perlahan, perubahan trend harga jangka sederhana akan mempunyai ciri-ciri yang jelas. Penambahan garis isyarat juga berkesan menapis beberapa isyarat bising. Strategi ini mempunyai beberapa kelebihan dalam menangkap pembalikan trend jangka sederhana yang agak jelas. Walau bagaimanapun, persilangan MACD dan garis isyarat tidak dapat menentukan sepenuhnya perubahan asas dalam struktur pasaran, dan isyarat perdagangan perlu dirawat dengan berhati-hati. Ia disyorkan untuk digunakan dalam kombinasi dengan penunjuk teknikal lain, dan pengoptimuman pembelajaran mesin juga boleh dipertimbangkan.


/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@author : SudeepBisht
//@version=2
strategy(title="MACD with Signal", shorttitle="MACD_with_Signal")
source = close
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?")

res = useCurrentRes ? timeframe.period : resCustom

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

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

macd = fastMA - slowMA
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 ? green : histA_IsDown ? lime : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? green : 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=3)
plot(smd and outSignal ? outSignal : na, title="Signal", color=blue, style=line ,linewidth=1)
plot(sh and outHist ? outHist : na, title="", color=plot_color, style=columns, linewidth=4)
//plot(sd and cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=circles, linewidth=4, color=macd_color)
hline(0, '0 Line',  linewidth=2, color=white)

macd_chk=smd and outMacD ? outMacD : na
checker=smd and outSignal ? outSignal : na
if (crossover(macd_chk,checker))
    strategy.entry("BBandLE", strategy.long)

if (crossunder(macd_chk, checker))
    strategy.entry("BBandSE", strategy.short)


Lebih lanjut