
EMA crossover strategi dengan mengesan persimpangan EMA rata-rata dua tempoh yang berbeza, untuk menentukan trend harga dan menghasilkan membeli dan menjual isyarat. Apabila jangka pendek EMA menghasilkan isyarat membeli apabila melintasi jangka panjang EMA, dan apabila jangka pendek EMA di bawah melintasi jangka panjang EMA menghasilkan isyarat menjual.
Strategi ini adalah berdasarkan kepada EMA rata-rata. EMA rata-rata dapat melonggarkan bunyi penapis data harga dan menentukan trend harga melalui persimpangan EMA rata-rata. Apabila EMA jangka pendek (kira-kira 20 kitaran) melalui EMA jangka panjang (kira-kira 50 kitaran), harga jangka pendek kini berada di atas harga jangka panjang, menandakan terdapat kecenderungan kenaikan harga, menghasilkan isyarat beli.
Pada masa yang sama, strategi ini menggabungkan indikator SuperTrend untuk menyaring isyarat palsu yang dihasilkan oleh persimpangan EMA. Indikator SuperTrend adalah naik dan turun yang dikira berdasarkan ATR, yang dapat menentukan trend sebenar dengan lebih tepat. Isyarat beli dihasilkan apabila harga menembusi arah atas indikator SuperTrend, dan isyarat jual dihasilkan apabila harga jatuh ke arah bawah indikator SuperTrend. Isyarat EMA hanya akan menghasilkan isyarat perdagangan sebenar apabila indikator SuperTrend juga menghasilkan isyarat beli / jual pada masa yang sama.
Secara khusus, kriteria strategi ini adalah seperti berikut:
Apabila 20 EMA melintasi 50 EMA, dan harga menembusi SuperTrend, menghasilkan isyarat beli;
Apabila 20 EMA melintasi 50 EMA, dan harga jatuh di bawah SuperTrend, menghasilkan isyarat menjual.
Menggunakan EMA untuk menilai tren besar, dan memfilterkan gegaran dalam indikator SuperTrend, dapat meningkatkan ketepatan isyarat perdagangan strategi.
EMA mempunyai kelebihan berikut:
Operasi mudah dan mudah dilaksanakan. Hanya perlu mengira persilangan dua garis rata-rata EMA.
EMA sebagai purata bergerak, boleh menapis sebahagian daripada bunyi bunyi.
Dengan menggunakan indikator SuperTrend, ia boleh menapis lebih jauh kebisingan dan mengurangkan isyarat palsu.
Ia boleh disesuaikan dengan keadaan pasaran yang berbeza dengan menyesuaikan parameter kitaran EMA.
Anda boleh menyesuaikan kedudukan panjang dan pendek anda dengan pelbagai cara untuk berdagang.
Ia boleh dilaksanakan pada tempoh masa yang berbeza dan sesuai untuk pelbagai jenis peniaga.
Strategi EMA crossover juga mempunyai beberapa risiko:
Apabila pasaran mengalami turun naik yang kuat, isyarat silang EMA mungkin terlewat dan tidak dapat mencerminkan perubahan harga dalam masa yang tepat.
EMA rata-rata mempunyai kelewatan dan mungkin menghasilkan isyarat yang salah.
Parameter EMA jangka pendek dan EMA jangka panjang yang tidak betul boleh menyebabkan terlalu banyak isyarat yang salah.
Hanya bergantung pada persilangan garis rata tidak dapat menentukan trend sebenar pasaran, ada kebutaan tertentu.
Anda perlu memilih strategi penghentian kerugian yang sesuai untuk mengawal risiko.
Berikut adalah beberapa perkara yang boleh dilakukan untuk mengurangkan risiko:
Optimumkan parameter kitaran EMA, pilih kitaran rata-rata perlahan yang sesuai.
Memperolehi pengurangan masa pegangan yang sewajarnya, dan menghentikan kerugian tepat pada masanya.
Mengambil keputusan komprehensif dalam kombinasi dengan petunjuk lain seperti purata bergerak, bentuk K.
Mengubah frekuensi dagangan untuk mengurangkan jumlah dagangan.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Mengoptimumkan parameter kitaran EMA rata-rata, menyesuaikan diri dengan keadaan kitaran dan pasaran yang berbeza. Anda boleh memperkenalkan mekanisme pengoptimuman parameter penyesuaian.
Cubalah pelbagai indeks rata-rata, seperti SMA, KWMA dan sebagainya.
Gabungan lebih banyak petunjuk untuk perdagangan gabungan, membentuk model pelbagai faktor. Seperti MACD, RSI, dan lain-lain. Pengenalan algoritma pembelajaran mesin untuk pengoptimuman parameter dan penyesuaian berat.
Tambah strategi henti kerugian seperti pengesanan hentian, peratusan hentian dan sebagainya untuk mengawal risiko.
Memperkenalkan penapisan jumlah urus niaga untuk mengelakkan isyarat palsu digabungkan dengan petunjuk jumlah urus niaga.
Mengoptimumkan strategi exits, menetapkan peraturan exit. Seperti gabungan bentuk K-line, isyarat EXIT seperti penembusan.
Mengakui trend pada jangka masa yang lebih tinggi, memasuki jangka masa yang lebih rendah, dan mengikuti trend.
Strategi EMA cross adalah strategi trend pengesanan yang mudah dan praktikal. Ia dapat mengenal pasti trend harga pertengahan dan menghasilkan isyarat membeli dan menjual. Gabungan dengan petunjuk SuperTrend dapat menyaring kebisingan dengan berkesan dan mengurangkan perdagangan yang salah. Tetapi strategi ini masih tertinggal dan berisiko menghasilkan isyarat yang salah.
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 1h
basePeriod: 15m
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/
// © alokbothra
//@version=5
strategy("Ema Crossover", overlay=true, initial_capital = 1000)
start = timestamp(2021,1,1,0,0)
end = timestamp(2023,10,30,0,0)
plot (ta.ema(close,20), title = "Ema 20", color = color.green , linewidth = 2)
plot (ta.ema(close,50), title = "Ema 50", color = color.red, linewidth = 2 )
//supertrend 1
Periods = input(title='ATR Period', defval=11)
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3)
changeATR = input(title='Change ATR Calculation Method ?', defval=true)
showsignals = input(title='Show Buy/Sell Signals ?', defval=true)
highlighting = input(title='Highlighter On/Off ?', defval=true)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = close - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn =close+ Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
dnPlot = plot(trend == 1 ? na : dn, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
changeCond = trend != trend[1]
longonly = input.bool(defval = true, title = 'Long Only')
shortonly = input.bool(defval = true, title = 'Short Only')
longCondition = (ta.ema(close, 20) >= ta.ema(close, 50))
shortCondition = (ta.ema(close, 20) <= ta.ema(close, 50))
long = (trend == 1)
short = (trend == -1)
sell= short
cover= long
if time >= start and time < end
if longonly
if ((longCondition) and (long))
strategy.entry ("Long Entry", strategy.long, comment ="Long Entry")
if strategy.position_size > 0
strategy.close("Long Entry", when = sell, comment = "Long Exit")
if shortonly
if ((shortCondition) and (short))
strategy.entry("Short Entry", strategy.short, comment = "Short Entry")
if strategy.position_size < 0
strategy.close("Short Entry", when = cover, comment = "Short Exit")