
Ini adalah strategi perdagangan berbalik berdasarkan indikator moving average ganda. Strategi ini menghasilkan sinyal perdagangan dengan menghitung moving average dari dua set parameter yang berbeda untuk menilai tren harga berdasarkan perubahan arahnya dan menetapkan parameter sensitivitas terhadap perubahan arah.
Strategi ini memungkinkan untuk memilih jenis moving average (misalnya SMA, EMA, dll), panjang dan sumber harga (misalnya harga close out, harga tipikal, dll). Setelah menghitung dua set moving average, menentukan arahnya dengan menentukan reaksi parameter.
Selain itu, strategi ini juga menetapkan arah perubahan dan menentukan kondisi kenaikan / penurunan yang berkelanjutan, untuk menghindari sinyal yang salah. Dan menampilkan status penurunan harga dengan warna yang berbeda.
Strategi movevg ganda ini dikombinasikan dengan garis cepat dan lambat yang ditetapkan dengan parameter yang berbeda, yang secara efektif dapat memfilter kebisingan pasar perdagangan gelombang dan mengidentifikasi tren yang lebih kuat. Dibandingkan dengan strategi movevg tunggal, ini mengurangi sinyal yang salah dan dapat masuk saat tren lebih jelas, sehingga mendapatkan tingkat kemenangan yang lebih tinggi.
Parameter reaksi sensitivitas memungkinkan strategi ini untuk beradaptasi secara fleksibel untuk berbagai siklus dan varietas. Proses strategi intuitif dan sederhana, mudah dipahami dan dioptimalkan.
Risiko terbesar dari strategi ini adalah kehilangan atau membangun posisi terbalik dengan melewatkan titik balik. Ini terkait dengan pengaturan reaksi parameter. Jika reaksi terlalu kecil, mudah untuk menghasilkan sinyal yang salah; Jika reaksi terlalu besar, mungkin untuk melewatkan titik masuk yang lebih baik.
Risiko lain adalah tidak dapat mengontrol kerugian secara efektif. Ketika harga berfluktuasi tajam, tidak dapat berhenti dengan cepat, menyebabkan kerugian berkembang. Ini perlu didukung dengan strategi stop loss untuk mengontrol.
Strategi optimasi ini berfokus pada pilihan reaksi parameter, jenis dan panjang rata-rata bergerak. Reaksi dapat ditambahkan sesuai untuk mengurangi sinyal yang salah. Parameter rata-rata bergerak dapat diuji berdasarkan periode dan varietas yang berbeda, memilih kombinasi yang menghasilkan sinyal terbaik.
Selain itu, kombinasi dengan indikator lain seperti RSI, KD dan lain-lain untuk mengkonfirmasi sinyal perdagangan juga merupakan ide optimasi. Atau menggunakan metode pembelajaran mesin untuk memilih parameter secara otomatis.
Strategi ini secara keseluruhan lebih sederhana dan praktis, dengan filter rata-rata bergerak ganda dan menghasilkan sinyal perdagangan, dapat secara efektif mengidentifikasi reversal tren, merupakan strategi pelacakan tren yang khas. Setelah kombinasi parameter yang dioptimalkan, kemampuan menangkap pasar yang baik dan kemampuan menahan posisi pasar akan ditingkatkan.
/*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)