Tren Mengikuti Strategi Berdasarkan Rata-rata Bergerak Crossover

Penulis:ChaoZhang, Tanggal: 2024-01-31 15:17:31
Tag:

img

Gambaran umum

Strategi ini menghasilkan sinyal perdagangan dengan menghitung berbagai jenis moving average (Simple Moving Average SMA, Exponential Moving Average EMA, Hull Moving Average HMA dan Weighted Moving Average VWMA) dan mendeteksi titik persimpangan di antara mereka, untuk menentukan tren pasar dan mengikutinya.

Logika Strategi

Ide inti dari strategi ini adalah untuk menilai tren pasar dengan membandingkan dua rata-rata bergerak. Secara khusus, memungkinkan untuk mengkonfigurasi dua MA dengan jenis dan panjang yang berbeda melalui parameter input. MA pertama memiliki periode yang lebih lama untuk mewakili tren utama, sementara MA kedua memiliki periode yang lebih pendek untuk tren jangka pendek saat ini.

Ketika MA jangka pendek melintasi MA jangka panjang dari bawah, itu menandakan bahwa tren jangka pendek menguat dan pasar memasuki tren naik. Dengan demikian sinyal beli dihasilkan pada titik persimpangan ini. Sebaliknya, ketika MA jangka pendek melintasi di bawah MA jangka panjang, itu menunjukkan tren jangka pendek melemah dan pasar berbalik ke bawah. Dengan demikian sinyal jual dihasilkan kemudian.

Dengan mendeteksi persilangan MA tersebut, strategi ini mengikuti tren pasar untuk perdagangan.

Keuntungan

  • Menggunakan metode silang MA klasik dan praktis untuk menentukan tren utama
  • Mendukung kombinasi dari berbagai jenis MA, memberikan fleksibilitas
  • Logika yang sederhana dan jelas, mudah dimengerti dan otomatis
  • Parameter yang dapat dikonfigurasi beradaptasi dengan kondisi pasar yang berbeda

Analisis Risiko

  • MAs memiliki efek keterlambatan, sinyal dapat datang pada atau dekat titik balik ketika tindakan harga sudah terjadi
  • Penghakiman tren mungkin tidak akurat, menyebabkan kerugian yang tidak perlu
  • Hasil bervariasi secara signifikan dengan pengaturan parameter MA yang berbeda

Solusi:

  • Gunakan periode MA yang lebih pendek untuk sensitivitas yang lebih baik
  • Tambahkan filter lain untuk verifikasi silang untuk menghindari kesalahan
  • Metode pengoptimalan parameter misalnya gaya kasar, pembelajaran mesin, algoritma genetik
  • Kontrol posisi dimensioning dan stop loss dengan benar

Arah Peningkatan

  • Tambahkan indikator lain sebagai filter untuk meningkatkan akurasi
  • Parameter MA yang disesuaikan secara otomatis berdasarkan perubahan kondisi pasar
  • Menggunakan pembelajaran mesin untuk optimasi parameter otomatis
  • Memperbaiki strategi stop loss

Kesimpulan

Strategi ini didasarkan pada ide klasik menggunakan MA crossover untuk deteksi tren utama. Dengan kombinasi MA yang fleksibel, itu sederhana untuk diimplementasikan dan cocok untuk otomatisasi perdagangan algoritmik. Secara keseluruhan itu cukup praktis tetapi meninggalkan ruang untuk peningkatan seperti penyesuaian parameter, filter tambahan dll untuk meningkatkan kinerja.


/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy", overlay=true)
src = input(close, title="Source")

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(25, title="1st MA Length")
type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA", "VWMA"])

ma2 = input(7, title="2nd MA Length")
type2 = input("HMA", "2nd MA Type", options=["SMA", "EMA", "HMA", "VWMA"])

f_hma(_src, _length)=>
    _return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length)))

price1 = if (type1 == "SMA")
    sma(price, ma1)
else
    if (type1 == "EMA")
        ema(price, ma1)
    else
        if (type1 == "VWMA")
            vwma(price, ma1)
        else
            f_hma(price, ma1)
    
price2 = if (type2 == "SMA")
    sma(price, ma2)
else
    if (type2 == "EMA")
        ema(price, ma2)
    else
        if (type2 == "VWMA")
            vwma(price, ma2)
        else
            f_hma(price, ma2)


//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line,  title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)


longCondition = crossover(price1, price2)
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(price1, price2)
if (shortCondition)
    strategy.entry("Short", strategy.short)


Lebih banyak