Strategi Dagangan Crossover EMA Jangka Pendek, Jangka Menengah dan Jangka Panjang

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

img

Strategi ini menjana isyarat dagangan berdasarkan tiga garis purata bergerak eksponensial (EMA) dengan tempoh yang berbeza: EMA jangka pendek dengan tempoh 5 hari, EMA jangka sederhana dengan tempoh 8 hari dan EMA jangka panjang dengan tempoh 13 hari.

Logika Strategi

Strategi ini menilai trend pasaran dengan mengira EMA dari tempoh yang berbeza. EMA jangka pendek mencerminkan harga purata beberapa hari kebelakangan ini manakala EMA jangka sederhana dan jangka panjang mencerminkan harga purata dalam jangka masa yang lebih lama. Penyambungan EMA jangka pendek ke atas EMA jangka sederhana dan jangka panjang menandakan kenaikan harga, jadi kedudukan panjang diambil. Sebaliknya, apabila EMA jangka pendek melintasi di bawah dua yang lain, ia menandakan penurunan harga sehingga kedudukan pendek diambil.

Secara khusus, strategi ini secara serentak mengira EMA 5 hari, 8 hari dan 13 hari. Ia menjana isyarat panjang apabila EMA 5 hari melintasi di atas EMA 8 hari dan 13 hari; ia menjana isyarat pendek apabila EMA 5 hari melintasi di bawah dua yang lain. Selepas pergi lama, kedudukan ditutup sebaik sahaja EMA 5 hari melintasi kembali di bawah EMA 13 hari. Begitu juga untuk kedudukan pendek.

Kelebihan Strategi

  1. Menggunakan EMA berbilang tempoh mengelakkan kehilangan titik pembalikan trend utama yang boleh berlaku dengan tempoh EMA tunggal yang terlalu pendek atau panjang
  2. Menggabungkan tiga EMA jangka pendek, sederhana dan panjang meningkatkan kebolehpercayaan isyarat perdagangan
  3. Harga yang lancar melalui EMA menapis beberapa bunyi pasaran dan menghalang kemasukan yang tidak perlu

Risiko Strategi

  1. Kesemua tiga EMA adalah penunjuk trend yang tertinggal, secara semula jadi mengandungi beberapa kelewatan masa sebelum harga sebenar pecah, berisiko isyarat lewat
  2. EMA tidak dapat membezakan dengan berkesan trend sebenar berbanding pembetulan jangka pendek, cenderung menghasilkan isyarat palsu
  3. Tempoh EMA tetap tidak dapat disesuaikan dengan rejimen pasaran yang berbeza dalam jangka masa yang berbeza

Idea peningkatan:

  1. Menambah penunjuk lain seperti MACD untuk mengukur trend sebenar dengan lebih baik, mengelakkan isyarat palsu
  2. Penyesuaian parameter tempoh EMA yang fleksibel untuk produk dan persekitaran pasaran yang berbeza
  3. Menambah stop loss bergerak untuk mengunci keuntungan dan mengawal risiko

Ringkasan

Ini adalah sistem penembusan biasa yang menilai pembalikan trend dengan membandingkan persilangan antara EMA jangka pendek, sederhana dan panjang. Kesederhanaan isyaratnya memudahkan perdagangan, tetapi juga menderita ketinggalan yang melekat pada EMA dan ketidakupayaan untuk menapis trend sebenar dari pembetulan sementara. Peningkatan masa depan mungkin mengintegrasikan penunjuk teknikal lain atau penyesuaian parameter adaptif untuk mengoptimumkannya.


/*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 lanjut