Sumber dimuat naik... memuat...

Strategi Perdagangan Kuantitatif Gabungan EMA dan Supertrend

Penulis:ChaoZhang, Tarikh: 2024-06-17 16:52:17
Tag:EMA

img

Ringkasan

Strategi ini menggabungkan Purata Bergerak Eksponensial (EMA) dan penunjuk Supertrend untuk menjana isyarat beli dan jual. Isyarat beli dihasilkan apabila harga memecahkan di atas EMA 20 hari dan penunjuk Supertrend berada dalam trend menaik. Isyarat jual dihasilkan apabila harga memecahkan di bawah EMA 20 hari dan penunjuk Supertrend berada dalam trend penurunan. Strategi ini bertujuan untuk menangkap keadaan pasaran yang sedang trend sambil menggunakan EMA sebagai keadaan penapis untuk mengurangkan isyarat palsu.

Prinsip Strategi

  1. Mengira EMA 20 hari sebagai syarat penapisan untuk penentuan trend.
  2. Mengira penunjuk Supertrend, yang memetakan jalur atas dan bawah berdasarkan Julat Benar Purata (ATR) dan trend menaik / menurun.
  3. Menghasilkan isyarat beli dan jual berdasarkan arah trend penunjuk Supertrend dan kedudukan relatif harga kepada EMA 20 hari:
    • Isyarat beli dihasilkan apabila harga memecahkan EMA 20 hari dan penunjuk Supertrend berada dalam trend menaik.
    • Isyarat jual dihasilkan apabila harga memecahkan EMA 20 hari dan penunjuk Supertrend berada dalam trend menurun.
  4. Strategi memasuki kedudukan panjang pada isyarat beli dan keluar pada isyarat jual.

Kelebihan Strategi

  1. Dengan menggabungkan EMA dan penunjuk Supertrend, strategi ini dapat menangkap keadaan pasaran trend dengan berkesan sambil mengurangkan isyarat palsu.
  2. Indikator Supertrend berdasarkan ATR, yang membolehkannya menyesuaikan jarak antara jalur atas dan bawah secara dinamik, menyesuaikan diri dengan turun naik pasaran yang berbeza.
  3. Menggunakan EMA sebagai syarat penapisan untuk penentuan trend memastikan bahawa kedudukan dibuka ke arah trend, meningkatkan kadar kemenangan strategi.
  4. Logik strategi adalah mudah dan lurus, menjadikannya mudah difahami dan dilaksanakan.

Risiko Strategi

  1. Dalam pasaran yang bergolak, strategi ini boleh menghasilkan isyarat beli dan jual yang kerap, yang membawa kepada erosi perdagangan dan kos transaksi yang berlebihan.
  2. Strategi ini bergantung kepada EMA dan penunjuk Supertrend, yang mungkin menjadi tidak berkesan atau ketinggalan dalam keadaan pasaran tertentu.
  3. Strategi ini tidak mempertimbangkan pengurusan risiko, seperti stop-loss dan saiz kedudukan, yang boleh mengakibatkan pengeluaran yang ketara semasa keadaan pasaran yang sangat tidak menentu.

Arahan Pengoptimuman Strategi

  1. Menggabungkan mekanisme stop-loss, seperti menetapkan stop-loss dinamik berdasarkan ATR, untuk mengawal kerugian maksimum setiap dagangan.
  2. Mengoptimumkan parameter EMA dan penunjuk Supertrend, seperti menggunakan kaedah pengoptimuman parameter untuk mencari kombinasi parameter yang optimum, meningkatkan fleksibiliti dan kestabilan strategi.
  3. Memperkenalkan saiz kedudukan dengan menyesuaikan saiz kedudukan secara dinamik berdasarkan turun naik pasaran atau keuntungan dan kerugian akaun, untuk menguruskan risiko keseluruhan.
  4. Pertimbangkan untuk menambah syarat penapisan lain, seperti jumlah dagangan, turun naik, dan lain-lain, untuk mengurangkan isyarat palsu.

Ringkasan

Strategi ini menghasilkan isyarat beli dan jual dengan menggabungkan EMA 20 hari dan penunjuk Supertrend, bertujuan untuk menangkap keadaan pasaran yang sedang berlaku. Kelebihan strategi ini terletak pada kesederhanaan dan gabungan EMA dan penunjuk Supertrend, yang dapat mengurangkan isyarat palsu dengan berkesan. Walau bagaimanapun, dalam pasaran yang bergelombang, strategi ini mungkin berdagang dengan kerap dan tidak mempunyai langkah pengurusan risiko. Penambahbaikan masa depan boleh mempertimbangkan menggabungkan kaedah stop-loss, saiz kedudukan, dan pengoptimuman parameter untuk meningkatkan strategi. Secara keseluruhan, strategi ini menyediakan pendekatan yang mudah dan berkesan untuk trend perdagangan, tetapi pengoptimuman dan penyempurnaan lanjut diperlukan untuk aplikasi praktikal.


/*backtest
start: 2023-06-11 00:00:00
end: 2024-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("20 EMA and Supertrend Strategy", overlay=true)

// Inputs
emaLength = input(20, title="EMA Length")
supertrendMultiplier = input.float(3.0, title="Supertrend Multiplier")
supertrendPeriod = input(10, title="Supertrend Period")

// EMA Calculation
ema = ta.ema(close, emaLength)

// Supertrend Calculation
Periods = supertrendPeriod
src = hl2
Multiplier = supertrendMultiplier
changeATR= input.bool(true, title="Change ATR Calculation Method?")
showsignals = input.bool(true, title="Show Buy/Sell Signals?")
highlighting = input.bool(true, title="Highlighter On/Off?")
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - (Multiplier * atr)
up1 = na(up[1]) ? up : up[1]
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + (Multiplier * atr)
dn1 = na(dn[1]) ? dn : dn[1]
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := na(trend[1]) ? trend : trend[1]
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.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(series=buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(series=buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.white)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(series=sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(series=sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.white)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=1)
longFillColor = highlighting ? (trend == 1 ? color.new(color.green, 90) : color.new(color.white, 0)) : color.new(color.white, 0)
shortFillColor = highlighting ? (trend == -1 ? color.new(color.red, 90) : color.new(color.white, 0)) : color.new(color.white, 0)
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")

// Buy and Sell Signals based on EMA and Supertrend
buySignalEMA = ta.crossover(close, ema) and trend == 1
sellSignalEMA = ta.crossunder(close, ema) and trend == -1

// Plot EMA
plot(ema, color=color.blue, title="20 EMA")

// Plot Buy and Sell Signals
plotshape(series=buySignalEMA, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=sellSignalEMA, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")

// Strategy Entries and Exits
if (buySignalEMA)
    strategy.entry("Buy", strategy.long)

if (sellSignalEMA)
    strategy.close("Buy")


Berkaitan

Lebih lanjut