Analisis Strategi EMA Ganda

Penulis:ChaoZhang, Tanggal: 2024-02-28 18:07:59
Tag:

img

Gambaran umum

Strategi EMA ganda adalah strategi mengikuti tren yang mengidentifikasi arah tren harga dengan menghitung EMA dari siklus yang berbeda dan menggunakannya untuk menentukan entri dan keluar.

Logika Strategi

Strategi ini terutama didasarkan pada dua indikator EMA, EMA jangka pendek 9 hari dan EMA jangka panjang 21 hari.

Ketika EMA pendek melintasi di atas EMA panjang, itu dipandang sebagai harga memasuki tren naik. Strategi akan pergi panjang untuk mengikuti tren naik. Ketika EMA pendek melintasi di bawah EMA panjang, itu dipandang sebagai harga memasuki tren turun. Strategi akan pergi pendek untuk mengikuti tren turun.

Indikator EMA dapat secara efektif menyaring kebisingan dari data harga dan mengidentifikasi arah utama tren. Oleh karena itu, strategi menggunakan EMA ganda sebagai dasar untuk masuk dan keluar untuk menangkap tren harga yang lebih lama.

Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Ide strategi sederhana dan mudah dipahami dan diimplementasikan.
  2. Hal ini dapat secara efektif mengidentifikasi tren harga dan tepat waktu masuk posisi untuk mengikuti tren.
  3. Menggunakan EMA menyaring kebisingan dan menghindari gangguan dari fluktuasi harga jangka pendek.
  4. Parameter EMA dapat dikonfigurasi untuk menyesuaikan sensitivitas strategi.

Risiko

Ada juga beberapa risiko dengan strategi ini:

  1. Karakteristik EMA yang tertinggal dapat meningkatkan kerugian ketika tren berbalik.
  2. Pengaturan parameter EMA yang tidak benar meningkatkan tingkat sinyal palsu.
  3. Strategi ini lebih cocok untuk pasar dengan tren yang kuat dan rentan pada periode yang terikat rentang.

Peningkatan

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Menggabungkan indikator lain untuk mengidentifikasi pembalikan tren dan mengurangi kerugian, misalnya MACD, KDJ, dll.
  2. Strategi stop loss yang baik dapat sangat mengurangi drawdown maksimum.
  3. Mengoptimalkan parameter EMA agar lebih sesuai dengan karakteristik harga produk yang berbeda.
  4. Gunakan algoritma pembelajaran mesin untuk mengotomatisasi optimasi parameter EMA.

Ringkasan

Secara singkat, strategi EMA ganda adalah strategi yang sangat berguna untuk mengikuti tren. Strategi ini mudah dioperasikan, dimengerti, dan berkinerja sangat baik di pasar tren yang kuat. Strategi ini juga memiliki beberapa risiko yang dapat dikurangi melalui berbagai peningkatan untuk meningkatkan stabilitasnya.


/*backtest
start: 2023-02-21 00:00:00
end: 2024-02-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// This can only draw so many lines. Use bar replay to go back further
strategy("Strategy Lines", shorttitle="Strategy Lines", overlay=true, max_lines_count=500)

//###########################################################################################################################################
// Replace your strategy here
//###########################################################################################################################################

shortEMA = ta.ema(close, input(9, title="Short EMA Length"))
longEMA = ta.ema(close, input(21, title="Long EMA Length"))

// Entry conditions for long and short positions
longCondition = ta.crossover(shortEMA, longEMA)
shortCondition = ta.crossunder(shortEMA, longEMA)

//###########################################################################################################################################
// Strategy Lines
//###########################################################################################################################################

var timeLow = bar_index
var line li = na
var openLPrice = 0.0000
var openSPrice = 0.0000

LongWColor = input.color(color.rgb(0,255,0,0),"Long Win Color", group="Strategy Lines")
LongLColor = input.color(color.rgb(0,0,255,0),"Long Loss Color", group="Strategy Lines")
ShortWColor = input.color(color.rgb(255,255,0,0),"Short Win Color", group="Strategy Lines")
ShortLColor = input.color(color.rgb(255,0,0,0),"Short Loss Color", group="Strategy Lines")
WinFontColor = input.color(color.rgb(0,0,0,0),"Win Font Color", group="Strategy Lines")
LossFontColor = input.color(color.rgb(255,255,255,0),"Loss Font Color", group="Strategy Lines")
LinesShowLabel = input(false,"Show Labels?",group = "Strategy Lines")

// // Start new line when we go long
// if strategy.position_size >0
//     line.delete(li)
//     li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close>openLPrice?LongWColor:LongLColor)

// // Start new line when we go short
// if strategy.position_size <0
//     line.delete(li)
//     li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close<openSPrice?ShortWColor:ShortLColor)

// //Delete Lines if we don't have a position open
// if strategy.position_size ==0
//     li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=color.rgb(0,0,0,100))
//     line.delete(li)

if LinesShowLabel
    // Short Label
    if strategy.position_size>=0 and strategy.position_size[1] <0
        label.new(
             timeLow, na, 
             text=str.tostring((openSPrice-close[1])/(syminfo.mintick*10)), 
             color=close[1]<openSPrice?ShortWColor:ShortLColor, 
             textcolor=close[1]<openSPrice?WinFontColor:LossFontColor,
             size=size.small, 
             style=label.style_label_down, yloc=yloc.abovebar)
    // Long Label
    if strategy.position_size<=0 and strategy.position_size[1] >0
        label.new(
             timeLow, na,
             text=str.tostring((close[1]-openLPrice)/(syminfo.mintick*10)), 
             color=close[1]>openLPrice?LongWColor:LongLColor, 
             textcolor=close[1]>openLPrice?WinFontColor:LossFontColor,
             size=size.small, 
             style=label.style_label_down, yloc=yloc.abovebar)

// Open long position and draw line
if (longCondition)
    //strategy.entry("Long", strategy.long)
    // timeLow := bar_index
    // li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close>openLPrice?LongWColor:LongLColor)
    openLPrice := close

// Open short position and draw line
if (shortCondition)
    //strategy.entry("Short", strategy.short)
    // timeLow := bar_index
    // li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close<openSPrice?ShortWColor:ShortLColor)
    openSPrice := close

//###########################################################################################################################################
// Strategy Execution (Replace this as well)
//###########################################################################################################################################

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

Lebih banyak