이 전략은 거래 신호의 신뢰성을 향상시키기 위해 여러 시간 프레임에 걸쳐 MACD 및 StochRSI 지표를 결합합니다. 이것은 전형적인 멀티 타임 프레임 조합 접근법입니다.
전략 논리:
MACD와 StochRSI를 일일 및 4시간 기간에 계산합니다.
양쪽 상승 신호가 일일 및 4시간에 맞춰지면 장면을 입력합니다.
양쪽 하향 신호가 일일 및 4시간에 맞춰지면 단축을 가집니다.
두 시간 프레임에서 반대 신호가 나타날 때까지 위치를 유지하십시오.
다중 시간 프레임을 통한 교차 검증은 정확성을 향상시킵니다.
장점:
멀티 타임프레임 분석은 신호 안정성을 향상시킵니다.
MACD와 StochRSI는 서로 확인됩니다.
명확한 입출입 규칙은 테스트와 실행을 용이하게 합니다.
위험성:
다중 시간 프레임 조합은 거래 항목에 지연합니다.
기간에 걸쳐 복잡한 매개 변수 최적화
잠재적으로 더 적은 거래 시장 기회를 완전히 활용할 수 없습니다.
요약하자면, 이 다중 시간 프레임 접근법은 신호 품질을 향상시킬 수 있지만 균형 최적화와 위험 조정 수익에 대한 지연을 요구합니다.
/*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)