Strategi Trading Multi-Timeframe Berdasarkan MACD

Penulis:ChaoZhang, Tanggal: 2024-01-12 11:46:59
Tag:

img

Gambaran umum: Strategi ini menggunakan indikator MACD untuk menghasilkan sinyal perdagangan di beberapa kerangka waktu untuk melacak tren.

Prinsip Strategi: Strategi ini menggunakan persilangan antara garis selisih MACD dan garis sinyal untuk menentukan arah tren. Secara khusus, strategi ini menghitung perbedaan MACD dan garis sinyal dalam kerangka waktu yang lebih tinggi (default 60 menit). Ketika garis selisih melintasi di atas garis sinyal, sinyal beli dihasilkan. Saat melintasi di bawah, sinyal jual dihasilkan untuk mengkonfirmasi arah tren keseluruhan.

Strategi ini kemudian menghitung MACD dalam kerangka waktu yang lebih rendah (periode saat ini) dan memasuki posisi ketika penyeberangan terjadi antara perbedaan dan garis sinyal. Jadi kerangka waktu yang lebih tinggi digunakan untuk menilai arah tren dan yang lebih rendah digunakan untuk menemukan titik masuk tertentu.

Strategi ini juga menggunakan perubahan warna histogram MACD untuk membantu menilai tren. Bar hijau menunjukkan tren naik sementara bar merah menunjukkan tren turun.

Analisis Keuntungan:

  1. Desain multi-frame waktu mengkonfirmasi tren di TF yang lebih tinggi dan menemukan entri di TF yang lebih rendah, meningkatkan sistemasi.

  2. Menggunakan crossover MACD untuk menentukan entri dan keluar, parameter dioptimalkan untuk sinyal yang dapat diandalkan.

  3. Warna histogram membantu dalam menentukan status tren saat ini, meningkatkan akurasi keputusan.

  4. Otomatis melacak tren, mengurangi kesalahan emosional.

Analisis Risiko:

  1. Sebagai indikator tren untuk tren jangka menengah dan panjang, MACD dapat menghasilkan sinyal palsu dalam jangka pendek yang mengarah pada kerugian yang tidak perlu.

  2. Strategi multi-frame lebih sulit untuk dioptimalkan dan diuji karena beberapa periode perlu dipertimbangkan secara bersamaan.

  3. Tidak ada stop loss yang ditetapkan yang menimbulkan risiko kerugian besar.

Arahan Optimasi:

  1. Mengoptimalkan parameter MACD untuk menemukan kombinasi terbaik.

  2. Tambahkan stop loss untuk membatasi kerugian maksimum.

  3. Evaluasi filter lain untuk meningkatkan kualitas sinyal.

  4. Uji kombinasi jangka waktu yang berbeda untuk menemukan kecocokan optimal.

Ringkasan: Strategi ini dirancang dengan baik secara sistematik dan menggabungkan beberapa kekuatan indikator MACD untuk secara efektif melacak tren jangka menengah dan panjang. Namun, kurangnya mekanisme stop loss berarti kerugian jangka pendek dapat dengan mudah diperluas, yang perlu ditingkatkan. Secara keseluruhan, dengan kemampuan mengikuti tren yang kuat, strategi ini menyediakan kerangka kerja berkualitas tinggi untuk memilih saham dan pengambilan keputusan dalam perdagangan kuantitatif. Optimasi lebih lanjut dalam parameter dan model dapat memperluas potensi keuntungan dan meningkatkan stabilitas.


/*backtest
start: 2023-12-12 00:00:00
end: 2024-01-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@author : SudeepBisht
//@version=2
strategy(title="SB_CM_MacD_Ult_MTF", shorttitle="SB_CM_Ult_MacD_MTF")
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 ? 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)
plot(sd and cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=circles, linewidth=4, color=macd_color)
// hline(0, '0 Line', linestyle=solid, 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, comment="BBandLE")

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


Lebih banyak