Strategi Crossover Moving Average Umum


Tanggal Pembuatan: 2023-11-03 17:23:54 Akhirnya memodifikasi: 2023-11-03 17:23:54
menyalin: 0 Jumlah klik: 707
1
fokus pada
1617
Pengikut

Strategi Crossover Moving Average Umum

Ringkasan

Strategi Moving Average Crossover adalah strategi analisis teknis yang sangat klasik dan umum digunakan. Gagasan inti dari strategi ini adalah memanfaatkan persilangan antara rata-rata bergerak dari periode yang berbeda sebagai sinyal jual beli.

Prinsip Strategi

Strategi ini menginput jenis moving average (SMA, EMA, WMA, RMA) dan durasi periode, serta rentang waktu yang diperhitungkan.

Berbagai jenis moving average dihitung dalam fungsi varian. Moving average yang dihitung disimpan oleh variabel ma.

Ketika harga close berada di atas ma, maka akan muncul sinyal buy; ketika harga close berada di bawah ma, maka akan muncul sinyal sell.

Untuk mengatur stop loss, perhitungkan amplitudo rata-rata fluktuasi nyata selama 14 siklus dengan atr. Dengan titik transit sebagai referensi, naik atau turun ditambah 2 kali lipat atr sebagai batas stop loss.

Logika masuk dan keluar adalah sebagai berikut:

Multi head entry: close di atas ma dan dalam waktu pelacakan, stop loss adalah entry point close Pertandingan multi-head: close di bawah ma minus 2 kaliatr untuk stop loss, atau harga tertinggi di atas entry point close ditambah 2 kaliatr untuk stop loss Masuk kosong: close di bawah ma dan dalam waktu pengetesan, stop loss adalah titik masuk close Keluar kosong: close di atas memakai ma ditambah 2 kaliatr saat stop loss keluar, atau harga minimum di bawah titik masuk close dikurangi 2 kaliatr saat stop stop keluar

Keunggulan Strategis

  1. Strategi yang sederhana, jelas, mudah dipahami dan diterapkan
  2. Aplikasi luas, cocok untuk berbagai pasar dan varietas
  3. Pengaturan parameter yang fleksibel, jenis rata-rata bergerak dan periodik yang dapat disesuaikan
  4. Menggunakan ATR Stop Loss untuk Mengontrol Risiko

Risiko Strategis

  1. Strategi Moving Average mudah menghasilkan perdagangan dan stop loss yang sering, mengurangi ruang untuk keuntungan
  2. Rata-rata bergerak lebih mungkin untuk menghasilkan sinyal yang menyesatkan dalam situasi yang sangat bergejolak
  3. ATR mungkin terlalu besar atau terlalu kecil untuk mencegah kerugian besar

Ada beberapa cara untuk mengoptimalkan risiko:

  1. Periode rata-rata bergerak disesuaikan dengan periode rata-rata yang lebih panjang
  2. Meningkatkan kondisi penyaringan untuk menghindari transaksi yang sering terjadi dalam situasi yang tidak stabil
  3. Optimalkan parameter ATR atau gunakan metode stop loss lainnya
  4. Menggunakan indikator tren untuk mengidentifikasi tren besar dan menghindari operasi berlawanan

Arah optimasi strategi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Menambahkan kondisi penyaringan seperti volume transaksi, volatilitas, dan lain-lain untuk menghindari terobosan yang tidak rasional
  2. Adaptasi Stop Loss ATR yang memungkinkan stop loss untuk berubah seiring dengan volatilitas pasar
  3. Tergabung dengan indikator Stoch, RSI dan lain-lain untuk melakukan verifikasi multi-faktor untuk meningkatkan kualitas sinyal
  4. Meningkatkan penilaian tren, menghindari operasi kontra
  5. Menggunakan waktu EXIT untuk menghindari kerugian jangka panjang
  6. Mengoptimalkan parameter periodik moving average untuk mencari kombinasi parameter yang optimal

Meringkaskan

Strategi moving average crossover adalah strategi analisis teknis yang sangat khas dan umum digunakan. Strategi inti yang sederhana, mudah diimplementasikan, dan berlaku untuk berbagai pasar, adalah salah satu strategi masuk untuk perdagangan kuantitatif. Tetapi strategi ini juga memiliki beberapa masalah, seperti menghasilkan sinyal yang sering, mudah berhenti, dll. Dengan pengoptimalan yang tepat, kinerja strategi ini dapat ditingkatkan secara signifikan.

Kode Sumber Strategi
/*backtest
start: 2023-10-03 00:00:00
end: 2023-11-02 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MA Cross Strategy", overlay=true,commission_value = 0.1)

type = input(defval = "WMA", title = "MA Type: ", options=["RMA", "SMA", "EMA", "WMA"])

length = input(28)
source = close



// === INPUT BACKTEST RANGE ===
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2000, title = "From Year", minval = 2000)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(9999, 1, 1, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"



variant(type, src, len) =>
    v1 = sma(src, len)                                                  // Simple
    v2 = ema(src, len)                                                  // Exponential
    v5 = wma(src, len)                                                  // Weighted
    v7 = rma(src, len)                                                  // Smoothed
    type=="EMA"?v2 : type=="WMA"?v5 : type=="RMA"?v7 : v1
ma = variant(type,source, length)


atr = security(syminfo.tickerid, "D", atr(14))

range = valuewhen(cross(close,ma), (atr*2), na)

ep = valuewhen(cross(close,ma), close, na)

plot(ma,color=ma>ma[1]?color.blue:color.red,transp=0,linewidth=1)
plot(ep,color=#2196f3,transp=100,trackprice=true, offset=-9999)
plot(ep+range,color=#2196f3,transp=100,trackprice=true, offset=-9999)
plot(ep-range,color=#2196f3,transp=100,trackprice=true, offset=-9999)

strategy.entry("Long Entry", true, when = crossover(close,ma)  and window() , stop  = ep ) 
strategy.exit("Long Exit", "Long Entry", stop  = ep-range) 
strategy.exit("Long Exit", "Long Entry", when = high > ep+range ,stop = ep[1] ) 

strategy.entry("Short Entry", false, when = crossunder(close,ma)  and window() , stop  = ep ) 
strategy.exit("Short Exit", "Short Entry", stop  = ep+range) 
strategy.exit("Short Exit", "Short Entry", when = low < ep-range ,stop = ep[1] )