Strategi perdagangan pembalikan rata-rata bergerak ganda

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

img

Gambaran umum

Ini adalah strategi perdagangan pembalikan berdasarkan indikator rata-rata bergerak ganda. Dengan menghitung dua kelompok rata-rata bergerak dengan pengaturan parameter yang berbeda dan menilai tren harga sesuai dengan perubahan arah mereka, sinyal perdagangan dapat dihasilkan dengan mengatur parameter sensitivitas untuk perubahan arah.

Prinsip-prinsip

Indikator inti dari strategi ini adalah rata-rata bergerak ganda. Strategi ini memungkinkan untuk memilih jenis (SMA, EMA, dll.), panjang dan sumber harga (harga dekat, harga khas, dll.) dari rata-rata bergerak. Setelah menghitung dua kelompok rata-rata bergerak, arah mereka ditentukan dengan mendefinisikan parameter reaksi. Sinyal beli dihasilkan ketika garis cepat melintasi di atas garis lambat, dan sinyal jual dihasilkan ketika melintasi di bawah. Parameter reaksi digunakan untuk menyesuaikan sensitivitas untuk mengidentifikasi titik balik.

Selain itu, strategi ini juga menetapkan kondisi untuk menentukan perubahan arah dan terus naik / turun untuk menghindari menghasilkan sinyal yang salah. dan memvisualisasikan kenaikan dan penurunan harga dalam warna yang berbeda. ketika harga terus naik, garis movavg ditampilkan dengan warna hijau, dan merah ketika harga turun.

Analisis Keuntungan

Strategi dual movavg menggabungkan garis cepat dan lambat dengan pengaturan parameter yang berbeda, yang secara efektif dapat menyaring kebisingan di pasar perdagangan dan mengidentifikasi tren yang lebih kuat.

Parameter reaksi memungkinkan strategi untuk fleksibel dan dapat disesuaikan dengan siklus dan varietas yang berbeda.

Analisis Risiko

Risiko terbesar dari strategi ini adalah kehilangan titik balik dan kehilangan uang atau mengambil posisi terbalik. Ini berkaitan dengan pengaturan parameter reaksi. Jika reaksi terlalu kecil, sinyal yang salah cenderung terjadi. Jika reaksi terlalu besar, mungkin kehilangan titik masuk yang lebih baik.

Risiko lain adalah ketidakmampuan untuk mengontrol kerugian secara efektif. Ketika harga berfluktuasi dengan ganas, tidak dapat dengan cepat menghentikan kerugian, yang menyebabkan kerugian yang diperbesar. Ini membutuhkan penggunaan strategi stop-loss untuk mengendalikan risiko.

Arahan Optimasi

Arah pengoptimalan utama dari strategi ini berfokus pada pemilihan parameter reaksi, jenis dan panjang rata-rata bergerak. Meningkatkan reaksi dengan tepat dapat mengurangi sinyal yang salah. Parameter rata-rata bergerak dapat diuji sesuai dengan siklus dan varietas yang berbeda untuk memilih kombinasi terbaik untuk menghasilkan sinyal.

Selain itu, mengkonfirmasi sinyal perdagangan dengan indikator tambahan lainnya seperti RSI dan KD juga merupakan ide optimasi.

Ringkasan

Secara keseluruhan, strategi ini relatif sederhana dan praktis. Dengan menyaring dengan rata-rata bergerak ganda dan menghasilkan sinyal perdagangan, ini dapat secara efektif mengidentifikasi pembalikan tren dan merupakan strategi trend-mengikuti yang khas. Setelah mengoptimalkan portofolio parameter, kemampuannya untuk menangkap tren dan memegang posisi terhadap pasar akan ditingkatkan. Menggunakannya dengan mekanisme stop loss dan manajemen posisi bekerja 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 banyak