
Strategi ini menggabungkan garis rata dan MACD untuk menilai trend dan mengeluarkan isyarat perdagangan, dan merupakan strategi pengesanan trend yang tipikal. Ia menggunakan garis rata ZLSMA dari dua kitaran yang berbeza untuk menilai arah trend, dan kemudian menggabungkan garis berlubang dengan MACD untuk menghantar isyarat beli dan jual yang spesifik.
Strategi ini terdiri daripada beberapa bahagian:
Garis purata ZLSMA cepat dan garis purata ZLSMA perlahan: membandingkan garis purata ZLSMA dari pelbagai tempoh untuk menentukan arah trend keseluruhan. Garis cepat terdiri daripada 32 kitaran ZLSMA, garis perlahan terdiri daripada 400 kitaran ZLSMA.
Indikator MACD: dengan garis cepat ((EMA 12 hari) tolak garis perlahan ((EMA 26 hari) untuk mendapatkan MACD yang berbeza dari nilai, kemudian dengan EMA 9 hari untuk mendapatkan garis isyarat. Apabila MACD melintasi garis isyarat sebagai isyarat membeli, bawah melintasi sebagai isyarat menjual.
Isyarat dagangan: Isyarat beli atau jual hanya akan dikeluarkan apabila ZLSMA dan isyarat MACD bersatu arah. Iaitu, membeli apabila trend multihead ditambah garpu emas MACD, dan menjual apabila trend kosong ditambah garpu mati MACD.
Hentikan Kerosakan: Strategi ini belum dimasukkan ke dalam logik Hentikan Kerosakan dan memerlukan pengoptimuman lanjut.
Kombinasi di atas menggunakan garis rata-rata untuk menentukan trend besar, MACD menentukan masa masuk, dapat menyaring penembusan palsu dengan berkesan, dan mengelakkan gangguan pasaran jangka pendek.
Strategi ini mempunyai kelebihan utama:
Menangkap Trend: Mengetahui arah trend melalui kombinasi garis rata-rata berkala yang berbeza, anda boleh secara beransur-ansur menangkap trend garis tengah dan panjang dengan berkesan.
Penapisan bunyi bising: Penggunaan indikator MACD dapat menapis bunyi bising pasaran jangka pendek dan mengelakkan kekeliruan oleh getaran kecil.
Parameter boleh disesuaikan: kitaran garis purata dan parameter MACD boleh disesuaikan dan dapat dioptimumkan untuk pasaran yang berbeza.
Kemudahan pelaksanaan: Indikator-indikator adalah petunjuk teknikal yang biasa digunakan, logik kombinasi mudah dan jelas, mudah difahami dan dilaksanakan.
Risiko boleh dikawal: Terdapat strategi berhenti dan henti yang jelas yang dapat mengawal risiko dan kadar keuntungan setiap perdagangan.
Strategi ini juga mempunyai risiko:
Kesilapan dalam menilai trend utama: Jika salah menilai arah trend utama, semua dagangan mungkin gagal.
Optimasi parameter tidak sesuai: Parameter garis purata dan parameter MACD mesti diuji dan dioptimumkan secara terperinci, jika tidak, hasilnya mungkin tidak baik.
Kurangnya mekanisme penangguhan kerugian: Tiada titik penangguhan yang ditetapkan pada masa ini, dan terdapat risiko kerugian yang berlebihan.
Ruang keuntungan yang terhad: Sebagai strategi trend-following, ruang keuntungan setiap perdagangan terhad, jumlah yang diperlukan untuk mendapatkan keuntungan yang lebih tinggi.
Frekuensi transaksi yang terlalu tinggi: penetapan parameter yang tidak betul boleh menyebabkan frekuensi transaksi yang terlalu tinggi, meningkatkan kos transaksi dan kos slippage.
Strategi ini boleh dioptimumkan dengan cara berikut:
Menyertai mekanisme henti rugi: menetapkan titik henti rugi yang munasabah dan mengawal kerugian maksimum dalam satu urus niaga.
Parameter pengoptimuman: Mencari gabungan garis purata dan parameter MACD yang terbaik melalui pengesanan semula dan pengoptimuman.
Kurangkan frekuensi dagangan: Sesuaikan parameter untuk memastikan isyarat dagangan hanya dikeluarkan apabila trend jelas.
Gabungan dengan faktor-faktor lain: Faktor-faktor lain seperti perubahan jumlah dagangan boleh ditambah untuk mengesahkan trend dan isyarat.
Optimumkan masa kemasukan: lebih mengoptimumkan penggunaan penunjuk MACD untuk meningkatkan ketepatan kemasukan.
Keseluruhan pelbagai jenis: Optimumkan parameter untuk menjadikan strategi dapat digunakan secara meluas untuk pelbagai jenis, untuk memperluaskan ruang lingkup aplikasi.
Secara keseluruhannya, strategi ini menangkap trend garis tengah dan panjang dengan kombinasi indikator MACD yang mudah dan berkesan, yang boleh digunakan sebagai strategi asas untuk perdagangan kuantitatif. Tetapi masih perlu mengoptimumkan parameter lebih lanjut, mengawal risiko, dan menggabungkan faktor-faktor lain untuk mencapai kesan 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)