Sumber daya yang dimuat... Pemuatan...

Trend Indikator Multi-Teknis Mengikuti Strategi dengan RSI Momentum Filter

Penulis:ChaoZhang, Tanggal: 2024-12-20 14:10:43
Tag:EMARSIATRSMAMACD

img

Gambaran umum

Ini adalah strategi trend-following yang menggabungkan beberapa indikator teknis, terutama menggunakan crossover Exponential Moving Average (EMA), indikator Supertrend, dan Relative Strength Index (RSI) untuk mengidentifikasi peluang trading.

Prinsip Strategi

Strategi ini menggunakan mekanisme penyaringan tiga untuk menentukan sinyal perdagangan:

  1. Sistem crossover EMA menangkap perubahan tren jangka pendek, menghasilkan sinyal panjang ketika EMA cepat melintasi di atas EMA lambat dan sinyal pendek ketika melintasi di bawahnya.
  2. Indikator Supertrend menghitung garis support/resistance dinamis berdasarkan ATR untuk mengkonfirmasi arah tren secara keseluruhan. Posisi panjang hanya diizinkan ketika harga berada di atas garis Supertrend, dan posisi pendek di bawahnya.
  3. Indikator RSI menyaring kondisi pasar yang terlalu banyak dibeli atau terlalu banyak dijual. entri panjang hanya diizinkan ketika RSI berada di bawah tingkat overbought, dan pendek ketika di atas tingkat oversold.

Strategi ini mencakup sistem stop-loss dan take-profit dinamis berbasis ATR yang secara otomatis menyesuaikan parameter manajemen risiko berdasarkan volatilitas pasar.

Keuntungan Strategi

  1. Kombinasi dari beberapa indikator teknis memberikan sinyal perdagangan yang lebih dapat diandalkan, menghindari sinyal palsu yang mungkin berasal dari indikator tunggal.
  2. Pengaturan stop-loss dan take-profit dinamis beradaptasi dengan kondisi volatilitas pasar yang berbeda, memungkinkan lebih banyak ruang untuk bernapas di pasar yang sangat volatile.
  3. Mekanisme penyaringan RSI secara efektif mengurangi risiko masuk selama kondisi pasar yang ekstrem.
  4. Fungsi penyaringan waktu memungkinkan pedagang untuk fokus pada sesi perdagangan tertentu, menghindari periode yang tidak efisien.

Risiko Strategi

  1. Kondisi penyaringan ganda dapat menyebabkan peluang perdagangan yang hilang.
  2. Tingkat stop-loss dapat dengan mudah dipicu di pasar yang cepat volatile.
  3. Optimasi parameter yang berlebihan dapat menyebabkan masalah overfit.
  4. Perdagangan frekuensi tinggi dapat mengakibatkan biaya transaksi yang signifikan.

Arah Optimasi Strategi

  1. Pertimbangkan untuk menambahkan indikator volume sebagai konfirmasi tambahan.
  2. Memperkenalkan mekanisme penyesuaian parameter adaptif untuk adaptasi yang lebih baik dengan lingkungan pasar yang berbeda.
  3. Mengimplementasikan filter kekuatan tren untuk menghindari overtrading di pasar tren yang lemah.
  4. Mengembangkan sistem ukuran posisi yang lebih cerdas yang secara dinamis menyesuaikan ukuran posisi berdasarkan kondisi pasar.

Ringkasan

Strategi ini membangun sistem perdagangan yang relatif lengkap dengan menggabungkan beberapa indikator teknis dan kondisi penyaringan. Keuntungan utamanya terletak pada beberapa mekanisme konfirmasi dan manajemen risiko dinamis, sementara perhatian harus diberikan pada optimasi parameter dan biaya transaksi. Melalui optimasi dan perbaikan terus-menerus, strategi ini memiliki potensi untuk mempertahankan kinerja yang stabil di berbagai lingkungan pasar.


/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Supertrend + EMA Crossover with RSI Filter", shorttitle="ST_EMA_RSI", overlay=true)

// Input parameters for EMA
fastEMA          = input.int(3,  title="Fast EMA Period", minval=1)
slowEMA          = input.int(6,  title="Slow EMA Period", minval=1)
atrLength        = input.int(3,  title="ATR Length", minval=1)

