Strategi Kombo Multi Timeframe MACD StochRSI

Penulis:ChaoZhang, Tarikh: 2023-09-13 12:05:46
Tag:

Strategi ini menggabungkan penunjuk MACD dan StochRSI merentasi pelbagai jangka masa untuk meningkatkan kebolehpercayaan dalam isyarat perdagangan.

Logik Strategi:

  1. Mengira MACD dan StochRSI pada tempoh harian dan 4 jam.

  2. Masuk panjang apabila kedua-dua isyarat bullish sejajar pada harian dan 4 jam.

  3. Masuk pendek apabila kedua-dua isyarat bearish sejajar pada harian dan 4 jam.

  4. Simpan kedudukan sehingga isyarat bertentangan muncul pada kedua-dua jangka masa.

  5. Validasi silang melalui pelbagai kerangka masa meningkatkan ketepatan.

Kelebihan:

  1. Analisis pelbagai jangka masa meningkatkan kestabilan isyarat.

  2. MACD dan StochRSI saling mengesahkan.

  3. Peraturan kemasukan dan keluar yang jelas memudahkan ujian dan pelaksanaan.

Risiko:

  1. Gabungan jangka masa berbilang ketinggalan entri perdagangan.

  2. Pengoptimuman parameter kompleks di seluruh tempoh.

  3. Kemungkinan lebih sedikit perdagangan Tidak dapat memanfaatkan sepenuhnya semua peluang pasaran.

Ringkasnya, pendekatan pelbagai jangka masa ini boleh meningkatkan kualiti isyarat tetapi memerlukan pengoptimuman keseimbangan dan kelewatan terhadap pulangan yang disesuaikan dengan risiko.


/*backtest
start: 2023-08-13 00:00:00
end: 2023-09-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy(title='[RS]Khizon (DGAZ) 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 BTC:',  defval=1)
buy_trade = input(title='Perform buy trading?',  defval=true)
sel_trade = input(title='Perform sell trading?',  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 daily_trigger and h4_trigger
buy_open = buy_trade and not daily_trigger and not h4_trigger
sel_close = not buy_trade and not daily_trigger and not h4_trigger
buy_close = not sel_trade and daily_trigger and 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