Ini adalah strategi perdagangan kuantitatif gabungan berdasarkan indikator MACD. Ini menggabungkan beberapa indikator seperti MACD dan KDJ untuk menghasilkan sinyal perdagangan melalui kombinasi indikator.
Indikator inti dari strategi ini adalah MACD. MACD adalah singkatan dari Moving Average Convergence Divergence, yang merupakan indikator yang mengikuti tren. Ini terdiri dari rata-rata bergerak cepat (EMA) dan rata-rata bergerak lambat (EMA). Parameter default adalah 12 untuk garis cepat dan 26 untuk garis lambat. Strategi ini menghitung perbedaan antara dua garis EMA, yang disebut DIF. Kemudian EMA 9 hari dihitung pada DIF untuk mendapatkan indikator DEA. Ketika DIF melintasi di atas DEA, sinyal beli dihasilkan. Ketika melintasi di bawah, sinyal jual dihasilkan.
Strategi ini juga menggabungkan indikator KDJ. Indikator KDJ mencakup nilai K, nilai D, dan nilai J. Di antara mereka, nilai K mengacu pada nilai acak, nilai D adalah rata-rata bergerak dari nilai K, dan nilai J mengacu pada nilai deterministik. Indikator KDJ mencerminkan tingkat overbought dan oversold di pasar. Ketika nilai J lebih besar dari 100, itu mewakili kondisi overbought. Ketika kurang dari 10, itu mewakili kondisi oversold. Strategi ini menggabungkan indikator KDJ untuk menghindari menghasilkan sinyal yang salah pada titik balik pasar.
Strategi ini menggabungkan beberapa indikator seperti MACD dan KDJ, yang dapat secara efektif menyaring kebisingan pasar dan mengidentifikasi arah tren. Indikator MACD dapat menangkap perubahan harga jangka pendek secara tepat waktu, sementara indikator KDJ dapat mengkonfirmasi tren jangka menengah dan panjang. Kombinasi keduanya dapat menyeimbangkan mengejar kelincahan dan stabilitas.
Selain itu, strategi menggabungkan pilihan rentang waktu, yang memberikan fleksibilitas yang lebih besar dalam mengevaluasi kinerja strategi.
Ketika pasar berfluktuasi untuk jangka waktu yang lama, MACD akan memiliki beberapa sinyal palsu. Pada titik ini, kita dapat menyesuaikan parameter garis EMA dengan benar untuk menyaring kebisingan.
Pengaturan parameter KDJ yang salah juga akan mempengaruhi hasil. Kita dapat menguji beberapa kelompok parameter dan memilih kombinasi parameter yang lebih stabil.
Pemilihan jangka waktu backtest yang tidak tepat akan melebih-lebihkan atau meremehkan profitabilitas strategi.
Strategi dapat dioptimalkan dalam aspek berikut:
Tambahkan mekanisme stop loss. Ketika harga memicu garis stop loss, itu akan memaksa keluar posisi untuk tujuan stop loss.
Masukkan lebih banyak filter indikator, menggabungkan indikator seperti RSI dan Bollinger Bands untuk meningkatkan akurasi sinyal.
Mengoptimalkan parameter indikator. Mengubah kombinasi parameter EMA dan KDJ untuk menemukan pengaturan yang optimal.
Gunakan teknik pembelajaran mesin untuk mengoptimalkan secara otomatis. Gunakan jaringan saraf untuk pelatihan parameter dan pengoptimalan.
Ini adalah strategi kuantitatif khas yang terutama mengikuti tren, dilengkapi dengan kontrol overbought dan oversold. Ini menggabungkan keuntungan dari beberapa indikator dan secara efektif menyeimbangkan stabilitas dan sensitivitas. Melalui optimalisasi dan penyesuaian terus-menerus, penerapan strategi dapat diperluas lebih lanjut untuk mendapatkan keuntungan stabil jangka panjang.
/*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