
Strategi ini menggabungkan garis rata-rata dan MACD untuk menilai tren dan mengirim sinyal perdagangan, dan merupakan strategi pelacakan tren yang khas. Ini menggunakan garis rata-rata ZLSMA dari dua periode yang berbeda untuk menilai arah tren, dan kemudian digabungkan dengan garis lintas MACD untuk mengirimkan sinyal beli dan jual yang spesifik, yang dapat secara efektif menangkap tren garis tengah dan panjang dan menghindari kebisingan pasar jangka pendek.
Strategi ini terdiri dari beberapa bagian utama:
Rata-rata ZLSMA cepat dan rata-rata ZLSMA lambat: membandingkan rata-rata ZLSMA dari periode yang berbeda untuk menentukan arah tren keseluruhan. Garis cepat terdiri dari 32 siklus ZLSMA, garis lambat terdiri dari 400 siklus ZLSMA.
Indikator MACD: dengan garis cepat ((12 hari EMA) dikurangi garis lambat ((26 hari EMA) untuk mendapatkan MACD deviasi, kemudian dengan 9 hari EMA untuk mendapatkan garis sinyal. Ketika MACD melewati garis sinyal untuk membeli sinyal, bawah melewati untuk menjual sinyal.
Sinyal perdagangan: hanya ketika ZLSMA dan sinyal MACD berlawanan arah, sinyal beli atau jual akan dikirim. Yaitu, tren multihead ditambah garpu emas MACD untuk membeli, dan tren kosong ditambah garpu mati MACD untuk menjual.
Stop Loss Stop: Strategi ini belum dimasukkan ke dalam Stop Loss Stop Logic dan perlu dioptimalkan lebih lanjut.
Kombinasi di atas menggunakan garis rata-rata untuk menilai tren besar, MACD untuk menentukan waktu masuk, dapat secara efektif menyaring terobosan palsu, dan menghindari gangguan pasar jangka pendek.
Strategi ini memiliki beberapa keuntungan utama:
Menangkap tren: Mengetahui arah tren melalui kombinasi garis rata-rata periode yang berbeda, dapat secara berurutan, efektif menangkap tren garis panjang dan menengah.
Penyaringan kebisingan: Aplikasi indikator MACD dapat menyaring kebisingan pasar jangka pendek dan menghindari kebocoran oleh getaran skala kecil.
Parameter dapat disesuaikan: Periode rata-rata dan parameter MACD dapat disesuaikan dan dapat dioptimalkan untuk pasar yang berbeda.
Mudah diterapkan: Semua indikator adalah indikator teknis yang umum digunakan, logika kombinasi sederhana dan jelas, mudah dipahami dan diterapkan.
Kendali risiko: memiliki strategi stop loss dan stop loss yang jelas untuk mengontrol risiko dan rasio keuntungan dari setiap perdagangan.
Strategi ini juga memiliki risiko sebagai berikut:
Kesalahan penilaian tren besar: Jika penilaian arah tren besar salah, semua perdagangan dapat gagal.
Optimasi parameter yang tidak tepat: Parameter garis rata-rata dan parameter MACD harus diuji dan dioptimalkan secara rinci, jika tidak, hasilnya mungkin tidak baik.
Kurangnya mekanisme stop loss: Tidak ada titik stop loss yang ditetapkan saat ini, sehingga ada risiko kerugian yang terlalu besar.
Ruang keuntungan terbatas: Sebagai strategi trend tracking, ruang keuntungan per transaksi terbatas, jumlah yang dibutuhkan untuk mendapatkan keuntungan yang lebih tinggi.
Frekuensi transaksi yang terlalu tinggi: pengaturan parameter yang tidak tepat dapat menyebabkan frekuensi transaksi yang terlalu tinggi, meningkatkan biaya transaksi dan biaya slippage.
Strategi ini dapat dioptimalkan lebih lanjut dalam beberapa hal:
Masukkan mekanisme stop loss: menetapkan titik stop loss yang masuk akal, dan kontrol ketat atas kerugian maksimum dari satu transaksi.
Parameter optimasi: menemukan kombinasi rata-rata dan parameter MACD terbaik melalui pengamatan dan optimasi.
Kurangi frekuensi perdagangan: Sesuaikan parameter untuk memastikan sinyal perdagangan hanya saat tren terlihat jelas.
Terkait faktor-faktor lain: Faktor-faktor lain seperti perubahan volume perdagangan dapat ditambahkan untuk mengkonfirmasi tren dan sinyal.
Optimalkan waktu masuk: lebih mengoptimalkan penggunaan indikator MACD untuk meningkatkan akurasi masuk.
Universal multi-varietas: dengan optimasi parameter, membuat strategi dapat diterapkan secara luas pada berbagai varietas, memperluas ruang lingkup aplikasi.
Secara keseluruhan, strategi ini menangkap tren garis tengah dan panjang dengan kombinasi indikator MACD yang sederhana dan efektif, dan dapat digunakan sebagai strategi dasar untuk perdagangan kuantitatif. Namun, parameter harus dioptimalkan lebih lanjut, risiko harus dikendalikan, dan faktor-faktor lain harus dikombinasikan untuk mencapai efek perdagangan yang lebih stabil.
/*backtest
start: 2023-11-07 00:00:00
end: 2023-11-10 05:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © veryfid
//@version=5
strategy("Stratégie ZLSMA Bruno", shorttitle="Stratégie ZLSMA Bruno", overlay=false)
source = close
useCurrentRes = input(true, title="Use Current Chart Resolution?")
smd = input(true, title="Show MacD & Signal Line? Also Turn Off Dots Below")
sd = input(true, title="Show Dots When MacD Crosses Signal Line?")
sh = input(true, title="Show Histogram?")
macd_colorChange = input(true,title="Change MacD Line Color-Signal Line Cross?")
hist_colorChange = input(true,title="MacD Histogram 4 Colors?")
//res = useCurrentRes ? period : resCustom
fastLength = input(12),
slowLength=input(26)
signalLength=input(9)
fastMA = ta.ema(source, fastLength)
slowMA = ta.ema(source, slowLength)
macd = fastMA - slowMA
signal = ta.sma(macd, signalLength)
hist = macd - signal
outMacD = macd
outSignal = signal
outHist = hist
histA_IsUp = outHist > outHist[1] and outHist > 0
histA_IsDown = outHist < outHist[1] and outHist > 0
histB_IsDown = outHist < outHist[1] and outHist <= 0
histB_IsUp = outHist > outHist[1] and outHist <= 0
//MacD Color Definitions
macd_IsAbove = outMacD >= outSignal
macd_IsBelow = outMacD < outSignal
//plot_color = hist_colorChange ? histA_IsUp ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? color.lime : color.red : color.red
//signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime
circleYPosition = outSignal
//plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=4)
//plot(smd and outSignal ? outSignal : na, title="Signal Line", color=signal_color, style=line ,linewidth=2)
//plot(sh and outHist ? outHist : na, title="Histogram", color=plot_color, style=histogram, linewidth=4)
plot(sd and ta.cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=plot.style_circles, linewidth=4, color=macd_color)
hline(0, '0 Line', linestyle=hline.style_solid, linewidth=2, color=color.white)
// Paramètres de la ZLSMA
length = input(32, title="Longueur")
offset = input(0, title="Décalage")
src = input(close, title="Source")
lsma = ta.linreg(src, length, offset)
lsma2 = ta.linreg(lsma, length, offset)
eq = lsma - lsma2
zlsma = lsma + eq
length_slow = input(400, title="Longueur")
offset_slow = input(0, title="Décalage")
lsma_slow = ta.linreg(src, length_slow, offset_slow)
lsma2_slow = ta.linreg(lsma_slow, length_slow, offset_slow)
eq_slow = lsma_slow - lsma2_slow
zlsma_slow = lsma_slow + eq_slow
// Paramètres de la sensibilité
sensitivity = input(0.5, title="Sensibilité")
// Règles de trading
longCondition = zlsma < zlsma_slow and zlsma_slow < zlsma_slow[1] and zlsma > zlsma[1] and ta.cross(outMacD, outSignal) and macd_color == color.lime//ta.crossover(zlsma, close) and ta.crossover(zlsma, zlsma[1]) // Croisement vers le haut
shortCondition = zlsma > zlsma_slow and zlsma_slow > zlsma_slow[1] and zlsma < zlsma[1] and ta.cross(outMacD, outSignal) and macd_color == color.lime //ta.crossunder(zlsma, close) and ta.crossunder(zlsma, zlsma[1]) // Croisement vers le bas
// Entrée en position
strategy.entry("Achat", strategy.long, when=longCondition)
strategy.entry("Vente", strategy.short, when=shortCondition)
botifySignalZLSMA = longCondition ? 1 : shortCondition ? -1 : 0
plot(botifySignalZLSMA, title='Botify_signal', display=display.none)
// Sortie de position
strategy.close("Achat", when=ta.crossunder(zlsma, close)) // Close the "Achat" position
strategy.close("Vente", when=ta.crossover(zlsma, close)) // Close the "Vente" position
// Tracé de la courbe ZLSMA
plot(zlsma, color=color.yellow, linewidth=3)
plot(zlsma_slow, color=color.red, linewidth=3)