// Using a fixed multiplier for Supertrend calculation
stMultiplier = 1

// Stop loss and take profit multipliers
stopLossATR      = input.float(2.5, title="Stop Loss ATR Multiplier", minval=0.1, step=0.1)
takeProfitATR    = input.float(4,   title="Take Profit ATR Multiplier", minval=0.1, step=0.1)

// RSI inputs
rsiLength      = input.int(10, title="RSI Length", minval=1)
rsiOverbought  = input.float(65, title="RSI Overbought Level", minval=50.0, maxval=100.0)
rsiOversold    = input.float(30.0, title="RSI Oversold Level",   minval=0.0, maxval=50.0)

// Declare the RSI plot toggle input as a global variable
bool rsiPlotEnabled = input.bool(true, title="Show RSI in separate panel")

// Time filter inputs
i_startTime = input(title="Start Filter", defval=timestamp("01 Jan 2023 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime   = input(title="End Filter",   defval=timestamp("28 Apr 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Date/time filtering logic
inDateRange = true

// Calculate EMAs
fastEMALine = ta.ema(close, fastEMA)
slowEMALine = ta.ema(close, slowEMA)

// Calculate ATR
atr = ta.atr(atrLength)

// Calculate Supertrend using fixed multiplier
up = high - (stMultiplier * atr)
dn = low +  (stMultiplier * atr)

var float trendUp = na
var float trendDown = na
var int trend = na

trendUp   := na(trendUp[1])   ? up : (close[1] > trendUp[1]   ? math.min(up, trendUp[1])   : up)
trendDown := na(trendDown[1]) ? dn : (close[1] < trendDown[1] ? math.max(dn, trendDown[1]) : dn)

trend := close > nz(trendUp[1]) ? 1 : close < nz(trendDown[1]) ? -1 : nz(trend[1], 1)
supertrend = trend == 1 ? trendUp : trendDown

// Calculate RSI
myRSI = ta.rsi(close, rsiLength)

// Entry conditions with RSI filter
longEntryCondition  = ta.crossover(fastEMALine, slowEMALine) and (trend == 1) and (myRSI < rsiOverbought)
shortEntryCondition = ta.crossunder(fastEMALine, slowEMALine) and (trend == -1) and (myRSI > rsiOversold)

// Strategy entries
if inDateRange and longEntryCondition and strategy.position_size <= 0
    strategy.entry("Long", strategy.long)

if inDateRange and shortEntryCondition and strategy.position_size >= 0
    strategy.entry("Short", strategy.short)

// Stops and targets
if strategy.position_size > 0
    longStopLoss   = strategy.position_avg_price - stopLossATR * atr
    longTakeProfit = strategy.position_avg_price + takeProfitATR * atr
    strategy.exit("Long SL/TP", "Long", stop=longStopLoss, limit=longTakeProfit)

if strategy.position_size < 0
    shortStopLoss   = strategy.position_avg_price + stopLossATR * atr
    shortTakeProfit = strategy.position_avg_price - takeProfitATR * atr
    strategy.exit("Short SL/TP", "Short", stop=shortStopLoss, limit=shortTakeProfit)

// Plot EMAs and Supertrend
plot(fastEMALine, title="Fast EMA", color=color.new(color.blue, 0))
plot(slowEMALine, title="Slow EMA", color=color.new(color.red, 0))
plot(trend == 1 ? supertrend : na, title="Supertrend Up", color=color.green, style=plot.style_linebr)
plot(trend == -1 ? supertrend : na, title="Supertrend Down", color=color.red, style=plot.style_linebr)

// Plot RSI and hlines
plot(rsiPlotEnabled ? myRSI : na, title="RSI", color=color.new(color.purple, 0))
hline(rsiOverbought, "Overbought", color=color.red, linestyle=hline.style_dotted)
hline(rsiOversold,   "Oversold",   color=color.green, linestyle=hline.style_dotted)

// Plot entry signals
plotshape(longEntryCondition, title="Long Entry Signal", style=shape.triangleup, location=location.belowbar, size=size.tiny, color=color.new(color.green, 0))
plotshape(shortEntryCondition, title="Short Entry Signal", style=shape.triangledown, location=location.abovebar, size=size.tiny, color=color.new(color.red, 0))


Berkaitan

Lebih banyak