
Artikel ini membahas strategi multispacing yang didasarkan pada indikator ZeroLag MACD. Strategi ini menggunakan indikator ZeroLag MACD yang dioptimalkan untuk menghasilkan sinyal beli dan jual, sehingga memungkinkan perdagangan otomatis pada grafik 1 jam Bitcoin USDT. Kode strategi dioptimalkan oleh Albert Callisto (AC) untuk meningkatkan profitabilitas dan stabilitas strategi.
Strategi ini menggunakan indikator MACD ZeroLag sebagai inti untuk menghasilkan sinyal perdagangan dengan menghitung perbedaan antara rata-rata bergerak cepat dan rata-rata bergerak lambat. Indikator MACD ZeroLag adalah versi yang lebih baik dari indikator MACD tradisional, meningkatkan sensitivitas dan ketepatan waktu dengan menghilangkan efek lag dalam indikator.
Secara khusus, strategi ini pertama-tama menghitung rata-rata bergerak cepat (default 12 cycle) dan rata-rata bergerak lambat (default 26 cycle). Kemudian, kedua rata-rata bergerak ini digunakan untuk menghitung dua komponen dari indikator MACD ZeroLag: zerolagEMA dan zerolagslowMA. Kemudian, mengurangi kedua komponen tersebut untuk mendapatkan nilai indikator MACD ZeroLag.
Strategi menghasilkan sinyal beli ketika melewati garis sinyal di atas ZeroLag MACD; strategi menghasilkan sinyal jual ketika melewati garis sinyal di bawah ZeroLag MACD. Dengan demikian, strategi dapat melakukan perdagangan overhead dan overhead secara otomatis sesuai dengan perubahan tren pasar.
Menghilangkan efek lag: Indikator MACD ZeroLag secara efektif menghilangkan efek lag dalam indikator dengan melakukan perbaikan pada indikator MACD tradisional, meningkatkan sensitivitas dan ketepatan waktu indikator sehingga dapat lebih cepat mencerminkan perubahan tren pasar.
Adaptif: Strategi ini dapat beradaptasi dengan berbagai kondisi pasar dan varietas perdagangan dengan menyesuaikan parameter (seperti siklus rata-rata bergerak cepat, siklus rata-rata bergerak lambat, dan siklus garis sinyal) dan memiliki kemampuan beradaptasi dan fleksibilitas yang kuat.
Otomatisasi perdagangan: Strategi yang didasarkan pada aturan perdagangan yang jelas memungkinkan perdagangan yang sepenuhnya otomatis, mengurangi risiko intervensi manusia, dan meningkatkan efisiensi perdagangan.
Pengendalian risiko: Strategi menggunakan moving average dan MACD untuk menghasilkan sinyal perdagangan, yang membantu mengidentifikasi tren pasar dan mengendalikan risiko. Selain itu, dengan manajemen posisi yang tepat dan tindakan stop loss, risiko strategi dapat dikurangi lebih lanjut.
Risiko optimasi parameter: Kinerja strategi ini bergantung pada pilihan parameter, pengaturan parameter yang tidak tepat dapat menyebabkan kinerja strategi yang buruk. Oleh karena itu, diperlukan umpan balik dan optimasi yang memadai terhadap strategi untuk menemukan kombinasi parameter yang optimal.
Risiko pasar: Pasar kriptocurrency sangat berfluktuasi dan dipengaruhi oleh berbagai faktor, sehingga strategi menghadapi risiko pasar yang tidak dapat dikendalikan. Selain itu, peristiwa yang tidak terduga (seperti perubahan kebijakan, peristiwa black swan, dll.) dapat memiliki dampak besar pada kinerja strategi.
Risiko overfit: Jika parameter strategi terlalu dioptimalkan, dapat menyebabkan strategi terlalu cocok dengan data historis, dan tidak berkinerja baik dalam transaksi nyata. Oleh karena itu, perlu menggunakan metode yang tepat dalam proses pengujian dan pengoptimalan (misalnya, pengujian luar sampel, verifikasi silang, dll.) untuk menghindari overfit.
Risiko likuiditas: Dalam kasus kurangnya likuiditas pasar, strategi mungkin tidak dapat bertransaksi pada waktu yang tepat, atau bertransaksi dengan harga yang tidak menguntungkan, sehingga mempengaruhi kinerja strategi. Oleh karena itu, perlu memilih varietas perdagangan dengan likuiditas yang lebih baik, dan mengatur batas slip dan volume perdagangan yang wajar.
Optimasi parameter dinamis: pertimbangkan untuk menggunakan metode seperti pembelajaran mesin untuk mengoptimalkan parameter strategi secara dinamis agar dapat beradaptasi dengan kondisi pasar yang terus berubah. Hal ini dapat meningkatkan fleksibilitas dan ketahanan strategi.
Sintesis multi-faktor: Menggabungkan indikator MACD Zero Lag dengan indikator teknis lainnya (seperti RSI, Bollinger Bands, dll) untuk membentuk sinyal sintesis multi-faktor yang meningkatkan keandalan dan profitabilitas strategi.
Optimalisasi manajemen risiko: memperkenalkan langkah-langkah manajemen risiko yang lebih canggih, seperti stop loss dinamis, penyesuaian volatilitas, dan lain-lain, untuk mengendalikan lebih baik celah risiko strategi.
Menambahkan analisis sentimen pasar: menggabungkan analisis sentimen pasar (seperti indeks panik, sentimen media sosial, dll.), Menyaring dan mengoptimalkan sinyal yang dihasilkan oleh strategi, meningkatkan fleksibilitas dan stabilitas strategi.
Strategi ini memiliki kelebihan seperti menghilangkan efek lag, kemampuan beradaptasi yang kuat, otomatisasi perdagangan dan pengendalian risiko, tetapi juga menghadapi tantangan seperti pengoptimalan parameter, risiko pasar, overfit dan risiko likuiditas. Untuk meningkatkan kinerja strategi lebih lanjut, dapat dioptimalkan dari pengoptimalan parameter dinamis, sintesis multi-faktor, pengoptimalan manajemen risiko, dan analisis sentimen pasar.
/*backtest
start: 2024-03-18 00:00:00
end: 2024-04-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Zero Lag MACD Strategy", shorttitle="ZL_MACD Strategy", overlay=true)
// Input variables
fastLength = input(12, title="Fast MM period", minval=1)
slowLength = input(26, title="Slow MM period", minval=1)
signalLength = input(9, title="Signal MM period", minval=1)
MacdEmaLength = input(9, title="MACD EMA period", minval=1)
useEma = input(true, title="Use EMA (otherwise SMA)")
useOldAlgo = input(false, title="Use Glaz algo (otherwise 'real' original zero lag)")
// Calculate Zero Lag MACD components
ma1 = useEma ? ema(close, fastLength) : sma(close, fastLength)
ma2 = useEma ? ema(ma1, fastLength) : sma(ma1, fastLength)
zerolagEMA = ((2 * ma1) - ma2)
mas1 = useEma ? ema(close, slowLength) : sma(close, slowLength)
mas2 = useEma ? ema(mas1, slowLength) : sma(mas1, slowLength)
zerolagslowMA = ((2 * mas1) - mas2)
ZeroLagMACD = zerolagEMA - zerolagslowMA
emasig1 = ema(ZeroLagMACD, signalLength)
emasig2 = ema(emasig1, signalLength)
signal = useOldAlgo ? sma(ZeroLagMACD, signalLength) : (2 * emasig1) - emasig2
// Generate buy and sell signals
buySignal = crossover(ZeroLagMACD, signal)
sellSignal = crossunder(ZeroLagMACD, signal)
// Strategy conditions
if (buySignal)
strategy.entry("Buy", strategy.long)
if (sellSignal)
strategy.entry("Sell", strategy.short)