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.
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.
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.
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.
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.
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)