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.
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.
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
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:
Memilih instrumen dengan trend yang kuat dan menghentikan perdagangan apabila trend lemah
Mengoptimumkan tempoh EMA untuk meminimumkan isyarat palsu
Memperkenalkan penunjuk tambahan untuk pengesahan di zon amaran / peralihan
Pelaksanaan stop loss untuk mengawal kerugian setiap perdagangan
Sistem ini boleh ditingkatkan lagi dalam bidang berikut:
Masukkan lebih banyak penunjuk seperti MACD, KDJ untuk pengesahan isyarat
Tambah penapis seperti pengembangan jumlah di zon perdagangan untuk meningkatkan kadar kejayaan perdagangan
Sesuaikan secara dinamik tempoh EMA berdasarkan keadaan pasaran untuk parameter yang dioptimumkan
Melaksanakan strategi stop loss untuk keluar dari perdagangan pada peratusan kerugian tertentu
Mengoptimumkan saiz kedudukan dan pengurusan wang
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.
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")