Trend Trading dengan Sistem Crossover EMA Ganda

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

img

Gambaran umum

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.

Cara Kerjanya

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.

Keuntungan

  • 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

Risiko

  • 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:

  1. Memilih instrumen dengan tren yang kuat dan menghentikan perdagangan ketika tren lemah

  2. Mengoptimalkan periode EMA untuk meminimalkan sinyal palsu

  3. Memperkenalkan indikator tambahan untuk konfirmasi di zona peringatan/transisi

  4. Mengimplementasikan stop loss untuk mengendalikan kerugian per perdagangan

Peluang Peningkatan

Sistem ini dapat ditingkatkan lagi di bidang berikut:

  1. Masukkan lebih banyak indikator seperti MACD, KDJ untuk konfirmasi sinyal

  2. Tambahkan filter seperti ekspansi volume di zona perdagangan untuk meningkatkan tingkat keberhasilan perdagangan

  3. Sesuaikan periode EMA secara dinamis berdasarkan kondisi pasar untuk parameter yang dioptimalkan

  4. Mengimplementasikan strategi stop loss untuk keluar dari perdagangan pada persentase kerugian tertentu

  5. Mengoptimalkan ukuran posisi dan manajemen uang

  6. 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.

Kesimpulan

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")




        

Lebih banyak