Strategi Dagangan Trend Bertumpu pada pelbagai faktor

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

img

Ringkasan

Strategi ini menggabungkan penunjuk Moving Average Convergence Divergence (MACD) dan penunjuk Stochastic Relative Strength Index (Stoch RSI) untuk menentukan arah trend pasaran, pergi lama apabila trend meningkat dan pergi pendek apabila trend menurun.

Logika Strategi

Strategi ini menggunakan penunjuk MACD dan Stoch RSI untuk menentukan arah trend pasaran.

Indikator MACD terdiri daripada garis EMA pantas, garis EMA perlahan dan perbezaan di antara mereka, yang mencerminkan konvergensi dan divergensi purata bergerak jangka pendek dan jangka panjang. Apabila garis pantas melintasi di atas garis perlahan, ia adalah isyarat beli. Apabila garis pantas melintasi di bawah garis perlahan, ia adalah isyarat jual.

Indikator Stoch RSI menggabungkan kekuatan kedua-dua indikator RSI dan Stoch untuk menunjukkan tahap overbought dan oversold di pasaran. Apabila Stoch RSI lebih besar daripada garis isyarat Stoch RSI, ia adalah isyarat beli. Apabila lebih rendah daripada garis isyarat, ia adalah isyarat jual.

Strategi ini menggunakan MACD dan Stoch RSI pada jangka masa harian dan 4 jam untuk menentukan trend pasaran. Apabila kedua-dua penunjuk menghasilkan isyarat beli pada carta harian dan 4 jam, pergi panjang. Apabila kedua-dua menghasilkan isyarat jual, pergi pendek. Ini dapat menapis isyarat palsu dengan berkesan dan meningkatkan kebolehpercayaan.

Kelebihan

  1. Menggabungkan dua faktor untuk menilai pergerakan pasaran boleh menapis isyarat palsu dengan berkesan dan meningkatkan ketepatan isyarat

  2. Memvalidasi isyarat merentasi jangka masa tinggi dan rendah (tiap hari dan 4H) mengelakkan mendapat whipsawed

  3. Mengikuti trend mengelakkan pasaran bergelombang

  4. Logik strategi yang mudah dan jelas, mudah difahami dan dilaksanakan

Risiko dan Penyelesaian

  1. Kegagalan untuk menentukan titik pembalikan trend secara berkesan boleh menyebabkan stop loss yang dicetuskan
  • Mengoptimumkan parameter atau menambah penunjuk lain untuk menilai
  1. Kontrak tunggal tidak boleh mempelbagaikan risiko sistematik pasaran
  • Meningkatkan kontrak atau stok lain untuk mempelbagaikan
  1. Tidak boleh menentukan kesan peristiwa besar tiba-tiba
  • Menggabungkan analisis asas untuk meningkatkan kesedaran risiko

Arahan pengoptimuman

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

  2. Tambah strategi hentian untuk mengunci keuntungan

  3. Tambah saiz kedudukan kepada kawalan mengikut risiko perdagangan

  4. Tambah lebih banyak faktor untuk menilai untuk meningkatkan ketepatan isyarat

  5. Gunakan kaedah pembelajaran mesin untuk mengoptimumkan parameter secara dinamik

Ringkasan

Strategi ini menentukan arah trend melalui model faktor dua dan mengesahkan isyarat merentasi jangka masa. Ia adalah trend yang agak stabil dan boleh dipercayai mengikuti strategi, dengan keupayaan pengurusan risiko tertentu dan ruang untuk kesilapan. Prestasinya boleh ditingkatkan lagi dengan menambah pengoptimuman parameter, stop loss, saiz kedudukan dan modul lain.


/*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 lanjut