
Strategi ini adalah strategi perdagangan kuantitatif komposit berdasarkan indikator MACD. Ia menggunakan pelbagai indikator seperti MACD, KDJ, dan lain-lain untuk menghasilkan isyarat perdagangan melalui kombinasi antara indikator.
Penunjuk utama strategi ini ialah MACD. MACD melambangkan purata bergerak indeks, sebuah penunjuk trend. Ia terdiri daripada purata bergerak cepat (EMA) dan purata bergerak perlahan (EMA). Parameter lalai garis cepat ialah 12, parameter lalai garis perlahan ialah 26. Strategi ini mengira perbezaan antara dua garis EMA, iaitu DIF.
Strategi ini juga memperkenalkan penunjuk KDJ. Penunjuk KDJ merangkumi nilai K, nilai D dan nilai J. Di antaranya, nilai K merujuk kepada nilai rawak, nilai D adalah purata bergerak nilai K, dan nilai J merujuk kepada nilai kepastian. Penunjuk KDJ mencerminkan keadaan pasaran yang terlalu banyak membeli dan terlalu banyak menjual. Apabila nilai J lebih besar daripada 100 mewakili terlalu banyak membeli, dan lebih kecil daripada 10 mewakili terlalu banyak menjual.
Strategi ini menggunakan pelbagai indikator seperti MACD dan KDJ secara komprehensif untuk menyaring bunyi pasaran dengan berkesan dan mengenal pasti arah trend. Indeks MACD dapat menangkap perubahan harga jangka pendek tepat pada masanya, dan indikator KDJ dapat mengkonfirmasi trend jangka panjang. Gabungan kedua-duanya dapat mengimbangi hubungan antara mengejar ketangkasan dan kestabilan.
Di samping itu, strategi telah menambah pilihan masa, yang membolehkan anda memilih sendiri jangka masa yang akan diukur. Ini memberikan fleksibiliti yang lebih besar untuk menilai prestasi strategi.
Apabila pasaran bergoyang untuk jangka masa yang panjang, MACD akan muncul beberapa kali. Dalam kes ini, parameter garis EMA boleh disesuaikan dengan betul, untuk menyaring kebisingan.
Tetapan parameter penunjuk KDJ yang tidak betul juga boleh mempengaruhi hasilnya. Anda boleh menguji lebih banyak set parameter dan memilih kombinasi parameter yang lebih stabil.
Waktu pengesanan yang tidak tepat boleh menganggarkan atau menganggarkan hasil strategi. Julat masa yang mewakili harus dipilih untuk ujian.
Strategi ini boleh dioptimumkan dengan:
Meningkatkan mekanisme penangguhan kerugian. Memaksa penangguhan kedudukan kosong apabila harga mencetuskan garis penangguhan kerugian.
Tambah lebih banyak penapis indikator. Gabungan dengan RSI, Blink, dan lain-lain indikator dapat meningkatkan ketepatan isyarat.
Mengoptimumkan parameter penunjuk. Ubah kombinasi parameter EMA dan KDJ untuk mencari parameter optimum.
Menggunakan teknologi pembelajaran mesin untuk mengoptimumkan secara automatik. Menggunakan rangkaian saraf untuk melatih dan mengoptimumkan parameter strategi.
Strategi ini adalah strategi kuantitatif yang mengutamakan trend, ditambah dengan kawalan overbought dan oversold. Ia menggabungkan kelebihan pelbagai indikator, yang dapat mengimbangi kestabilan dan kepekaan dengan berkesan. Dengan pengoptimuman dan penyesuaian yang berterusan, strategi ini dapat digunakan untuk memperluaskan lagi senario penggunaan, untuk mendapatkan keuntungan yang stabil dalam 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