Strategi perdagangan RSI Rata-rata Bergerak Eksponensial Ganda

Penulis:ChaoZhangTanggal: 2024-01-30 15:44:11
Tag:

img

Gambaran umum

Strategi ini disebut Double Exponential Moving Average RSI Trading Strategy. Ini menggunakan Double EMA dan Relative Strength Index (RSI) sebagai indikator perdagangan utama untuk menerapkan perdagangan otomatis.

Prinsip Strategi

Strategi ini pertama-tama menghitung Double Exponential Moving Average (MA) dari harga, kemudian menghitung RSI berdasarkan MA, dan selanjutnya menghitung Exponential Moving Average of RSI (Smooth). Strategi ini menghasilkan sinyal beli ketika RSI melintasi di atas rata-rata bergerak dan sinyal jual ketika RSI melintasi di bawah rata-rata bergerak.

Kekuatan Strategi

  1. EMA ganda merespon lebih cepat terhadap perubahan harga dan menyaring kebisingan.
  2. Menghitung RSI berdasarkan MA membuatnya lebih stabil dan menghindari perdagangan palsu.
  3. Rata-rata bergerak RSI membantu mengkonfirmasi sinyal perdagangan dan menghindari breakout palsu.
  4. Menetapkan jumlah maksimum perdagangan per hari membantu mengendalikan risiko harian.
  5. Menentukan ukuran perdagangan sebagai persentase dari ekuitas menghindari kerugian perdagangan tunggal yang terlalu besar.
  6. Menetapkan waktu sesi perdagangan menghindari titik waktu kunci dan mengontrol risiko likuiditas.
  7. Mengambil keuntungan dan stop loss dalam poin membantu membatasi perdagangan tunggal P & L.
  8. Meninggalkan berhenti di titik membantu mengunci keuntungan mengambang dan mengurangi drawdowns.

Risiko Strategi

  1. Double EMA merespon lebih lambat terhadap peristiwa pasar, kehilangan peluang perdagangan jangka pendek.
  2. RSI cenderung membentuk sinyal kematian palsu/salib emas.
  3. Persentase tetap dari ekuitas tidak dapat beradaptasi dengan volatilitas pasar yang bervariasi, risiko penggunaan dana yang tidak cukup.
  4. Target stop loss/profit tetap gagal beradaptasi dengan produk dan kondisi pasar yang berbeda, risiko keluar dini.
  5. Trailing stop cenderung memicu terlalu sering di pasar bergolak.

Tindakan balas:

  1. Singkatkan periode MA untuk meningkatkan sensitivitas.
  2. Tambahkan indikator lain seperti volume ke sinyal filter.
  3. Sesuaikan ukuran perdagangan secara dinamis.
  4. Sesuaikan target stop loss/profit berdasarkan volatilitas pasar.
  5. Relaksasi titik stop loss di belakang dengan tepat.

Arahan Optimasi

  1. Uji kombinasi EMA Ganda jangka pendek/panjang yang berbeda untuk menemukan parameter yang optimal.
  2. Uji parameter periode perhitungan RSI untuk meningkatkan keandalan sinyal kematian/salib emas.
  3. Tambahkan indikator seperti volume, Bollinger Bands untuk menyaring suara sinyal.
  4. Sesuaikan secara dinamis ukuran perdagangan dan target stop loss/profit berdasarkan harga penutupan harian, volatilitas, dll.
  5. Mengoptimalkan mekanisme trailing stop untuk produk dan lingkungan pasar yang berbeda.

Ringkasan

Strategi ini memiliki aturan mekanik yang jelas dan keandalan yang tinggi secara keseluruhan, cocok untuk produk tren jangka menengah hingga panjang.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='[STRATEGY][RS]DemaRSI V0', shorttitle='D', overlay=false, initial_capital=100000, currency=currency.USD)
src = input(close)
ma_length = input(21)
rsi_length = input(4)
rsi_smooth = input(4)

ma = ema(ema(src, ma_length), ma_length)
marsi = rsi(ma, rsi_length)
smooth = ema(marsi, rsi_smooth)
plot(title='M', series=marsi, color=black)
plot(title='S', series=smooth, color=red)
hline(0)
hline(50)
hline(100)

max_order_per_day = input(6)
// strategy.risk.max_intraday_filled_orders(max_order_per_day)
trade_size_as_equity_factor = input(false)
trade_size = input(type=float, defval=10000.00) * (trade_size_as_equity_factor ? strategy.equity : 1)
take_profit_in_points = input(100000)
stop_loss_in_points = input(100000)
trail_in_points = input(150)

USE_SESSION = input(true)
trade_session = input(title='Trade Session:', defval='0400-1500', confirm=false)
istradingsession = not USE_SESSION ? true : not na(time('1', trade_session))

buy_entry = istradingsession and crossover(marsi, smooth)
sel_entry = istradingsession and crossunder(marsi, smooth)

strategy.entry('buy', long=true, qty=1, when=buy_entry)
strategy.entry('sel', long=false, qty=1, when=sel_entry)

strategy.exit('buy.Exit', from_entry='buy', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.exit('sel.Exit', from_entry='sel', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.close_all(when=not istradingsession)

Lebih banyak