Strategi perdagangan lintas EMA jangka pendek, jangka menengah dan jangka panjang

Penulis:ChaoZhang, Tanggal: 2023-11-24 13:33:21
Tag:

img

Strategi ini menghasilkan sinyal perdagangan berdasarkan tiga garis rata-rata bergerak eksponensial (EMA) dengan periode yang berbeda: EMA jangka pendek dengan periode 5 hari, EMA jangka menengah dengan periode 8 hari dan EMA jangka panjang dengan periode 13 hari.

Logika Strategi

Strategi ini menilai tren pasar dengan menghitung EMA dari periode yang berbeda. EMA jangka pendek mencerminkan harga rata-rata beberapa hari terakhir sementara EMA jangka menengah dan panjang mencerminkan harga rata-rata dalam jangka waktu yang lebih lama. Perpindahan EMA jangka pendek dari EMA jangka menengah dan panjang menandakan harga akan naik, sehingga posisi panjang diambil. Sebaliknya, ketika EMA jangka pendek melintasi di bawah dua lainnya, itu menandakan harga akan turun sehingga posisi pendek diambil.

Secara khusus, strategi ini secara bersamaan menghitung EMA 5 hari, 8 hari dan 13 hari. Ini menghasilkan sinyal panjang ketika EMA 5 hari melintasi EMA 8 hari dan 13 hari; ini menghasilkan sinyal pendek ketika EMA 5 hari melintasi di bawah dua lainnya. Setelah pergi panjang, posisi ditutup setelah EMA 5 hari melintasi kembali di bawah EMA 13 hari. Begitu juga untuk posisi pendek.

Keuntungan dari Strategi

  1. Menggunakan EMA multi-periode menghindari kehilangan titik pembalikan tren utama yang dapat terjadi dengan periode EMA tunggal yang terlalu pendek atau terlalu panjang
  2. Menggabungkan tiga EMA jangka pendek, menengah dan panjang meningkatkan keandalan sinyal perdagangan
  3. Pengaturan harga yang lancar melalui EMA menyaring beberapa kebisingan pasar dan mencegah masuk yang tidak perlu

Risiko dari Strategi

  1. Ketiga EMA adalah indikator tren yang tertinggal, secara inheren mengandung beberapa penundaan waktu sebelum harga sebenarnya pecah, berisiko sinyal terlambat
  2. EMA tidak dapat secara efektif membedakan tren nyata dari koreksi jangka pendek, cenderung menghasilkan sinyal palsu
  3. Periode EMA tetap tidak dapat beradaptasi dengan berbagai rezim pasar dalam jangka waktu yang berbeda

Ide perbaikan:

  1. Menambahkan indikator lain seperti MACD untuk mengukur tren nyata dengan lebih baik, menghindari sinyal palsu
  2. Fleksibel menyesuaikan parameter periode EMA untuk produk dan lingkungan pasar yang berbeda
  3. Menambahkan stop loss bergerak untuk mengunci keuntungan dan mengendalikan risiko

Ringkasan

Ini adalah sistem breakout khas yang menilai pembalikan tren dengan membandingkan crossover antara EMA jangka pendek, menengah dan panjang. Kesederhanaan sinyalnya memfasilitasi kemudahan perdagangan, tetapi juga menderita keterlambatan inheren EMA dan ketidakmampuan untuk menyaring tren nyata dari koreksi sementara. Peningkatan di masa depan dapat mengintegrasikan indikator teknis lain atau penyesuaian parameter adaptif untuk mengoptimalkannya.


/*backtest
start: 2023-11-16 00:00:00
end: 2023-11-23 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// 
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gregoirejohnb
// @It is modified by ttsaadet.
// Moving average crossover systems measure drift in the market. They are great strategies for time-limited people.
// So, why don't more people use them?
// 

//
strategy(title="EMA Crossover Strategy", shorttitle="EMA-5-8-13 COS by TTS", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, currency=currency.TRY,commission_type=strategy.commission.percent,commission_value=0.04, process_orders_on_close = true, initial_capital = 100000)

// === GENERAL INPUTS ===
//strategy start date
start_year = input(defval=2020, title="Backtest Start Year")

// === LOGIC ===
short_period = input(type=input.integer,defval=5,minval=1,title="Length")
mid_period = input(type=input.integer,defval=8,minval=1,title="Length")
long_period = input(type=input.integer,defval=13,minval=1,title="Length")

longOnly = input(type=input.bool,defval=false,title="Long Only")
shortEma = ema(hl2,short_period)
midEma = ema(hl2,mid_period)
longEma = ema(hl2,long_period)

plot(shortEma,linewidth=2,color=color.red,title="Fast")
plot(midEma,linewidth=2,color=color.orange,title="Fast")
plot(longEma,linewidth=2,color=color.blue,title="Slow")

longEntry = ((shortEma > midEma) and crossover(shortEma,longEma)) or ((shortEma > longEma) and crossover(shortEma,midEma))
shortEntry =((shortEma < midEma) and crossunder(shortEma,longEma)) or ((shortEma < longEma) and crossunder(shortEma,midEma))

plotshape(longEntry ? close : na,style=shape.triangleup,color=color.green,location=location.belowbar,size=size.small,title="Long Triangle")
plotshape(shortEntry and not longOnly ? close : na,style=shape.triangledown,color=color.red,location=location.abovebar,size=size.small,title="Short Triangle")
plotshape(shortEntry and longOnly ? close : na,style=shape.xcross,color=color.black,location=location.abovebar,size=size.small,title="Exit Sign")

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() =>
    longEntry 
exitLong() =>
    crossunder(shortEma,longEma)

strategy.entry(id="Long", long=strategy.long, when=enterLong())
strategy.close(id="Long", when=exitLong())


// === STRATEGY - SHORT POSITION EXECUTION ===

enterShort() =>
    not longOnly and shortEntry  
exitShort() =>
    crossover(shortEma,longEma)

strategy.entry(id="Short", long=strategy.short, when=enterShort())
strategy.close(id="Short", when=exitShort())

Lebih banyak