Sumber daya yang dimuat... Pemuatan...

EMA dan Supertrend Kombinasi Strategi Perdagangan Kuantitatif

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

img

Gambaran umum

Strategi ini menggabungkan Exponential Moving Average (EMA) dan indikator Supertrend untuk menghasilkan sinyal beli dan jual. Sinyal beli dihasilkan ketika harga melanggar EMA 20 hari dan indikator Supertrend berada dalam tren bullish. Sinyal jual dihasilkan ketika harga melanggar EMA 20 hari dan indikator Supertrend berada dalam tren penurunan. Strategi ini bertujuan untuk menangkap kondisi pasar yang sedang tren sambil menggunakan EMA sebagai kondisi penyaring untuk mengurangi sinyal palsu.

Prinsip Strategi

  1. Menghitung EMA 20 hari sebagai kondisi penyaringan untuk penentuan tren.
  2. Hitung indikator Supertrend, yang memetakan band atas dan bawah berdasarkan Average True Range (ATR) dan tren bullish/bearish.
  3. Membuat sinyal beli dan jual berdasarkan arah tren indikator Supertrend dan posisi relatif harga terhadap EMA 20 hari:
    • Sinyal beli dihasilkan ketika harga menembus EMA 20 hari dan indikator Supertrend berada dalam tren bullish.
    • Sinyal jual dihasilkan ketika harga keluar di bawah EMA 20 hari dan indikator Supertrend berada dalam tren penurunan.
  4. Strategi ini memasuki posisi panjang pada sinyal beli dan keluar pada sinyal jual.

Keuntungan Strategi

  1. Dengan menggabungkan indikator EMA dan Supertrend, strategi dapat secara efektif menangkap kondisi pasar yang sedang tren sambil mengurangi sinyal palsu.
  2. Indikator Supertrend didasarkan pada ATR, yang memungkinkannya untuk menyesuaikan jarak antara band atas dan bawah secara dinamis, beradaptasi dengan volatilitas pasar yang berbeda.
  3. Menggunakan EMA sebagai kondisi penyaringan untuk penentuan tren memastikan bahwa posisi dibuka ke arah tren, meningkatkan tingkat kemenangan strategi.
  4. Logika strategi sederhana dan langsung, membuatnya mudah dimengerti dan diterapkan.

Risiko Strategi

  1. Dalam pasar yang bergolak, strategi dapat menghasilkan sinyal beli dan jual yang sering, yang menyebabkan erosi perdagangan dan biaya transaksi yang berlebihan.
  2. Strategi ini didasarkan pada EMA dan indikator Supertrend, yang mungkin menjadi tidak efektif atau tertinggal dalam kondisi pasar tertentu.
  3. Strategi ini tidak mempertimbangkan manajemen risiko, seperti stop-loss dan ukuran posisi, yang dapat mengakibatkan penarikan yang signifikan selama kondisi pasar yang sangat fluktuatif.

Arah Optimasi Strategi

  1. Menggabungkan mekanisme stop loss, seperti menetapkan stop loss dinamis berdasarkan ATR, untuk mengontrol kerugian maksimum per perdagangan.
  2. Mengoptimalkan parameter EMA dan indikator Supertrend, seperti menggunakan metode optimasi parameter untuk menemukan kombinasi parameter yang optimal, meningkatkan kemampuan beradaptasi dan stabilitas strategi.
  3. Memperkenalkan ukuran posisi dengan menyesuaikan ukuran posisi secara dinamis berdasarkan volatilitas pasar atau laba rugi akun, untuk mengelola risiko keseluruhan.
  4. Pertimbangkan untuk menambahkan kondisi penyaringan lainnya, seperti volume perdagangan, volatilitas, dll, untuk lebih mengurangi sinyal palsu.

Ringkasan

Strategi ini menghasilkan sinyal beli dan jual dengan menggabungkan EMA 20 hari dan indikator Supertrend, yang bertujuan untuk menangkap kondisi pasar tren. Keuntungan dari strategi ini terletak pada kesederhanaan dan kombinasi indikator EMA dan Supertrend, yang dapat secara efektif mengurangi sinyal palsu. Namun, di pasar yang bergolak, strategi dapat berdagang sering dan tidak memiliki langkah-langkah manajemen risiko. Peningkatan di masa depan dapat mempertimbangkan menggabungkan metode stop-loss, ukuran posisi, dan optimasi parameter untuk meningkatkan strategi. Secara keseluruhan, strategi ini memberikan pendekatan yang sederhana dan efektif untuk tren perdagangan, tetapi optimasi dan penyempurnaan lebih lanjut diperlukan untuk aplikasi praktis.


/*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 banyak