Multi-Timeframe MACD StochRSI-Kombi-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-09-13 12:05:46
Tags:

Diese Strategie kombiniert die MACD- und StochRSI-Indikatoren über mehrere Zeitrahmen hinweg, um die Zuverlässigkeit der Handelssignale zu verbessern.

Strategie Logik:

  1. Berechnung des MACD und des StochRSI für Tages- und 4-Stunden-Perioden.

  2. Eintritt man in den Long, wenn beide Aufwärtssignale auf Tages- und 4-Stunden-Termine ausgerichtet sind.

  3. Gehen Sie kurz ein, wenn sich beide bärischen Signale auf täglich und 4-Stunden ausrichten.

  4. Halten Sie die Position, bis entgegengesetzte Signale auf beiden Zeitrahmen erscheinen.

  5. Die Kreuzvalidierung über mehrere Zeitrahmen verbessert die Genauigkeit.

Vorteile:

  1. Mehrfach-Zeitrahmenanalyse verbessert die Signalstabilität.

  2. MACD und StochRSI bestätigen sich gegenseitig.

  3. Klaren Ein- und Ausstiegsregeln erleichtern die Prüfung und Durchführung.

Risiken:

  1. Mehrzeitrahmenkombinationen lassen die Handelseinträge zurück.

  2. Komplexe Parameteroptimierung über Perioden hinweg.

  3. Potenziell weniger Geschäfte Nicht in der Lage, alle Marktchancen voll auszunutzen.

Zusammenfassend lässt sich sagen, dass dieser mehrzeitliche Ansatz die Signalqualität verbessern kann, jedoch eine Ausgleichsoptimierung und Verzögerung gegenüber risikoadjustierten Renditen erfordert.


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

Mehr