Strategi perdagangan kuantitatif komposit berdasarkan MACD


Tanggal Pembuatan: 2023-12-13 16:44:46 Akhirnya memodifikasi: 2023-12-13 16:44:46
menyalin: 0 Jumlah klik: 921
1
fokus pada
1621
Pengikut

Strategi perdagangan kuantitatif komposit berdasarkan MACD

Ringkasan

Strategi ini adalah strategi perdagangan kuantitatif kompleks berdasarkan indikator MACD. Strategi ini menggunakan beberapa indikator MACD, KDJ, dan lain-lain secara komposit untuk menghasilkan sinyal perdagangan melalui kombinasi antara indikator.

Prinsip Strategi

Indikator inti dari strategi ini adalah MACD. MACD mewakili Indeks Moving Average, sebuah indikator untuk melacak tren. Ini terdiri dari sebuah Fast Moving Average (EMA) dan sebuah Slow Moving Average (EMA). Parameter default garis cepat adalah 12, parameter default garis lambat adalah 26. Strategi ini menghitung perbedaan antara dua garis EMA, yaitu DIF.

Strategi ini juga memperkenalkan indikator KDJ. Indikator KDJ terdiri dari nilai K, nilai D dan nilai J. Di antaranya, nilai K adalah nilai acak, nilai D adalah rata-rata bergerak dari nilai K, dan nilai J adalah nilai kepastian. Indikator KDJ mencerminkan keadaan pasar yang overbought dan oversold.

Keunggulan Strategis

Strategi ini menggabungkan beberapa indikator seperti MACD dan KDJ untuk secara efektif menyaring kebisingan pasar dan mengidentifikasi arah tren. Indikator MACD dapat menangkap perubahan harga jangka pendek secara tepat waktu, dan indikator KDJ dapat mengkonfirmasi tren jangka menengah dan panjang. Kombinasi keduanya dapat menyeimbangkan hubungan antara mengejar ketangkasan dan stabilitas.

Selain itu, ada pilihan waktu yang dapat dipilih sendiri. Ini memberikan fleksibilitas yang lebih besar untuk menilai kinerja strategi.

Risiko Strategis dan Solusi

  • Ketika pasar bergejolak lama, MACD akan muncul beberapa kali. Pada saat ini, parameter garis EMA dapat disesuaikan dengan benar, memfilter sebagian dari kebisingan.

  • Setting parameter indikator KDJ yang tidak tepat juga dapat mempengaruhi hasil. Anda dapat menguji beberapa set parameter dan memilih kombinasi parameter yang lebih stabil.

  • Waktu yang dipilih untuk melakukan pengembalian yang tidak tepat dapat memperkirakan atau meremehkan hasil dari strategi tersebut.

Arah optimasi

Strategi ini dapat dioptimalkan dengan:

  1. Meningkatkan mekanisme stop loss. Memaksakan stop loss pada saat harga menembus batas stop loss.

  2. Menambahkan lebih banyak filter indikator. Dalam kombinasi dengan RSI, Brinks dan indikator lainnya, dapat meningkatkan akurasi sinyal.

  3. Optimalkan parameter indikator. Ubah kombinasi parameter EMA dan KDJ untuk mencari parameter optimal.

  4. Optimasi otomatis menggunakan teknologi pembelajaran mesin. Pelatihan dan pengoptimalan parameter strategi menggunakan jaringan saraf, dll.

Meringkaskan

Strategi ini adalah strategi kuantitatif yang khas yang berorientasi pada pelacakan tren, ditambah dengan kontrol overbought dan oversold. Strategi ini menggabungkan keunggulan dari berbagai indikator yang dapat secara efektif menyeimbangkan stabilitas dan sensitivitas. Dengan terus-menerus mengoptimalkan dan menyesuaikan, strategi ini dapat digunakan untuk memperluas skenario yang lebih lanjut, sehingga menghasilkan keuntungan yang stabil dalam jangka panjang.

Kode Sumber Strategi
/*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"}]
*/

//@version=4
strategy(title="New Renaissance", shorttitle="New Renaissance", overlay=true,initial_capital=10000)

source = close

fastlength=input(12, minval=1)
slowlength=input(26,minval=1)
signallength=input(9,minval=1)

// === Defining the MACD oscillator
fastMA=ema(source,fastlength)
slowMA=ema(source,slowlength)
MACD=fastMA-slowMA
signal=sma(MACD,signallength)
delta=MACD-signal

// === Buy and Sell Signals ===
buy=crossover(MACD, signal)
sell=crossunder(MACD, signal)

// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2018, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 12,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 31,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2020, title = "Thru Year",       type = input.integer, minval = 1970)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

// === EXECUTION ===
strategy.entry("L", strategy.long, when = window() and buy)    // enter long when "within window of time" AND crossover
strategy.close("L", when = window() and sell)                   // exit long when "within window of time" AND crossunder