이 전략은 MACD 지표와 StochRSI 지표를 결합하여 여러 시간 주기에 대한 판단을 통해 거래 의사 결정의 안정성과 신뢰성을 향상시킵니다. 전형적인 다중 시간 축 조합 전략에 속합니다.
전략적 원칙:
일선과 4시간 주기에서 계산하는 MACD와 StochRSI 지표
당일선과 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)