Perdagangan Trend dengan Sistem Crossover EMA Berganda

Penulis:ChaoZhang, Tarikh: 2023-10-26 17:15:46
Tag:

img

Ringkasan

Sistem Crossover EMA Ganda adalah sistem perdagangan mengikut trend berdasarkan dua purata bergerak eksponensial (EMA). Ia menggunakan dua EMA dengan tempoh yang berbeza untuk menentukan arah trend semasa dan menjana isyarat perdagangan dengan sewajarnya. Dengan logiknya yang mudah dan pelaksanaannya yang mudah, sistem ini dapat menangkap trend pasaran dengan berkesan dan sesuai untuk peniaga jangka menengah hingga panjang.

Cara Ia Bekerja

Inti sistem ini bergantung pada dua EMA, satu EMA yang lebih cepat dan satu EMA yang lebih perlahan. Apabila EMA cepat di atas EMA perlahan, ia dianggap bullish. Apabila EMA cepat di bawah EMA perlahan, ia dianggap bearish.

Berdasarkan hubungan harga dengan kedua-dua EMA, bar boleh dikategorikan ke dalam zon perdagangan yang berbeza:

  • Apabila EMA cepat berada di atas EMA perlahan dan harga berada di atas EMA cepat (G1), ia adalah zon beli yang kuat, kedudukan panjang boleh diambil di sini.

  • Apabila EMA pantas di bawah EMA perlahan dan harga di bawah EMA pantas (R1), ia adalah zon jual yang kuat, kedudukan pendek boleh diambil di sini.

  • Apabila kedua-dua EMA bersilang, zon amaran (kuning) dan peralihan (orange) ditentukan berdasarkan hubungan harga dengan kedua-dua EMA. Zon ini menunjukkan perubahan trend yang berpotensi dan perdagangan harus diambil dengan berhati-hati menggunakan penunjuk tambahan.

Isyarat dagangan dihasilkan apabila harga bergerak merentasi zon yang berbeza. Di zon yang kuat G1 dan R1, isyarat boleh diambil secara langsung. Di zon amaran dan peralihan, pengesahan penunjuk tambahan diperlukan.

StochRSI juga dilaksanakan untuk membantu mengenal pasti titik masuk dan keluar yang berpotensi. Bacaan oversold dan overbought dari StochRSI boleh memberikan isyarat beli dan jual tambahan.

Kelebihan

  • Logik yang mudah difahami dan dilaksanakan

  • Mengesan dengan berkesan trend jangka sederhana hingga panjang

  • Membezakan zon yang kuat dari zon amaran / peralihan, menghasilkan isyarat perdagangan yang boleh dipercayai

  • Penyertaan StochRSI lebih meningkatkan masa kemasukan dan keluar

Risiko

  • Sebagai sistem trend yang murni, prestasi mungkin mengalami kerugian di pasaran bukan trend

  • Tetapan tempoh EMA yang tidak sesuai boleh menyebabkan isyarat palsu

  • Zon amaran dan peralihan membawa risiko perdagangan yang lebih tinggi dan harus dirawat dengan berhati-hati

  • Kekurangan stop loss boleh membawa kepada kerugian yang lebih ketara

Risiko boleh dikurangkan dengan:

  1. Memilih instrumen dengan trend yang kuat dan menghentikan perdagangan apabila trend lemah

  2. Mengoptimumkan tempoh EMA untuk meminimumkan isyarat palsu

  3. Memperkenalkan penunjuk tambahan untuk pengesahan di zon amaran / peralihan

  4. Pelaksanaan stop loss untuk mengawal kerugian setiap perdagangan

Peluang Peningkatan

Sistem ini boleh ditingkatkan lagi dalam bidang berikut:

  1. Masukkan lebih banyak penunjuk seperti MACD, KDJ untuk pengesahan isyarat

  2. Tambah penapis seperti pengembangan jumlah di zon perdagangan untuk meningkatkan kadar kejayaan perdagangan

  3. Sesuaikan secara dinamik tempoh EMA berdasarkan keadaan pasaran untuk parameter yang dioptimumkan

  4. Melaksanakan strategi stop loss untuk keluar dari perdagangan pada peratusan kerugian tertentu

  5. Mengoptimumkan saiz kedudukan dan pengurusan wang

  6. Uji dan atur halus parameter merentasi instrumen yang berbeza untuk mencari konfigurasi terbaik

Dengan memperkenalkan lebih banyak pengesahan isyarat, pengoptimuman parameter dinamik, stop loss, dan pengurusan wang yang betul, ketahanan sistem dapat ditingkatkan dan risiko dapat dikurangkan untuk hasil yang lebih baik.

Kesimpulan

Sistem Double EMA Crossover adalah sistem mengikuti trend berdasarkan perbandingan dua EMA. Ia mengenal pasti zon dagangan yang berbeza berdasarkan hubungan harga dengan EMA untuk menentukan arah trend dan menghasilkan isyarat perdagangan. Sebagai sistem dengan logika yang jelas dan pelaksanaan yang mudah, ia dapat menangkap trend dengan berkesan. Walaupun risiko ada, mereka boleh dikurangkan melalui penunjuk tambahan, pengoptimuman dinamik, penangguhan kerugian, dan pengurusan wang. Secara keseluruhan, sistem Double EMA Crossover adalah sistem mengikuti trend yang kukuh yang sesuai untuk peniaga jangka menengah hingga panjang.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Vvaz_
//base-on CDC ActionZone By Piriya   a simple 2EMA and is most suitable for use with medium volatility market
//@version=4
strategy(title="Vin's Playzone" ,shorttitle="VPz", overlay=true, margin_long=4, margin_short=2)

