Tren Mengikuti Strategi Berdasarkan Moving Average dan MACD

Penulis:ChaoZhang, Tanggal: 2023-11-15 15:58:19
Tag:

img

Gambaran umum

Strategi ini menggabungkan moving average dan indikator MACD untuk menentukan tren dan menghasilkan sinyal perdagangan. Ini termasuk dalam strategi trend berikut yang khas. Ini menggunakan dua moving average ZLSMA dari kerangka waktu yang berbeda untuk menentukan arah tren, dan crossover MACD untuk menghasilkan sinyal beli dan jual tertentu. Hal ini memungkinkan untuk secara efektif menangkap tren jangka menengah hingga panjang sambil menghindari tertipu oleh kebisingan pasar jangka pendek.

Logika Strategi

Strategi ini terdiri dari komponen utama berikut:

  1. ZLSMA cepat dan ZLSMA lambat: Membandingkan ZLSMA moving average dari jangka waktu yang berbeda menentukan arah tren keseluruhan. Garis cepat terdiri dari ZLSMA 32 periode, dan garis lambat terdiri dari ZLSMA 400 periode. Ketika garis cepat melintasi di atas garis lambat, itu adalah sinyal bullish, dan sebaliknya.

  2. Indikator MACD: MACD dihitung dengan mengurangi garis lambat (EMA 26 periode) dari garis cepat (EMA 12 periode).

  3. Sinyal perdagangan: Sinyal beli dan jual hanya dihasilkan ketika arah tren ZLSMA sejajar dengan sinyal crossover MACD. Secara khusus, pergi panjang ketika tren bull bertepatan dengan salib emas MACD, dan pergi pendek ketika tren bear bertepatan dengan salib kematian MACD.

  4. Stop loss and take profit: Strategi saat ini tidak mencakup stop loss and take profit logic, yang membutuhkan optimasi lebih lanjut.

Kombinasi menggunakan moving average untuk menentukan tren utama dan MACD untuk waktu entri dapat secara efektif menyaring breakout palsu dan menghindari tertipu oleh kebisingan pasar jangka pendek.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Menangkap tren: Menggunakan rata-rata bergerak dari kerangka waktu yang berbeda untuk menentukan arah tren memungkinkan perdagangan dengan tren dan menangkap tren jangka menengah hingga panjang secara efektif.

  2. Menyaring kebisingan: Menerapkan indikator MACD membantu menyaring kebisingan pasar jangka pendek dan menghindari disesatkan oleh pasar dengan kisaran kecil.

  3. Parameter yang dapat disesuaikan: Periode rata-rata bergerak dan parameter MACD dapat disesuaikan dan dapat dioptimalkan untuk pasar yang berbeda.

  4. Mudah diimplementasikan: Semua indikator yang digunakan adalah indikator teknis umum.

  5. Risiko yang dapat dikendalikan: Dengan stop loss yang jelas dan mengambil keuntungan, risiko dan imbalan dari setiap perdagangan dapat dikendalikan.

Analisis Risiko

Risiko utama dari strategi ini adalah:

  1. Penentuan tren yang salah: Jika tren utama ditentukan secara salah, semua perdagangan dapat mengakibatkan kerugian.

  2. Optimasi parameter yang tidak benar: Parameter moving average dan MACD harus diuji dan dioptimalkan secara menyeluruh, jika tidak hasilnya mungkin tidak memuaskan.

  3. Kurangnya stop loss: Saat ini tidak ada stop loss yang ada, menimbulkan risiko kerugian yang terlalu besar.

  4. Potensi keuntungan terbatas: Sebagai tren mengikuti strategi, potensi keuntungan dari setiap perdagangan terbatas, membutuhkan volume tinggi untuk meningkatkan profitabilitas.

  5. Frekuensi perdagangan yang tinggi: Penyesuaian parameter yang tidak tepat dapat mengakibatkan frekuensi perdagangan yang berlebihan, meningkatkan biaya transaksi dan slippage.

Arahan Optimasi

Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:

  1. Tambahkan mekanisme stop loss: Atur titik stop loss yang tepat untuk mengontrol kerugian maksimum per perdagangan.

  2. Mengoptimalkan parameter: Backtest dan mengoptimalkan untuk menemukan kombinasi rata-rata bergerak dan parameter MACD yang optimal.

  3. Frekuensi perdagangan yang lebih rendah: Sesuaikan parameter untuk memastikan sinyal perdagangan hanya dihasilkan ketika tren dinyatakan.

  4. Masukkan faktor lain: Faktor seperti perubahan volume dapat ditambahkan untuk mengkonfirmasi tren dan sinyal.

  5. Meningkatkan waktu entri: Lebih lanjut meningkatkan penggunaan MACD untuk meningkatkan akurasi entri.

  6. Membuat aplikasi universal: Mengoptimalkan parameter untuk membuat strategi dapat diterapkan secara luas di berbagai produk, memperluas penerapan.

Kesimpulan

Sebagai kesimpulan, strategi ini secara efektif menangkap tren jangka menengah hingga panjang melalui kombinasi sederhana namun efektif dari moving average dan MACD, menjadikannya dasar strategi perdagangan kuantitatif yang solid.


/*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)



Lebih banyak