Strategi Crossover Rata-rata Bergerak Ganda

Penulis:ChaoZhang, Tanggal: 2023-10-17 13:54:05
Tag:

img

Gambaran umum

Strategi ini menghasilkan sinyal perdagangan berdasarkan perbedaan antara dua moving average dengan kerangka waktu yang berbeda. Ini menghitung SMA yang lebih cepat dan SMA yang lebih lambat, dan menghasilkan sinyal beli ketika SMA cepat melintasi SMA lambat dari bawah, dan sinyal jual ketika SMA cepat melintasi SMA lambat dari atas.

Cara Kerjanya

Logika inti dari strategi ini adalah untuk menghitung dua rata-rata bergerak, SMA ((len1) dan SMA ((len2), dan perbedaan mereka dif. Di sini len1 mewakili periode MA yang lebih cepat dan len2 MA yang lebih lambat. MA yang lebih cepat merespons perubahan harga lebih cepat sementara MA yang lebih lambat mencerminkan tren jangka panjang lebih baik.

Ketika MA yang lebih cepat melintasi di atas MA yang lebih lambat dari bawah, itu menunjukkan harga jangka pendek telah mulai naik di atas tren jangka panjang, dan dengan demikian entri panjang dapat diambil.

Untuk menyaring sinyal palsu, strategi ini juga menggunakan out3 sebagai garis sinyal perdagangan, yang merupakan perbedaan rata antara MA yang lebih cepat dan titik tengah harga.

Secara khusus, variabel panjang memiliki nilai positif ketika out3 melintasi di atas dif, memberikan sinyal beli. variabel pendek memiliki nilai negatif ketika out3 melintasi di bawah dif, menghasilkan sinyal jual. strategi. entri entri panjang ketika sinyal panjang terjadi, dan strategi. close menutup panjang ketika sinyal pendek muncul.

Analisis Keuntungan

Ini adalah strategi yang sangat sederhana dan intuitif untuk mengikuti tren. Ini menggunakan persilangan dua MA dari periode yang berbeda untuk mengidentifikasi titik pembalikan tren, yang dapat lebih dapat diandalkan daripada satu sistem MA. Filter garis sinyal perdagangan juga membantu menghindari sinyal palsu di pasar bergolak sampai batas tertentu.

Dibandingkan dengan stop loss, ia mengadopsi pola pikir mengikuti tren untuk memaksimalkan keuntungan selama tren yang lebih lama tanpa dihentikan.

Strategi ini memiliki beberapa parameter dan mudah dipahami dan disesuaikan, membuatnya cocok sebagai strategi perdagangan algo pemula.

Risiko dan Peningkatan

Risiko terbesar dari strategi ini adalah periode MA yang dipilih dengan tidak benar yang menghasilkan sinyal yang buruk. Jika len1 terlalu panjang, pergerakan tren awal akan terlewatkan; jika terlalu pendek, whipsaws meningkat. Jika len2 terlalu panjang, penyesuaian posisi akan tertunda; jika terlalu pendek, mungkin terganggu oleh kebisingan pasar.

Parameter dapat dioptimalkan dengan mencoba nilai len1 dan len2 yang berbeda untuk menemukan kombinasi terbaik. Adaptive MA juga dapat diuji untuk mengubah periode secara dinamis. Filter juga dapat ditingkatkan untuk lebih mengurangi sinyal palsu.

Strategi mengikuti tren juga harus mengendalikan kerugian pada perdagangan tunggal, melalui stop loss atau ukuran posisi.

Kesimpulan

Strategi crossover MA ganda adalah tren utama yang mengikuti perwakilan. Sistem crossover MA ganda yang sederhana memberikan sinyal yang stabil, sementara filter membantu menghindari kebisingan. Dengan periode MA yang dioptimalkan, strategi ini dapat mencapai kinerja yang baik.


/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//by afrazium
//@version=3
strategy(title="SMA Diff strat", shorttitle="SMAD STR", overlay=false, initial_capital=1, precision=8, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, calc_on_order_fills= false, calc_on_every_tick=false, pyramiding=0)
len1 = input(50, minval=1, title="Length1"), len2 = input(100, minval=1, title="Length2"), smo = input(1, minval=1, title="Smoothing")
src = input(ohlc4, title="Source")

mid = src
expr1 = sma(src, len1), expr2 = sma(src, len2)
dif = (expr1 - expr2), out1 = (mid - expr1), out2 = (mid - expr2), out3 = sma(out1, smo)

long = crossover(out3, dif) ? out3 : na, short = crossunder(out3, dif) ? out3 : na

plot(out3, color=black, linewidth=2), hline(0)
clr = out2 >= out1 ? lime : red, plot(dif, color=clr, linewidth=2)
plot(long, title = 'Crossover', color = green, style = circles, linewidth=4), plot(short, title = 'Crossunder', color = red, style = circles, linewidth=4)

strategy.entry("buy", strategy.long, when=crossover(out1, dif))
strategy.close("buy", when=crossunder(out1, dif))

//plot(out2, color=blue, linewidth=2)
//A = plot(mid/10, color=red, linewidth=1, transp=100), B = plot(mid/20, color=red, linewidth=1, transp=100)
//C = plot(-mid/10, color=green, linewidth=1, transp=100), D = plot(-mid/20, color=green, linewidth=1, transp=100)
//fill(A, B, color=red), fill(C, D, color=green)



Lebih banyak