//variable
srcf = input(title="Source",type=input.source,defval=close)
tffix = input(title="Fixed Timeframe",type=input.bool,defval=true)
tfn = input(title="Timeframe in",type=input.resolution,defval="D")
ema1 = input(title="Fast EMA",type=input.integer,defval=12)
ema2 = input(title="Slow EMA",type=input.integer,defval=26)
ema3 = input(title="EMA 100",type=input.bool,defval=true)
smooter =input(title="Smoothing period (1 = no smoothing)",type=input.integer,defval=2)
fillbar =input(title="Fill Bar Color",type=input.bool,defval=true)
emasw = input(title="Show EMA",type=input.bool,defval=true)
bssw = input(title="Show Buy-Sell signal",type=input.bool,defval=true)
plotmm = input(title="Show Buy-Sell Momentum",type=input.bool,defval=true)
plotmmsm = input(title="RSI Smoothing",type=input.integer,defval=0,minval=0,maxval=2)

//math
xcross =ema(srcf,smooter)
efast = tffix ?  ema(security(syminfo.tickerid,tfn,ema(srcf,ema1), gaps = barmerge.gaps_off,lookahead = barmerge.lookahead_on),smooter) :ema(xcross,ema1)
eslow = tffix ?  ema(security(syminfo.tickerid,tfn,ema(srcf,ema2), gaps = barmerge.gaps_off,lookahead = barmerge.lookahead_on),smooter) :ema(xcross,ema2)
ema3x = ema(xcross,100)


//Zone
Bull = efast > eslow
Bear = efast < eslow

G1 = Bull and xcross > efast //buy
G2 = Bear and xcross > efast and xcross > eslow //pre-buy1
G3 = Bear and xcross > efast and xcross < eslow //pre-buy2

R1 = Bear and xcross < efast //sell
R2 = Bull and xcross < efast and xcross < eslow //pre-sell1
R3 = Bull and xcross < efast and xcross > eslow //pre-sell2

//color
bcl =   G1 ? color.green :  G2 ? color.yellow : G3 ? color.orange :R1 ? color.red :R2 ? color.orange : R3 ? color.yellow : color.black
barcolor(color=fillbar ? bcl : na )

//plots
line1 = plot(ema3 ? ema3x : na ,"EMA100",color=color.white)
line2 = plot(emasw ? efast : na ,"Fast EMA",color=color.green)
line3 = plot(emasw ? eslow : na ,"Slow EMA",color=color.red)
fillcl = Bull ? color.green : Bear ? color.red : color.black
fill(line2,line3,fillcl)

//actions
buywhen = G1 and G1[1]==0
sellwhen = R1 and R1[1]==0

bullish = barssince(buywhen) < barssince(sellwhen)
bearish = barssince(sellwhen) < barssince(buywhen)

buy = bearish[1] and buywhen
sell = bullish[1] and sellwhen

bullbearcl = bullish ? color.green : bearish ? color.red : color.black

//plot trend
plotshape(bssw ? buy : na ,style=shape.arrowup,title="BUY",location=location.belowbar,color=color.green)
plotshape( bssw ? sell : na ,style=shape.arrowdown ,title="Sell",location=location.abovebar,color=color.red)

// Momentum Signal using StochRSI

smoothK = input(5,"StochRSI smooth K",type=input.integer,minval=1)
smoothD = input(4,"StochRSI smooth D",type=input.integer,minval=1)
RSIlen = input(14,"RSI length",type=input.integer,minval=1)
STOlen = input(14,"Stochastic length",type=input.integer,minval=1)
SRsrc = input(close,"Source for StochasticRSI",type=input.source)
OSlel = input(20,"Oversold Threshold",type=input.float,minval=0.00)
OBlel = input(80,"Oversold Threshold",type=input.float,minval=0.00)
rsil = rsi(SRsrc,RSIlen)
K = sma(stoch(rsil,rsil,rsil,STOlen),smoothK)
D = sma(K,smoothD)

buymore = iff( bullish ,iff(D < OSlel and crossover(K,D),	2,	 iff(D > OSlel and crossover(K,D),	 1,0)),0)
sellmore = iff( bearish,iff(D > OBlel and crossunder(K,D),	2,	 iff(D < OBlel and crossunder(K,D),	 1,0)),0)
//plot momentum
plotshape(plotmm ? buymore > plotmmsm ? buymore : na : na ,"Buy More!" ,style=shape.triangleup,location=location.belowbar,color=color.green)
plotshape(plotmm ? sellmore > plotmmsm ? sellmore : na : na ,"Sell More!" ,style=shape.triangledown,location=location.abovebar,color=color.red)


// === INPUT BACKTEST RANGE ===
FromYear  = input(defval = 2009, title = "From Year", minval = 2009)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

//stratgy excuter
strategy.entry("Long",true,when=window() and buy or buymore)
strategy.close("Long",when=window() and sell or sellmore,comment="TP Long")
strategy.entry("Short",false,when=window() and sell or sellmore)
strategy.close("Short",when=window() and buy or buymore,comment="TP Short")




        

Lebih lanjut