Strategi Dagangan Peralihan Purata Bergerak Berganda

Penulis:ChaoZhang, Tarikh: 2023-12-04 16:39:13
Tag:

img

Ringkasan

Ini adalah strategi perdagangan pembalikan berdasarkan penunjuk purata bergerak berganda. Dengan mengira dua kumpulan purata bergerak dengan tetapan parameter yang berbeza dan menilai trend harga mengikut perubahan arah mereka, isyarat perdagangan boleh dihasilkan dengan menetapkan parameter kepekaan untuk perubahan arah.

Prinsip-prinsip

Indikator teras strategi ini adalah purata bergerak berganda. Strategi ini membolehkan memilih jenis (SMA, EMA, dan lain-lain), panjang dan sumber harga (harga dekat, harga biasa, dan lain-lain) purata bergerak. Selepas mengira dua kumpulan purata bergerak, arah mereka ditentukan dengan menentukan parameter tindak balas. Isyarat beli dihasilkan apabila garis cepat melintasi di atas garis perlahan, dan isyarat jual dihasilkan apabila melintasi di bawah. Parameter tindak balas digunakan untuk menyesuaikan kepekaan untuk mengenal pasti titik perubahan.

Di samping itu, strategi ini juga menetapkan syarat untuk menentukan perubahan arah dan terus meningkat / jatuh untuk mengelakkan menghasilkan isyarat yang salah. dan ia memvisualisasikan kenaikan dan kejatuhan harga dalam warna yang berbeza.

Analisis Kelebihan

Strategi Movavg berganda menggabungkan garis cepat dan perlahan dengan tetapan parameter yang berbeza, yang dapat menapis bunyi bising di pasaran perdagangan dengan berkesan dan mengenal pasti trend yang lebih kuat.

Parameter tindak balas membolehkan strategi menjadi fleksibel dan dapat disesuaikan dengan kitaran dan jenis yang berbeza.

Analisis Risiko

Risiko terbesar strategi ini adalah kehilangan titik perubahan dan kehilangan wang atau mengambil kedudukan terbalik. Ini berkaitan dengan tetapan parameter tindak balas. Jika tindak balas terlalu kecil, isyarat yang salah cenderung berlaku. Jika tindak balas terlalu besar, ia mungkin terlepas titik masuk yang lebih baik.

Risiko lain adalah ketidakupayaan untuk mengawal kerugian dengan berkesan. Apabila harga turun naik dengan ganas, ia tidak dapat menghentikan kerugian dengan cepat, yang membawa kepada kerugian yang lebih besar. Ini memerlukan penggunaan strategi stop-loss untuk mengawal risiko.

Arahan pengoptimuman

Arah pengoptimuman utama strategi ini memberi tumpuan kepada pemilihan parameter tindak balas, jenis dan panjang purata bergerak. Meningkatkan tindak balas dengan betul dapat mengurangkan isyarat yang salah. Parameter purata bergerak boleh diuji mengikut kitaran dan jenis yang berbeza untuk memilih kombinasi terbaik untuk menghasilkan isyarat.

Di samping itu, mengesahkan isyarat perdagangan dengan penunjuk tambahan lain seperti RSI dan KD juga merupakan idea pengoptimuman.

Ringkasan

Secara keseluruhan, strategi ini agak mudah dan praktikal. Dengan menapis dengan purata bergerak berganda dan menghasilkan isyarat perdagangan, ia dapat mengenal pasti pembalikan trend dengan berkesan dan merupakan strategi trend berikut yang tipikal. Selepas mengoptimumkan portfolio parameter, keupayaannya untuk menangkap trend dan memegang kedudukan terhadap pasaran akan bertambah baik. Menggunakannya dengan mekanisme stop loss dan pengurusan kedudukan berfungsi dengan lebih baik.


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

//@version=3
strategy(shorttitle="MA_color strategy", title="Moving Average Color", overlay=true)

// === INPUTS

ma_type   = input(defval="HullMA", title="MA Type: ", options=["SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "ZEMA", "TMA", "SSMA"])
ma_len    = input(defval=32, title="MA Lenght", minval=1)
ma_src    = input(close, title="MA Source")
reaction  = input(defval=2, title="MA Reaction", minval=1)

// SuperSmoother filter
// © 2013  John F. Ehlers
variant_supersmoother(src,len) =>
    a1 = exp(-1.414*3.14159 / len)
    b1 = 2*a1*cos(1.414*3.14159 / len)
    c2 = b1
    c3 = (-a1)*a1
    c1 = 1 - c2 - c3
    v9 = 0.0
    v9 := c1*(src + nz(src[1])) / 2 + c2*nz(v9[1]) + c3*nz(v9[2])
    v9
    
variant_smoothed(src,len) =>
    v5 = 0.0
    v5 := na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len
    v5

variant_zerolagema(src,len) =>
    ema1 = ema(src, len)
    ema2 = ema(ema1, len)
    v10 = ema1+(ema1-ema2)
    v10
    
variant_doubleema(src,len) =>
    v2 = ema(src, len)
    v6 = 2 * v2 - ema(v2, len)
    v6

variant_tripleema(src,len) =>
    v2 = ema(src, len)
    v7 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len)              
    v7
    
variant(type, src, len) =>
    type=="EMA"     ? ema(src,len) : 
      type=="WMA"   ? wma(src,len): 
      type=="VWMA"  ? vwma(src,len) : 
      type=="SMMA"  ? variant_smoothed(src,len) : 
      type=="DEMA"  ? variant_doubleema(src,len): 
      type=="TEMA"  ? variant_tripleema(src,len): 
      type=="HullMA"? wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len))) :
      type=="SSMA"  ? variant_supersmoother(src,len) : 
      type=="ZEMA"  ? variant_zerolagema(src,len) : 
      type=="TMA"   ? sma(sma(src,len),len) : sma(src,len)


// === Moving Average
ma_series = variant(ma_type,ma_src,ma_len)

direction = 0
direction := rising(ma_series,reaction) ? 1 : falling(ma_series,reaction) ? -1 : nz(direction[1])
change_direction= change(direction,1)
change_direction1= change(direction,1)

pcol = direction>0 ? lime : direction<0 ? red : na
plot(ma_series, color=pcol,style=line,join=true,linewidth=3,transp=10,title="MA PLOT")

/////// Alerts ///////

alertcondition(change_direction,title="Change Direction MA",message="Change Direction MA")


longCondition = direction>0
shortCondition = direction<0
if (longCondition)
    strategy.entry("BUY", strategy.long)
if (shortCondition)
    strategy.entry("SELL", strategy.short)



Lebih lanjut