
Strategi Moving Average Band adalah strategi pelacakan tren yang didasarkan pada beberapa Moving Average. Ini akan memantau rata-rata bergerak cepat dan rata-rata bergerak lambat secara bersamaan, menghasilkan sinyal perdagangan ketika harga menembus Moving Average Band. Strategi ini menggabungkan penilaian tren dan indikator overbought oversold untuk secara efektif menangkap tren garis tengah.
Strategi ini menggunakan 5 rata-rata bergerak cepat (line 5, 8, 13, 20, dan 30) dan 4 rata-rata bergerak lambat (line 45, 70, 105, dan 150), dengan garis cepat membentuk moving average internal, dan garis lambat membentuk moving average eksternal. Untuk menghasilkan sinyal perdagangan, harga perlu melewati 3 garis K secara berturut-turut, dan sebagian besar garis bergerak cepat juga terobosan secara sinkron.
Selain itu, strategi ini juga menilai tren jangka panjang. Hanya ketika harga berada di atas rata-rata bergerak 200 hari, sinyal beli akan dipertimbangkan. Sebaliknya, hanya jika harga jatuh di bawah rata-rata bergerak 200 hari, sinyal jual akan dipertimbangkan. Dengan menilai tren jangka panjang, Anda dapat menghindari pegangan selama periode penutupan.
Strategi ini memiliki beberapa keuntungan:
Desain moving average ganda, dapat menentukan arah tren secara akurat. Moving average band dalam dan luar digabungkan dengan garis rata-rata cepat dan lambat, untuk mengidentifikasi tren garis tengah dan panjang yang efektif.
Mekanisme continuous breakout dapat secara efektif memfilter false breakout. Pada saat yang sama, sebagian besar breakout linear cepat diperlukan untuk memastikan perubahan tren.
Pertimbangkan tren jangka panjang, hindari dipasangkan dalam penyesuaian. Berdasarkan penilaian garis waktu 200, hanya pertimbangkan posisi jika tren berbalik.
Menggabungkan trend tracking dan overbought oversold. Moving average sendiri memiliki fungsi trend tracking, dan digabungkan dengan indikator overbought oversold untuk menetapkan titik stop loss, dan mengendalikan risiko.
Strategi ini memiliki risiko utama sebagai berikut:
Risiko kegagalan penembusan. Strategi ini tidak dapat sepenuhnya menghindari terjadinya kerugian ketika harga mengalami penembusan palsu.
Risiko kerugian di bawah tren bergolak. Ketika pasar bergolak lama, titik-titik stop loss mungkin sering tertabrak, yang menyebabkan kerugian meningkat.
Parameter Optimisasi Risiko. Setting parameter moving average yang tidak tepat juga dapat menyebabkan sinyal perdagangan yang salah, sehingga meningkatkan kerugian.
Solusi yang sesuai:
Anda dapat menggunakan stop loss yang lebih longgar untuk memberi harga ruang yang cukup untuk bergerak. Atau Anda dapat menggunakan stop loss ljetrail untuk membuat garis stop loss bergerak.
Meningkatkan indikator penilaian tren, menghindari posisi yang tidak berorientasi pada saat gempa. Misalnya, filter dengan indikator seperti DMI, MACD.
Menggunakan metode retrospeksi historis dan optimasi parameter, memilih kombinasi parameter terbaik. Dalam disk nyata juga harus melacak efek parameter, melakukan optimasi dinamis.
Strategi ini dapat dioptimalkan dari beberapa dimensi:
Mengoptimalkan parameter moving average, memilih periode terbaik. Kombinasi parameter optimal dapat ditemukan dengan mengevaluasi rata-rata bergerak dari periode yang berbeda.
Tambah indikator penilaian tren untuk melakukan filter. Misalnya, indikator RSI menilai overbought oversold, Brinband menilai terobosan saluran, dll. Hindari posisi buta ketika tren tidak jelas.
Menggunakan Adaptive Moving Average. Mengoptimalkan parameter moving average secara real time sesuai dengan perubahan dan volatilitas pasar, sehingga lebih sesuai dengan kondisi pasar saat ini.
Menggabungkan model pembelajaran mesin untuk menilai probabilitas tren. Membangun model probabilitas untuk menilai probabilitas keberhasilan terobosan, membantu sistem pengambilan keputusan untuk menilai waktu masuk.
Optimalkan strategi stop loss agar stop loss lebih baik dalam melacak harga. Stop loss yang lebih cerdas, misalnya traillig stop loss atau stop loss otomatis.
Strategi Moving Average Band adalah salah satu strategi pelacakan tren yang lebih umum. Ini menggabungkan garis cepat dan lambat untuk menilai tren garis panjang dan menengah, dan mengatur mekanisme penyaringan yang terus menerus untuk memutuskan masuk. Strategi ini menggabungkan pelacakan tren dan penilaian overbought dan oversold, dengan optimasi parameter dan penguatan indikator, dapat meningkatkan efektivitas penggunaan lebih lanjut.
//@version=4
strategy(title="Moving Average Ribbon", shorttitle="MA Ribbon", overlay=true)
src = input(close, type=input.source, title="Source")
matype = input(title="Input one in lowercase: sma, ema, wma, trima, zlema, dema, tema, or hma", type=input.string, defval="trima")
// possible values: sma, ema, wma, trima, zlema, dema, tema, hma (hull ma)
trima(_src, _len) =>
sma(sma(_src, _len), _len)
hma(_src, _len) =>
wma(2 * wma(_src, _len / 2) - wma(_src, _len), round(sqrt(_len)))
dema(_src, _len) =>
2 * ema(_src, _len) - ema(ema(_src, _len), _len)
tema(_src, _len) =>
3 * ema(_src, _len) - 3 * ema(ema(_src, _len), _len) +
ema(ema(ema(_src, _len), _len), _len)
zlema(_src, _len) =>
ema(_src, _len) + ema(_src, _len) - ema(ema(_src, _len), _len)
ma(_src, _len) =>
hma__1 = hma(_src, _len)
ema_1 = ema(_src, _len)
sma_1 = sma(_src, _len)
wma_1 = wma(_src, _len)
trima__1 = trima(_src, _len)
zlema__1 = zlema(_src, _len)
dema__1 = dema(_src, _len)
tema__1 = tema(_src, _len)
matype == "hma" ? hma__1 : matype == "ema" ? ema_1 : matype == "sma" ? sma_1 :
matype == "wma" ? wma_1 : matype == "trima" ? trima__1 :
matype == "zlema" ? zlema__1 : matype == "dema" ? dema__1 : tema__1
ma05 = ma(src, 5)
ma08 = ma(src, 8)
ma13 = ma(src, 13)
ma20 = ma(src, 20)
ma30 = ma(src, 30)
ma45 = ma(src, 45)
ma70 = ma(src, 70)
ma105 = ma(src, 105)
ma150 = ma(src, 150)
ma200 = ma(src, 200)
maColor(ma, maRef) =>
if change(ma) <= 0 and ma05 < maRef
color.new(color.red, 20)
else
if change(ma) >= 0 and ma05 > maRef
color.new(color.navy, 20)
else
if change(ma) < 0 and ma05 > maRef
color.new(color.red, 20)
else
if change(ma) >= 0 and ma05 < maRef
color.new(color.navy, 20)
else
color.gray
aboveConfirmed(x,maRef)=>
above=true
for i=1 to x
if close[i]<maRef[i] and not (close[i]>ma200[i]*1.01) and not (ma05[i]>ma105[i]*1.015)
above:=false
above
aboveMost(x,len)=>
above=0
boolean=false
if close[len]>ma05[len]
above:=above+1
if close[len]>ma08[len]
above:=above+1
if close[len]>ma13[len]
above:=above+1
if close[len]>ma20[len]
above:=above+1
if close[len]>ma30[len]
above:=above+1
if close[len]>ma45[len]
above:=above+1
if close[len]>ma70[len]
above:=above+1
if close[len]>ma105[len]
above:=above+1
if close[len]>ma150[len]
above:=above+1
if close[len]>ma200[len]
above:=above+1
if(above>=x)
boolean:=true
boolean
belowMost(x,len)=>
above=0
boolean=false
if close[len]<ma05[len]
above:=above+1
if close[len]<ma08[len]
above:=above+1
if close[len]<ma13[len]
above:=above+1
if close[len]<ma20[len]
above:=above+1
if close[len]<ma30[len]
above:=above+1
if close[len]<ma45[len]
above:=above+1
if close[len]<ma70[len]
above:=above+1
if close[len]<ma105[len]
above:=above+1
if close[len]<ma150[len]
above:=above+1
if close[len]<ma200[len]
above:=above+1
if(above>=x)
boolean:=true
boolean
belowConfirmed(x,maRef)=>
below=true
for i=1 to x
if close[i]>maRef[i] and not (close[i]<maRef[i]*0.99) and not (ma05[i]<ma105[i]*0.985)
below:=false
below
//plotshape(aboveConfirmed(5,ma150),color=color.navy,location=location.abovebar,style=shape.triangleup,size=size.large,title="above",text="above")
plot(ma05, color=maColor(ma05, ma150), style=plot.style_line, title="MMA05", linewidth=2)
plot(ma08, color=maColor(ma08, ma150), style=plot.style_line, title="MMA08", linewidth=1)
plot(ma13, color=maColor(ma13, ma150), style=plot.style_line, title="MMA13", linewidth=1)
plot(ma20, color=maColor(ma20, ma150), style=plot.style_line, title="MMA20", linewidth=1)
plot(ma30, color=maColor(ma30, ma150), style=plot.style_line, title="MMA30", linewidth=1)
plot(ma45, color=maColor(ma45, ma200), style=plot.style_line, title="MMA45", linewidth=1)
plot(ma70, color=maColor(ma70, ma200), style=plot.style_line, title="MMA70", linewidth=2)
plot(ma105, color=maColor(ma105, ma200), style=plot.style_line, title="MMA105", linewidth=2)
plot(ma150, color=maColor(ma150, ma200), style=plot.style_line, title="MMA150", linewidth=3)
plot(ma200, color=maColor(ma200, ma200), style=plot.style_line, title="MM200", linewidth=3)
closeLong=belowMost(6,1) and belowMost(6,2) and belowMost(6,3)
closeShort=aboveMost(6,1) and aboveMost(6,2) and aboveMost(6,3)
isAbove=aboveConfirmed(5,ma200)
strategy.entry("short", false, when=belowConfirmed(3,ma200) and belowMost(8,1) and belowMost(8,2) and belowMost(8,3))
strategy.entry("long", true, when=aboveConfirmed(3,ma200) and aboveMost(8,1) and aboveMost(8,2) and aboveMost(8,3))
strategy.close("long",when=closeLong)
strategy.close("short",when=closeShort)