
Sistem perdagangan EMA ganda adalah sistem perdagangan pelacakan tren yang didasarkan pada rata-rata bergerak dua indeks. Sistem ini menggunakan rata-rata EMA dari dua periode yang berbeda untuk menilai arah tren saat ini dan membuat keputusan perdagangan berdasarkan hubungan harga dengan rata-rata EMA. Sistem ini logis sederhana, mudah dioperasikan, dapat menangkap tren pasar dengan baik, cocok untuk digunakan oleh investor garis menengah.
Strategi ini bergantung pada dua EMA, yaitu EMA dengan periode yang lebih cepat dan EMA dengan periode yang lebih lambat. EMA yang lebih cepat dianggap bullish saat berada di atas EMA yang lebih lambat; EMA yang lebih cepat dianggap bearish saat berada di bawah EMA yang lebih lambat.
Berdasarkan hubungan harga dengan dua garis rata-rata EMA, garis K dapat dibagi menjadi zona perdagangan yang berbeda:
Ketika EMA cepat berada di atas EMA lambat, dan harga di atas EMA cepat (G1), untuk zona pembelian yang kuat, saat ini dapat dibeli.
Ketika EMA cepat berada di bawah EMA lambat, dan harga berada di bawah EMA cepat (R1), untuk menjual area yang kuat, saat ini dapat dijual.
Ketika EMA bergerak cepat atau lambat, berdasarkan hubungan harga dengan dua EMA, dapat dibagi menjadi zona kuning (peringatan) dan zona oranye (tunggu). Kedua zona ini mewakili kemungkinan pergeseran tren yang perlu dikombinasikan dengan zona lain dan indikator lain untuk memutuskan perdagangan.
Strategi ini akan mengirimkan sinyal beli dan jual sesuai dengan perubahan harga di berbagai zona perdagangan. Di zona G1 dan R1 yang kuat, strategi akan menghasilkan sinyal secara langsung; Di zona peringatan dan observasi, indikator lain perlu dikonfirmasi.
Selain itu, strategi ini juga memperkenalkan StochRSI untuk membantu menentukan kapan harus membeli atau menjual.
Logika strategi sederhana dan jelas, mudah dipahami dan diterapkan;
Untuk itu, kami akan mempertimbangkan beberapa hal yang perlu diperhatikan, yaitu:
Membedakan antara zona kuat dan zona peringatan/watch yang bertentangan dengan tren, sinyal perdagangan lebih dapat diandalkan;
Dalam kombinasi dengan StochRSI, ini dapat menjadi indikator yang lebih akurat untuk menentukan kapan harus membeli dan kapan harus menjual.
Sistem trend-only, yang mungkin tidak efektif dalam perdagangan di pasar tanpa tren yang jelas;
Pengaturan siklus EMA yang tidak tepat dapat menyebabkan sinyal palsu;
Perdagangan di zona peringatan dini dan zona pengintaian berisiko tinggi dan perlu diperlakukan dengan hati-hati.
Tidak mempertimbangkan risiko penghentian kerugian yang menyebabkan peningkatan kerugian.
Cara-cara berikut dapat digunakan untuk mengurangi risiko:
Memilih varietas dengan tren yang jelas, dan menghentikan perdagangan jika tren lemah;
Optimalkan parameter siklus EMA untuk mengurangi probabilitas sinyal palsu;
Pengakuan untuk mengurangi risiko perdagangan pada pengenalan indikator lain di zona peringatan dini dan observasi;
Tetapkan Stop Loss untuk mengendalikan kerugian tunggal.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Menggunakan lebih banyak indikator untuk konfirmasi, seperti MACD, KDJ, dan lain-lain, untuk meningkatkan kualitas sinyal;
Memperkenalkan kondisi penyaringan di area perdagangan, seperti peningkatan volume perdagangan, meningkatkan tingkat keberhasilan perdagangan;
Adaptasi parameter EMA dan pengaturan parameter optimasi berdasarkan kondisi pasar yang dinamis;
Meningkatkan strategi stop loss, yang berhenti ketika kerugian mencapai proporsi tertentu;
Mengoptimalkan pengelolaan dana, mengatur manajemen posisi yang wajar;
Uji optimasi pada varietas yang berbeda untuk mencari kombinasi parameter yang optimal.
Dengan memperkenalkan lebih banyak indikator penilaian tambahan, optimasi parameter dinamis, dan strategi stop loss untuk meningkatkan stabilitas sistem, mengurangi risiko dari aspek manajemen dana, dan lain-lain, strategi ini dapat menghasilkan hasil perdagangan yang lebih baik.
Sistem perdagangan EMA ganda adalah sistem perdagangan pelacakan tren yang didasarkan pada perbandingan rata-rata EMA ganda. Ini membedakan daerah perdagangan yang berbeda, menilai arah tren berdasarkan hubungan harga dan rata-rata EMA dan menghasilkan sinyal perdagangan. Ini adalah sistem pelacakan tren yang logis, jelas, dan mudah diterapkan.
/*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")