Strategi MACD Golden Cross dan Death Cross

Penulis:ChaoZhang, Tanggal: 2024-04-26 12:08:24
Tag:MACDEMADIFDEA

img

Gambaran umum

Strategi ini menggunakan persilangan garis DIF dan garis DEA dalam indikator MACD untuk menghasilkan sinyal perdagangan. Ketika garis DIF melintasi di atas garis DEA, itu menghasilkan sinyal panjang; ketika garis DIF melintasi di bawah garis DEA, itu menghasilkan sinyal pendek. Hasil backtesting dari strategi ini menunjukkan bahwa pada pasangan perdagangan BTCUSDT, tingkat kemenangan sekitar 40%, dan pengembalian tahunan adalah 1,05. Namun, itu akan menyebabkan jumlah aset yang dipegang terus meningkat, sehingga tidak dapat digunakan sebagai strategi arbitrase independen.

Prinsip Strategi

  1. Menghitung rata-rata bergerak eksponensial cepat (EMA) dan rata-rata bergerak eksponensial lambat (EMA).
  2. Menghitung garis DIF, yang merupakan perbedaan antara EMA cepat dan EMA lambat.
  3. Menghitung garis DEA, yang merupakan EMA dari garis DIF.
  4. Menghitung histogram MACD, yang merupakan perbedaan antara garis DIF dan garis DEA.
  5. Ketika garis DIF melintasi di atas garis DEA, menghasilkan sinyal panjang dan membuka posisi panjang.
  6. Ketika garis DIF melintasi di bawah garis DEA, menghasilkan sinyal pendek, menutup posisi panjang, dan membuka posisi pendek.
  7. Ketika sinyal crossover berlawanan muncul lagi, tutup posisi saat ini dan buka posisi di arah yang berlawanan.

Keuntungan Strategi

  1. Strategi ini menggunakan indikator MACD yang banyak digunakan, yang mudah dipahami dan diterapkan.
  2. Logika strategi jelas, dan sinyal perdagangan jelas.
  3. Hal ini cocok untuk tren pasar dan dapat melacak tren utama pasar.

Risiko Strategi

  1. Tingkat kemenangan dari strategi ini rendah, hanya 40%, yang berarti bahwa 60% dari perdagangan mungkin kalah.
  2. Strategi ini akan menyebabkan jumlah aset yang dipegang terus meningkat, yang dapat membawa eksposur risiko tambahan.
  3. Di pasar yang berfluktuasi, strategi ini dapat menghasilkan sinyal perdagangan yang sering, yang mengarah pada biaya perdagangan yang tinggi.
  4. Strategi ini tidak mempertimbangkan manajemen risiko, seperti stop loss dan manajemen posisi, yang dapat menyebabkan kerugian yang signifikan.

Arah Optimasi Strategi

  1. Memperkenalkan filter tren, seperti moving average jangka panjang, untuk menghindari perdagangan di pasar yang berfluktuasi.
  2. Mengoptimalkan parameter indikator MACD, seperti periode EMA cepat, EMA lambat, dan garis sinyal, untuk beradaptasi dengan kondisi pasar yang berbeda.
  3. Tambahkan langkah-langkah manajemen risiko, seperti stop loss dan manajemen posisi, untuk mengendalikan potensi kerugian.
  4. Menggabungkan dengan indikator teknis atau analisis fundamental lainnya untuk meningkatkan keandalan sinyal perdagangan.

Ringkasan

Strategi MACD golden cross dan death cross adalah strategi trading yang sederhana dan mudah dimengerti yang cocok untuk pasar tren. Namun, tingkat kemenangan strategi ini rendah, dan tidak memiliki langkah-langkah manajemen risiko, sehingga membutuhkan pengoptimalan dan perbaikan lebih lanjut. Dengan memperkenalkan filter tren, mengoptimalkan parameter, menambahkan manajemen risiko, dan menggabungkan dengan metode analisis lainnya, kinerja dan keandalan strategi ini dapat ditingkatkan. Namun, strategi ini masih tidak dapat digunakan sebagai strategi arbitrage independen dan perlu dikombinasikan dengan strategi lain untuk mendapatkan hasil perdagangan yang lebih baik.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=5
// @description 该策略使用 MACD DIF 线与 EDA 线产生金叉与死叉时进行入场与出场操作, 回测后发现胜率约 40%, BTCUSDT 年化利率 1.05, 同时会导致持有的资产数量不断上升, 无法作为一个独立的套利策略进行使用.

strategy("MACD 金叉策略", overlay=true)

fastLength = input(12, "快线长度")
slowLength = input(26, "慢线长度")
MACDLength = input(9, "MACD 均线长度")

deltaIncreaseOver0 = input(color.green,'MACD 柱在 0 线以上增长')
deltaIncreaseUnder0 = input(color.rgb(153, 230, 156),'MACD 柱在 0 线以下增长')

deltaDecreaseOver0 = input(color.orange,'MACD 柱在 0 线以上下跌')
deltaDecreaseUnder0 = input(color.red,'MACD 柱在 0 线以下下跌')

buySellEnabled = input(true, '是否显示入场与出场信号')

// @variable 做多轮数
var longRound = 0
// @variable 做空轮数
var shortRound = 0

DIF = ta.ema(close, fastLength) - ta.ema(close, slowLength) // 快慢均线差值
EDA = ta.ema(DIF, MACDLength) // DIF 线的 EMA 均线
delta = DIF - EDA // MACD 柱高度

// plot(0, 'Zero', color.black)
plot(DIF,'DIF', color.yellow)
plot(EDA, "EDA", color.purple)

isDeltaIncreasing = delta[1] < delta
isDeltaOver0 = delta > 0
deltaColor = isDeltaIncreasing ? (isDeltaOver0? deltaIncreaseOver0: deltaIncreaseUnder0) :( isDeltaOver0? deltaDecreaseOver0: deltaDecreaseUnder0)
plot(delta, "Delta", deltaColor, style = plot.style_columns)

isDeltaV = delta > delta[1] and delta[2] > delta[1]
isDeltaA = delta < delta[1] and delta[2] < delta[1]

longBuy(round) =>
	entry = str.format("做多买入 {0}",round)
	// log.info(str.format("{0} {1}",entry,close))
	strategy.entry(entry, strategy.long, comment=entry)

longSell(round) =>
	entry = str.format("做多买入 {0}",round)
	exit = str.format("做多卖出 {0}",round)
	// log.info(str.format("{0} {1}",exit,close))
	strategy.close(entry, comment=exit)		

shortSell(round) =>
	entry = str.format("做空卖出 {0}",round)
	// log.info(str.format("{0} {1}",entry,close))
	strategy.entry(entry, strategy.short, comment= entry) 

shortBuy(round) =>
	entry = str.format("做空卖出 {0}",round)
	exit = str.format("做空买入 {0}",round)
	// log.info(str.format("{0} {1}",exit,close))
	strategy.close(entry, comment=exit)		

if (buySellEnabled) 
	if (ta.crossunder(DIF, EDA))
		longSell(longRound)
	if (ta.crossover(DIF, EDA))
		longRound := longRound + 1
		longBuy(longRound)

		
		

Berkaitan

Lebih banyak