Strategi Scalping Crossover dengan Rata-rata Bergerak Ganda

Penulis:ChaoZhang, Tanggal: 2023-10-30 11:19:48
Tag:

img

Gambaran umum

Dual Moving Average Crossover adalah strategi scalping yang sederhana dan efektif yang menggunakan sinyal crossover antara harga dan moving average sebagai sinyal masuk dan keluar untuk menangkap pergerakan tren jangka pendek.

Logika Strategi

Strategi ini menggunakan dua rata-rata bergerak dari periode yang berbeda - garis MA jangka pendek dan garis MA jangka panjang. Ini menghasilkan sinyal beli ketika MA jangka pendek melintasi di atas MA jangka panjang dari bawah. Sinyal jual dihasilkan ketika MA jangka pendek melintasi di bawah MA jangka panjang dari atas.

Strategi ini pertama-tama mendefinisikan variabel length untuk menentukan periode garis MA yang lebih panjang sebagai 50. Kemudian mendefinisikan price sebagai harga penutupan dan menghitung nilai MA panjang 50 dan menyimpannya dalam variabel ma. Selanjutnya mendefinisikan bcond untuk memeriksa apakah harga di atas nilai ma. Jika ya, bcount ditingkatkan dengan 1, jika tidak disetel kembali menjadi 0. Ketika bcond memicu confirmBars berkali-kali berturut-turut (default 2), sinyal beli dihasilkan. Sinyal jual dihasilkan dengan cara yang sama ketika harga turun di bawah ma.

Untuk menyaring beberapa sinyal yang tidak valid, filter tambahan seperti clc, clc0 dan clc1 ditambahkan yang memeriksa hubungan harga antara bilah saat ini dan sebelumnya.

Akhirnya, posisi yang ada ditutup ketika harga melintasi garis MA secara terbalik.

Keuntungan

  • Logika sederhana, mudah dipahami dan diterapkan.
  • Menangkap tren jangka pendek secara efektif menggunakan sistem MA.
  • Filter tambahan mengurangi gangguan dari sinyal yang tidak valid.
  • Mekanisme stop loss tetap mengontrol kerugian pada perdagangan tunggal.

Risiko

  • Cenderung untuk whipsaws di berbagai pasar, yang mengarah pada biaya tambahan.
  • Parameter tetap seperti periode MA mungkin tidak sesuai dengan semua kondisi pasar.
  • Stop loss tetap dapat keluar lebih awal dalam pergerakan tren yang kuat di luar level stop.

Risiko dapat dikurangi dengan menggunakan periode MA dinamis berdasarkan volatilitas, trailing stop atau stop persentase, dll.

Peningkatan

Strategi ini dapat ditingkatkan dengan beberapa cara:

  1. Mengoptimalkan parameter MA secara dinamis berdasarkan volatilitas.

  2. Tambahkan filter tambahan seperti lonjakan volume untuk meningkatkan kualitas sinyal.

  3. Gunakan stop floating atau persentase untuk mengurangi stop out prematur.

  4. Gabungkan dengan indikator lain seperti MACD, RSI untuk validasi multi-kondisi.

  5. Tambahkan manajemen risiko otomatis seperti ukuran posisi dinamis untuk mengendalikan kerugian per perdagangan.

  6. Gunakan pembelajaran mesin untuk model generasi sinyal yang lebih akurat.

Kesimpulan

Strategi crossover MA ganda adalah sistem yang efektif untuk perdagangan jangka pendek. Parameter penyesuaian yang halus, mengelola risiko dan menggabungkan dengan alat lain dapat lebih meningkatkan profitabilitasnya. Secara keseluruhan mudah dipahami dan diterapkan untuk scalping gerakan intraday yang lebih kecil.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MovingAvg Cross", overlay=true)
length = input(50)
confirmBars = input(2)
price = close

ma = sma(price, length)

bcond = price > ma

bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0

clc=close[0]>close[1]
clc0=close[0]>open[0]
clc1=close[1]>open[1]

if clc and clc0 and clc1 and (bcount == confirmBars)
    strategy.entry("buy", strategy.long)


scond = price < ma
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0

csc=close[0]<close[1]
csc0=close[0]<open[0]
csc1=close[1]<open[1]

if csc and csc0 and csc1 and (scount == confirmBars)
    strategy.entry("sell", strategy.short)

strategy.close("buy", when=scond)
strategy.close("sell",when=bcond)
    
plot(ma, color=color.red)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Lebih banyak