Berdasarkan analisis strategi EMA berganda


Tarikh penciptaan: 2024-02-28 18:07:59 Akhirnya diubah suai: 2024-02-28 18:07:59
Salin: 1 Bilangan klik: 552
1
fokus pada
1621
Pengikut

Berdasarkan analisis strategi EMA berganda

Gambaran keseluruhan

Strategi EMA ganda adalah strategi pengesanan trend yang menggunakan EMA untuk mengira kitaran yang berbeza untuk mengenal pasti arah trend harga dan membuat keputusan untuk meletakkan atau menutup posisi. Strategi ini mudah digunakan dan sesuai untuk pasaran yang lebih cenderung.

Prinsip Strategi

Strategi ini adalah berdasarkan kepada dua indikator EMA, iaitu EMA 9 hari yang pendek dan EMA 21 hari yang lebih panjang. Persaingan mereka memberi isyarat untuk meletakkan dan meletakkan.

Apabila EMA jangka pendek di atas EMA jangka panjang, dianggap sebagai harga memasuki trend naik, strategi ini akan membuka lebih banyak pesanan dan mengesan kenaikan harga. Apabila EMA jangka pendek di bawah EMA jangka panjang, dianggap sebagai harga memasuki trend menurun, strategi ini akan membuka pesanan kosong dan mengesan penurunan harga.

Indeks EMA mampu menyaring bunyi-bunyian dalam data harga dengan cekap dan mengenal pasti arah utama trend harga. Oleh itu, strategi ini menggunakan indikator EMA ganda sebagai asas untuk meletakkan dan meletakkan, dengan harapan dapat menangkap kitaran trend harga yang lebih lama.

Kelebihan Strategik

Strategi ini mempunyai kelebihan berikut:

  1. Strategi ini ringkas dan jelas, mudah difahami dan dilaksanakan.
  2. Ia boleh mengesan trend harga dengan cekap dan menjejaki trend dengan tepat pada masanya.
  3. Menggunakan EMA untuk menyaring kebisingan dan mengelakkan gangguan oleh pergerakan harga jangka pendek.
  4. Anda boleh mengkonfigurasi parameter EMA untuk menyesuaikan kepekaan strategi.

Risiko Strategik

Strategi ini mempunyai beberapa risiko:

  1. Apabila trend berbalik, ciri-ciri kemunduran dalam penunjuk EMA boleh menyebabkan kerugian meningkat.
  2. Parameter EMA yang tidak ditetapkan pada masa yang tepat akan meningkatkan kadar isyarat palsu.
  3. Strategi ini lebih sesuai untuk pasaran trend kuat, yang mudah terjejas semasa penutupan.

Pengoptimuman Strategi

Strategi ini boleh dioptimumkan dengan:

  1. Gabungan dengan penunjuk lain untuk menilai trend berbalik, mengurangkan kerugian. Contohnya MACD, KDJ dan sebagainya.
  2. Dengan menambah logik stop loss, strategi stop loss yang baik dapat mengurangkan jumlah maksimum penarikan balik strategi.
  3. Mengoptimumkan parameter EMA agar lebih sesuai dengan ciri-ciri harga pelbagai jenis.
  4. Mengoptimumkan parameter EMA secara automatik dengan algoritma pembelajaran mesin.

ringkaskan

Strategi EMA ganda secara keseluruhan adalah strategi pengesanan trend yang sangat praktikal. Ia mudah dikendalikan, mudah difahami, dan berfungsi dengan baik di pasaran yang berpatutan.

Kod sumber strategi
/*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)