Strategi Crossover Purata Bergerak

Penulis:ChaoZhang, Tarikh: 2023-11-03 17:23:54
Tag:

img

Ringkasan

Strategi crossover purata bergerak adalah strategi analisis teknikal yang sangat klasik dan biasa digunakan. Idea teras strategi ini adalah menggunakan crossover antara purata bergerak dari tempoh yang berbeza sebagai isyarat perdagangan. Apabila purata bergerak jangka pendek melintasi di atas purata bergerak jangka panjang dari bawah, isyarat beli dihasilkan. Apabila purata bergerak jangka pendek melintasi di bawah purata bergerak jangka panjang dari atas, isyarat jual dihasilkan.

Logika Strategi

Strategi ini menggunakan input untuk menetapkan jenis (SMA, EMA, WMA, RMA) dan tempoh purata bergerak, serta julat masa backtesting.

Pelbagai jenis purata bergerak dikira dalam fungsi varian. purata bergerak dikira disimpan dalam pembolehubah ma.

Apabila harga penutupan melintasi di atas ma, isyarat beli dihasilkan. Apabila harga penutupan melintasi di bawah ma, isyarat jual dihasilkan.

Untuk menetapkan stop loss, julat sebenar purata 14 tempoh atr dikira. Ambil titik persilangan sebagai rujukan, tambah atau tolak 2 kali atr sebagai julat stop loss.

Logik masuk dan keluar khusus adalah seperti berikut:

Masuk panjang: dekat melintasi di atas ma dan dalam julat masa backtest, titik stop loss adalah titik masuk dekat
Keluar panjang: penutupan melintasi di bawah ma tolak 2 kali atr untuk keluar stop loss atau harga tertinggi melebihi titik masuk tutup ditambah 2 kali atr untuk keluar mengambil keuntungan

Pendaftaran pendek: dekat melintasi di bawah ma dan dalam julat masa backtest, titik stop loss adalah titik kemasukan dekat
Keluar pendek: penutupan melintasi di atas ma ditambah 2 kali atr untuk keluar stop loss atau harga terendah yang lebih rendah daripada titik masuk tutup tolak 2 kali atr untuk keluar mengambil keuntungan

Kelebihan Strategi

  1. Idea strategi adalah mudah dan jelas, mudah difahami dan dilaksanakan
  2. Digunakan secara meluas, sesuai untuk pasaran dan produk yang berbeza
  3. Tetapan parameter yang fleksibel, jenis dan tempoh purata bergerak yang boleh diselaraskan
  4. Menggunakan ATR stop loss untuk membantu mengawal risiko

Risiko Strategi

  1. Strategi purata bergerak cenderung menghasilkan perdagangan yang kerap dan menghentikan kerugian, mengurangkan potensi keuntungan
  2. Dalam pasaran yang sangat tidak menentu, purata bergerak boleh menghasilkan isyarat yang mengelirukan
  3. Julat kehilangan henti ATR boleh terlalu luas atau terlalu sempit, gagal untuk mengelakkan kerugian besar

Untuk menangani risiko, pengoptimuman boleh dibuat dalam aspek berikut:

  1. Sesuaikan tempoh purata bergerak, gunakan purata bergerak jangka panjang
  2. Tambah keadaan penapis untuk mengelakkan perdagangan yang kerap di pasaran yang tidak menentu
  3. Mengoptimumkan parameter ATR atau menggunakan kaedah stop loss yang lain
  4. Gabungkan penunjuk trend untuk menentukan trend keseluruhan, elakkan perdagangan kontra-trend

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Tambah keadaan penapis seperti jumlah, turun naik untuk mengelakkan pecah tidak rasional
  2. Gunakan stop loss ATR adaptif supaya julat stop loss berubah dengan turun naik pasaran
  3. Menggabungkan Stoch, RSI dan penunjuk lain untuk pengesahan pelbagai faktor untuk meningkatkan kualiti isyarat
  4. Tambah penentuan trend untuk mengelakkan perdagangan kontra-trend
  5. Gunakan masa keluar untuk mengelakkan memegang pecundang terlalu lama
  6. Mengoptimumkan parameter tempoh purata bergerak untuk mencari kombinasi parameter terbaik

Ringkasan

Strategi crossover purata bergerak adalah strategi analisis teknikal yang sangat tipikal dan biasa digunakan. Idea teras strategi adalah mudah dan mudah dilaksanakan, sesuai untuk pelbagai pasaran, dan merupakan salah satu strategi perdagangan kuantiti peringkat kemasukan. Walau bagaimanapun, strategi ini juga mempunyai beberapa masalah seperti menghasilkan isyarat yang kerap dan cenderung untuk menghentikan kerugian. Dengan pengoptimuman yang betul, prestasi dapat ditingkatkan dengan besar. Secara keseluruhan, strategi crossover purata bergerak menyediakan rangka kerja yang sangat baik untuk pembangunan strategi dan merupakan landasan pembelajaran strategi perdagangan kuantitatif.


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


Lebih lanjut