Sistem Double EMA Crossover adalah sistem perdagangan mengikuti tren berdasarkan dua rata-rata bergerak eksponensial (EMA). Sistem ini menggunakan dua EMA dengan periode yang berbeda untuk menentukan arah tren saat ini dan menghasilkan sinyal perdagangan sesuai. Dengan logika sederhana dan penerapan yang mudah, sistem ini dapat menangkap tren pasar secara efektif dan cocok untuk pedagang jangka menengah hingga panjang.
Inti dari sistem ini bergantung pada dua EMA, satu EMA yang lebih cepat dan satu EMA yang lebih lambat.
Berdasarkan hubungan harga dengan kedua EMA, bar dapat dikategorikan ke dalam zona perdagangan yang berbeda:
Ketika EMA cepat berada di atas EMA lambat dan harga berada di atas EMA cepat (G1), itu adalah zona beli yang kuat, posisi panjang dapat diambil di sini.
Ketika EMA cepat berada di bawah EMA lambat dan harga berada di bawah EMA cepat (R1), itu adalah zona jual yang kuat, posisi pendek dapat diambil di sini.
Ketika dua EMA bersilang, zona peringatan (kuning) dan zona transisi (oren) ditentukan berdasarkan hubungan harga dengan kedua EMA. Zona ini menunjukkan potensi pergeseran tren dan perdagangan harus dilakukan dengan hati-hati menggunakan indikator tambahan.
Sinyal perdagangan dihasilkan ketika harga bergerak di berbagai zona. Di zona kuat G1 dan R1, sinyal dapat diambil secara langsung. Di zona peringatan dan transisi, konfirmasi indikator tambahan diperlukan.
StochRSI juga diimplementasikan untuk membantu mengidentifikasi titik masuk dan keluar potensial. Pembacaan oversold dan overbought dari StochRSI dapat memberikan sinyal jual beli tambahan.
Logika sederhana dan bersih yang mudah dipahami dan diterapkan
Mengamati tren jangka menengah hingga panjang secara efektif
Membedakan zona kuat dari zona peringatan/transisi, menghasilkan sinyal perdagangan yang andal
Penyertaan StochRSI lebih meningkatkan waktu masuk dan keluar
Sebagai sistem yang murni mengikuti tren, kinerja dapat mengalami kerugian di pasar non-trend
Pengaturan periode EMA yang tidak tepat dapat menyebabkan sinyal palsu
Zona peringatan dan zona transisi membawa risiko perdagangan yang lebih tinggi dan harus diperlakukan dengan hati-hati
Kurangnya stop loss dapat menyebabkan kerugian yang lebih tinggi
Risiko dapat dikurangi dengan:
Memilih instrumen dengan tren yang kuat dan menghentikan perdagangan ketika tren lemah
Mengoptimalkan periode EMA untuk meminimalkan sinyal palsu
Memperkenalkan indikator tambahan untuk konfirmasi di zona peringatan/transisi
Mengimplementasikan stop loss untuk mengendalikan kerugian per perdagangan
Sistem ini dapat ditingkatkan lagi di bidang berikut:
Masukkan lebih banyak indikator seperti MACD, KDJ untuk konfirmasi sinyal
Tambahkan filter seperti ekspansi volume di zona perdagangan untuk meningkatkan tingkat keberhasilan perdagangan
Sesuaikan periode EMA secara dinamis berdasarkan kondisi pasar untuk parameter yang dioptimalkan
Mengimplementasikan strategi stop loss untuk keluar dari perdagangan pada persentase kerugian tertentu
Mengoptimalkan ukuran posisi dan manajemen uang
Uji dan tuning parameter di instrumen yang berbeda untuk menemukan konfigurasi terbaik
Dengan memperkenalkan lebih banyak konfirmasi sinyal, optimasi parameter dinamis, stop loss, dan manajemen uang yang tepat, ketahanan sistem dapat ditingkatkan dan risiko dapat dikurangi untuk hasil yang lebih baik.
Sistem Double EMA Crossover adalah sistem trend following yang didasarkan pada perbandingan dua EMA. Sistem ini mengidentifikasi zona trading yang berbeda berdasarkan hubungan harga dengan EMA untuk menentukan arah tren dan menghasilkan sinyal trading. Sebagai sistem dengan logika yang jelas dan penerapan yang mudah, sistem ini dapat secara efektif menangkap tren. Sementara risiko ada, mereka dapat dikurangi melalui indikator tambahan, optimasi dinamis, stop loss, dan manajemen uang. Secara keseluruhan, sistem Double EMA Crossover adalah sistem trend following yang solid yang cocok untuk pedagang 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")