Strategi Perdagangan Momentum Sistem Dual-Track

Penulis:ChaoZhang, Tanggal: 2023-11-22 15:26:28
Tag:

Gambaran umum

Strategi ini menggabungkan indikator MACD dan Stoch RSI untuk membangun sistem perdagangan dual-rail untuk pelacakan tren dan penilaian oversold / overbought.

Prinsip Strategi

Strategi ini menggabungkan indikator MACD dan Stoch RSI, yang merupakan jenis indikator teknis yang berbeda, untuk konfigurasi.

Strategi ini pertama-tama membangun indikator MACD dan Stoch RSI pada kerangka waktu harian dan 4 jam masing-masing untuk penilaian tren dan overbought/oversold.

Secara khusus, indikator MACD dibangun dengan garis DIF dan DEA yang membentuk salib emas/mati untuk penilaian; indikator Stoch RSI dibangun dengan garis K dan D yang membentuk salib emas/mati untuk penilaian.

Dengan demikian, dengan menerapkan sistem indikator ganda secara komprehensif dan penilaian multi-frame waktu, strategi menilai kecepatan harga dan kekuatan relatif secara menyeluruh, yang membantu meningkatkan akurasi keputusan dan mendapatkan pengembalian yang lebih baik.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Menggabungkan sistem indikator ganda untuk penilaian yang komprehensif dan akurasi keputusan yang lebih tinggi
  2. Menerapkan kerangka waktu multi untuk mengurangi kemungkinan kesalahan penilaian
  3. Mengadopsi pelacakan tren dan penilaian overbought/oversold untuk mempertimbangkan kecepatan harga dan kekuatan relatif
  4. Parameter indikator fleksibel yang dapat disesuaikan untuk produk dan lingkungan pasar yang berbeda
  5. Struktur kode yang bersih mudah dipahami dan diperluas

Analisis Risiko

Ada juga beberapa risiko dengan strategi ini:

  1. Ada risiko pasar sistemik yang tidak dapat dihindari sepenuhnya
  2. Pengaturan parameter indikator yang tidak tepat dapat menyebabkan overtrading atau kehilangan peluang
  3. Indikator ganda masih dapat memberikan sinyal yang salah secara bersamaan, tetapi kurang mungkin daripada indikator tunggal
  4. Tidak mampu mengatasi perubahan pasar drastis seperti peristiwa Black Swan

Pengendalian:

  1. Mengoptimalkan parameter dan menyesuaikan kondisi perdagangan untuk mengurangi penilaian yang salah
  2. Masukkan lebih banyak indikator untuk penilaian gabungan
  3. Menambahkan mekanisme stop loss untuk mengendalikan risiko kerugian tunggal

Arahan Optimasi

Strategi ini juga dapat ditingkatkan dalam hal berikut:

  1. Masukkan lebih banyak indikator untuk strategi multi-indikator
  2. Tambahkan algoritma pembelajaran mesin untuk optimasi parameter dinamis
  3. Menggabungkan indikator sentimen, berita dll untuk penilaian kondisi pasar yang lebih komprehensif
  4. Tambahkan stop loss, mengambil strategi keuntungan untuk mengoptimalkan manajemen uang
  5. Ekspansi ke lebih banyak produk perdagangan untuk menemukan peluang yang lebih baik

Kesimpulan

Dengan aplikasi gabungan dari sistem indikator ganda dan penilaian multi-frame, strategi ini menilai kecepatan harga dan kekuatan relatif secara menyeluruh, yang dapat secara efektif menangkap tren pasar dan memperbaiki kekurangan indikator tunggal. [trans]


/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-15 10:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='[RS]Khizon (UWTI) 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('USOIL', '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('USOIL', '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