Strategi perdagangan kuantitatif menggabungkan EMA dan trend super

EMA
Tarikh penciptaan: 2024-06-17 16:52:17 Akhirnya diubah suai: 2024-06-17 16:52:17
Salin: 1 Bilangan klik: 773
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif menggabungkan EMA dan trend super

Gambaran keseluruhan

Strategi ini menggabungkan purata bergerak indeks (EMA) dan indikator super trend (Supertrend) untuk menghasilkan isyarat jual beli. Isyarat beli dihasilkan apabila harga menembusi 20 hari EMA dari atas dan indikator super trend berada dalam trend menurun. Isyarat jual dihasilkan apabila harga menembusi 20 hari EMA dari bawah dan indikator super trend berada dalam trend menurun.

Prinsip Strategi

  1. Hitung EMA 20 hari sebagai syarat penapisan untuk penilaian trend.
  2. Mengira indikator super trend, yang memetakan naik dan turun berdasarkan purata julat sebenar ((ATR) dan trend multirole.
  3. Sinyal beli dan jual dihasilkan berdasarkan arah trend dalam indikator supertrend dan kedudukan harga berbanding EMA 20 hari:
    • Isyarat beli dihasilkan apabila harga menembusi 20 hari EMA dari atas dan indikator Super Trend berada dalam trend bullish.
    • Sinyal jual dihasilkan apabila harga jatuh ke bawah EMA 20 hari dan indikator Super Trend berada dalam trend menurun.
  4. Strategi: buka lebih banyak kedudukan berdasarkan isyarat beli dan buka lebih sedikit berdasarkan isyarat jual.

Kelebihan Strategik

  1. Gabungan antara EMA dan Super Trend Indicator dapat menangkap trend secara berkesan dan mengurangkan isyarat palsu.
  2. Indikator Super Trend adalah berdasarkan ATR, yang dapat menyesuaikan jarak naik ke bawah secara dinamik untuk menyesuaikan diri dengan kadar turun naik pasaran yang berbeza.
  3. EMA berfungsi sebagai penyaring untuk menilai trend, memastikan bahawa anda membuka posisi di arah trend dan meningkatkan peluang strategi.
  4. Logik strategi mudah difahami dan dilaksanakan.

Risiko Strategik

  1. Dalam pasaran yang bergolak, strategi ini mungkin sering menghasilkan isyarat beli dan jual, menyebabkan terlalu banyak transaksi dan kehilangan bayaran.
  2. Strategi bergantung kepada EMA dan indikator supertrend, yang mungkin gagal atau terlewat dalam keadaan pasaran tertentu.
  3. Strategi ini tidak mempertimbangkan pengurusan risiko, seperti pengurusan hentian dan kedudukan, yang boleh menyebabkan penarikan balik yang lebih besar semasa turun naik pasaran yang kuat.

Arah pengoptimuman strategi

  1. Menggabungkan mekanisme hentian kerugian, seperti hentian dinamik yang ditetapkan mengikut ATR, untuk mengawal kerugian maksimum dalam satu transaksi.
  2. Mengoptimumkan parameter EMA dan indikator trend super, seperti menggunakan kaedah pengoptimuman parameter untuk mencari kombinasi parameter terbaik, meningkatkan kebolehpasaran dan kestabilan strategi.
  3. Memperkenalkan pengurusan kedudukan, menyesuaikan saiz kedudukan secara dinamik mengikut turun naik pasaran atau kerugian akaun, untuk mengawal risiko keseluruhan.
  4. Pertimbangkan untuk memasukkan syarat penapis lain, seperti jumlah transaksi, kadar turun naik, dan lain-lain, untuk mengurangkan isyarat palsu.

ringkaskan

Strategi ini menghasilkan isyarat jual beli dengan menggabungkan EMA 20 hari dan indikator super trend untuk menangkap tingkah laku trend. Kelebihan strategi ini adalah bahawa logiknya mudah, kombinasi EMA dan indikator super trend dapat mengurangkan isyarat palsu dengan berkesan. Tetapi dalam pasaran yang bergolak, strategi ini mungkin sering diperdagangkan dan kekurangan langkah-langkah pengurusan risiko.

Kod sumber strategi
/*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")