Strategi Trading Tren yang Didorong oleh Berbagai Faktor

Penulis:ChaoZhang, Tanggal: 2024-01-17 14:02:22
Tag:

img

Ringkasan

Strategi ini menggabungkan indikator Moving Average Convergence Divergence (MACD) dan indikator Stochastic Relative Strength Index (Stoch RSI) untuk menentukan arah tren pasar, pergi panjang ketika tren naik dan pergi pendek ketika tren turun.

Logika Strategi

Strategi ini menggunakan indikator MACD dan Stoch RSI untuk menentukan arah tren pasar.

Indikator MACD terdiri dari garis EMA cepat, garis EMA lambat dan perbedaan antara keduanya, yang mencerminkan konvergensi dan divergensi rata-rata bergerak jangka pendek dan jangka panjang. Ketika garis cepat melintasi di atas garis lambat, itu adalah sinyal beli. Ketika garis cepat melintasi di bawah garis lambat, itu adalah sinyal jual.

Indikator Stoch RSI menggabungkan kekuatan dari kedua indikator RSI dan Stoch untuk menunjukkan tingkat overbought dan oversold di pasar. Ketika Stoch RSI lebih besar dari garis sinyal Stoch RSI, itu adalah sinyal beli. Ketika lebih rendah dari garis sinyal, itu adalah sinyal jual.

Strategi ini menggunakan MACD dan Stoch RSI pada kerangka waktu harian dan 4 jam untuk menentukan tren pasar. Ketika kedua indikator menghasilkan sinyal beli pada grafik harian dan 4 jam, pergi panjang. Ketika keduanya menghasilkan sinyal jual, pergi pendek. Ini dapat secara efektif menyaring sinyal palsu dan meningkatkan keandalan.

Keuntungan

  1. Menggabungkan dua faktor untuk menilai pergerakan pasar dapat menyaring sinyal palsu secara efektif dan meningkatkan akurasi sinyal

  2. Validasi sinyal di atas dan rendah kerangka waktu (harian dan 4H) menghindari mendapatkan whipsawed

  3. Mengikuti tren menghindari pasar berbelit-belit

  4. Logika strategi yang sederhana dan jelas, mudah dimengerti dan dilaksanakan

Risiko dan Solusi

  1. Ketidakmampuan untuk secara efektif menentukan titik pembalikan tren dapat menyebabkan stop loss dipicu
  • Mengoptimalkan parameter atau menambahkan indikator lain untuk menilai
  1. Kontrak tunggal tidak dapat mendiversifikasi risiko sistematis pasar
  • Meningkatkan kontrak atau saham lain untuk melakukan diversifikasi
  1. Tidak dapat menentukan dampak dari peristiwa besar tiba-tiba
  • Menggabungkan analisis fundamental untuk meningkatkan kesadaran risiko

Arahan Optimasi

  1. Sesuaikan parameter MACD dan Stoch RSI untuk mengoptimalkan titik masuk dan keluar

  2. Tambahkan strategi trailing stop untuk mengunci keuntungan

  3. Tambahkan ukuran posisi ke kontrol per risiko perdagangan

  4. Tambahkan lebih banyak faktor untuk menilai untuk meningkatkan akurasi sinyal

  5. Menggunakan metode pembelajaran mesin untuk mengoptimalkan parameter secara dinamis

Ringkasan

Strategi ini menentukan arah tren melalui model faktor ganda dan memvalidasi sinyal di seluruh kerangka waktu. Ini adalah tren yang relatif stabil dan dapat diandalkan mengikuti strategi, dengan kemampuan manajemen risiko tertentu dan ruang untuk kesalahan. Kinerja dapat ditingkatkan lebih lanjut dengan menambahkan optimasi parameter, stop loss, ukuran posisi dan modul lainnya.


/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title='[RS]Khizon (UGAZ) Strategy V0', shorttitle='K', overlay=false, pyramiding=0, initial_capital=100000, currency=currency.USD)
//  ||  Inputs:
macd_src = input(title='MACD Source:',  defval=close)
macd_fast = input(title='MACD Fast Length:',  defval=12)
macd_slow = input(title='MACD Slow Length:',  defval=26)
macd_signal_smooth = input(title='MACD Signal Smoothing:',  defval=9)
srsi_src = input(title='SRSI Source:',  defval=close)
srsi_rsi_length = input(title='SRSI RSI Length:',  defval=14)
srsi_stoch_length = input(title='SRSI Stoch Length:',  defval=14)
srsi_smooth = input(title='SRSI Smoothing:',  defval=3)
srsi_signal_smooth = input(title='SRSI Signal Smoothing:',  defval=3)
//  ||  Strategy Inputs:
trade_size = input(title='Trade Size in USD:', type=float, defval=1)
buy_trade = input(title='Perform buy trading?', type=bool, defval=true)
sel_trade = input(title='Perform sell trading?', type=bool, defval=true)
//  ||  MACD(close, 12, 26, 9):     ||---------------------------------------------||
f_macd_trigger(_src, _fast, _slow, _signal_smooth)=>
    _macd = ema(_src, _fast) - ema(_src, _slow)
    _signal = sma(_macd, _signal_smooth)
    _return_trigger = _macd >= _signal ? true : false
//  ||  Stoch RSI(close, 14, 14, 3, 3)  ||-----------------------------------------||
f_srsi_trigger(_src, _rsi_length, _stoch_length, _smooth, _signal_smooth)=>
    _rsi = rsi(_src, _rsi_length)
    _stoch = sma(stoch(_rsi, _rsi, _rsi, _stoch_length), _smooth)
    _signal = sma(_stoch, _signal_smooth)
    _return_trigger = _stoch >= _signal ? true : false
//  ||-----------------------------------------------------------------------------||
//  ||-----------------------------------------------------------------------------||
//  ||  Check Directional Bias from daily timeframe:
daily_trigger = security('NGAS', 'D', f_macd_trigger(macd_src, macd_fast, macd_slow, macd_signal_smooth) and f_srsi_trigger(srsi_src, srsi_rsi_length, srsi_stoch_length, srsi_smooth, srsi_signal_smooth))
h4_trigger = security('NGAS', '240', f_macd_trigger(macd_src, macd_fast, macd_slow, macd_signal_smooth) and f_srsi_trigger(srsi_src, srsi_rsi_length, srsi_stoch_length, srsi_smooth, srsi_signal_smooth))

plot(title='D1T', series=daily_trigger?0:na, style=circles, color=blue, linewidth=4, transp=65)
plot(title='H4T', series=h4_trigger?0:na, style=circles, color=navy, linewidth=2, transp=0)

sel_open = sel_trade and not daily_trigger and not h4_trigger
buy_open = buy_trade and daily_trigger and h4_trigger
sel_close = not buy_trade and daily_trigger and h4_trigger
buy_close = not sel_trade and not daily_trigger and not h4_trigger
strategy.entry('sel', long=false, qty=trade_size, comment='sel', when=sel_open)
strategy.close('sel', when=sel_close)
strategy.entry('buy', long=true, qty=trade_size, comment='buy', when=buy_open)
strategy.close('buy', when=buy_close)


Lebih banyak