Strategi Persilangan Purata Pergerakan Biasa


Tarikh penciptaan: 2023-11-03 17:23:54 Akhirnya diubah suai: 2023-11-03 17:23:54
Salin: 0 Bilangan klik: 707
1
fokus pada
1617
Pengikut

Strategi Persilangan Purata Pergerakan Biasa

Gambaran keseluruhan

Strategi bergerak rata-rata persilangan adalah strategi analisis teknikal yang sangat klasik dan biasa digunakan. Gagasan utama strategi ini adalah menggunakan persilangan antara purata bergerak dari tempoh yang berbeza sebagai isyarat membeli dan menjual. Isyarat membeli dihasilkan apabila purata bergerak jangka pendek melintasi rata-rata bergerak jangka panjang dari bawah; Isyarat jual dihasilkan apabila purata bergerak jangka pendek melintasi rata-rata bergerak jangka panjang dari atas ke bawah.

Prinsip Strategi

Strategi ini menggunakan input jenis purata bergerak input (SMA, EMA, WMA, RMA) dan panjang kitaran, serta jangka masa pengukuran semula.

Mengira purata bergerak pelbagai jenis dalam fungsi varian. Purata bergerak yang dikira disimpan oleh ma.

Apabila harga tutup di atas Ma, ia akan menghasilkan isyarat beli; apabila harga tutup di bawah Ma, ia akan menghasilkan isyarat jual.

Untuk menetapkan hentian, rata-rata amplitudo riak sebenar untuk 14 kitaran dikira melalui atr. Dengan titik melintasi sebagai rujukan, ke atas atau ke bawah ditambah pengurangan 2 kaliatr sebagai julat hentian.

Logik masuk dan keluar adalah seperti berikut:

Masuk beramai-ramai: dekat dengan ma dan dalam masa pengiraan semula, titik henti adalah titik masuk Permulaan berbilang mata: tutup apabila ma dikurangkan dua kali lipat dari at, atau harga tertinggi melebihi titik masuk apabila tutup ditambah dua kali lipat dari at dan berhenti Masuk kosong: dekat dengan ma dan dalam masa pengiraan semula, titik henti adalah titik masuk Permulaan kosong: tutup dengan memakai ma ditambah 2 kaliatr ketika berhenti berdagang, atau harga terendah di bawah titik masuk tutup tolak 2 kaliatr ketika berhenti berdagang

Kelebihan Strategik

  1. Strategi mudah difahami, mudah difahami dan mudah dilaksanakan
  2. Aplikasi yang luas, sesuai untuk pelbagai pasaran dan varieti
  3. Tetapan parameter fleksibel, jenis dan tempoh purata bergerak boleh disesuaikan
  4. Menggunakan ATR untuk mengawal risiko

Risiko Strategik

  1. Strategi purata bergerak mudah menghasilkan perdagangan yang kerap dan berhenti kehilangan, mengurangkan ruang untuk keuntungan
  2. Rata-rata bergerak lebih cenderung untuk memberi isyarat yang salah dalam keadaan yang bergolak
  3. Julat penangguhan ATR mungkin terlalu besar atau terlalu kecil untuk mencapai kesan yang mencegah kerugian besar

Mengambil kira risiko, anda boleh mengoptimumkan:

  1. Penyesuaian purata bergerak berkala, menggunakan purata berkala yang lebih lama
  2. Menambah syarat penapisan untuk mengelakkan perdagangan yang kerap dalam keadaan yang tidak menentu
  3. Mengoptimumkan parameter ATR atau menggunakan cara lain untuk menghentikan kerugian
  4. Kaedah untuk mengesan trend besar dengan menggunakan indikator trend, dan mengelakkan operasi berlawanan arah

Arah pengoptimuman strategi

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Menambah syarat penapisan, seperti jumlah transaksi, kadar turun naik, dan lain-lain, untuk mengelakkan penembusan yang tidak rasional
  2. Menggunakan ATR Stop Adaptif, yang membolehkan Stop Range berubah mengikut turun naik pasaran
  3. Menggabungkan Stoch, RSI dan lain-lain untuk membuat pengesahan pelbagai faktor untuk meningkatkan kualiti isyarat
  4. Meningkatkan penilaian trend dan mengelakkan operasi berlawanan arah
  5. Menggunakan masa EXIT untuk mengelakkan kerugian jangka panjang
  6. Mengoptimumkan parameter kitaran purata bergerak untuk mencari kombinasi parameter terbaik

ringkaskan

Strategi penyambungan purata bergerak adalah strategi analisis teknikal yang sangat tipikal dan biasa digunakan. Gagasan teras strategi ini sederhana, mudah dilaksanakan, sesuai untuk pelbagai pasaran, dan merupakan salah satu strategi permulaan untuk perdagangan kuantitatif. Tetapi strategi ini juga mempunyai beberapa masalah, seperti menghasilkan isyarat yang kerap, mudah berhenti, dan sebagainya. Dengan pengoptimuman yang sesuai, prestasi strategi ini dapat ditingkatkan secara besar-besaran.

Kod 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] )