다중 요인 중심의 트렌드 거래 전략

저자:차오장, 날짜: 2024-01-17 14:02:22
태그:

img

요약

이 전략은 이동 평균 컨버전스 디버전스 (MACD) 지표와 스토카스틱 상대 강도 지표 (Stoch RSI) 지표를 결합하여 시장 트렌드 방향을 결정합니다. 트렌드가 상승할 때 길고 트렌드가 하락할 때 짧습니다. 트렌드 거래 전략 범주에 속합니다.

전략 논리

이 전략은 시장 트렌드 방향을 결정하기 위해 MACD 및 Stoch RSI 지표를 사용합니다.

MACD 지표는 빠른 EMA 라인, 느린 EMA 라인 및 그 사이의 차이로 구성되어 있으며, 단기 및 장기 이동 평균의 컨버전스 및 분리를 반영합니다. 빠른 라인이 느린 라인 위에 넘어가면 구매 신호입니다. 빠른 라인이 느린 라인 아래에 넘어가면 판매 신호입니다.

스톡 RSI 지표는 시장에서 과잉 구매 및 과잉 판매 수준을 보여주기 위해 RSI와 스톡 지표의 강점을 결합합니다. 스톡 RSI가 스톡 RSI 신호 라인보다 크면 구매 신호입니다. 신호 라인보다 낮으면 판매 신호입니다.

이 전략은 시장 트렌드를 결정하기 위해 MACD와 스톡 RSI를 일일 및 4시간 시간 프레임에 사용합니다. 두 지표가 일일 및 4시간 차트에서 구매 신호를 생성할 때, 장거리로 이동합니다. 두 지표가 판매 신호를 생성할 때, 단위로 이동하십시오. 이것은 잘못된 신호를 효과적으로 필터링하고 신뢰성을 향상시킬 수 있습니다.

장점

  1. 시장 움직임을 판단하기 위해 이중 요인을 결합하면 잘못된 신호를 효과적으로 필터링하고 신호 정확도를 향상시킬 수 있습니다.

  2. 높은 시간 프레임과 낮은 시간 프레임 (일일 및 4H) 을 통해 신호를 검증하는 것은 화프스를 피합니다.

  3. 추세에 따라 불안한 시장을 피합니다

  4. 간단하고 명확한 전략 논리, 이해하기 쉽고 실행하기 쉽습니다

위험 과 해결책

  1. 트렌드 반전 지점을 효과적으로 결정하지 못하는 경우 스톱 로스가 발동될 수 있습니다.
  • 매개 변수를 최적화하거나 판단을 위해 다른 지표를 추가
  1. 단일 계약은 체계적인 시장 위험을 다양화 할 수 없습니다.
  • 다른 계약이나 주식을 늘려 다양화
  1. 갑작스러운 큰 사건의 영향을 결정할 수 없습니다.
  • 위험 인식 강화를 위해 근본 분석을 결합

최적화 방향

  1. 입점 및 출구 지점을 최적화하기 위해 MACD 및 Stoch RSI 매개 변수를 조정합니다.

  2. 수익을 차단하기 위해 후속 중지 전략을 추가

  3. 거래 리스크별 제어에 위치 크기를 추가합니다.

  4. 신호 정확성을 향상시키기 위해 판단 할 수있는 더 많은 요소를 추가하십시오.

  5. 매개 변수를 동적으로 최적화하기 위해 기계 학습 방법을 사용

요약

이 전략은 이중 요인 모델을 통해 트렌드 방향을 결정하고 시간 프레임에 걸쳐 신호를 검증합니다. 그것은 특정 위험 관리 기능과 오류의 여지가있는 상대적으로 안정적이고 신뢰할 수있는 트렌드 다음 전략입니다. 매개 변수 최적화, 스톱 로스, 포지션 사이징 및 기타 모듈을 추가하여 성능을 더욱 향상시킬 수 있습니다.


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


더 많은