추세 모멘텀 추적 전략
개요
본 전략은 사용자 정의 지표 적분기를 기반으로 가격과 이동평균선 간 거리의 누적 합계를 통해 가격 추세 방향을 판단하여 추세 추종을 구현합니다.
전략 원리
이 전략은 사용자 정의 지표를 사용하여 가격과 이동평균선 간 거리를 누적 합산하며, 구체적인 구현은 다음과 같습니다:
-
가격 대비 길이 200의 단순이동평균선과의 거리 k=close-sma(close,200)를 계산합니다.
-
누적 주기 s=29를 정의하고, 최근 s주기 내의 k 값을 누적 합산합니다: sum=0, for i=0 to s, sum:=sum+k[i]
-
sum>0 일 때 롱(Long) 신호가 발생하고, sum<0 일 때 숏(Short) 신호가 발생합니다.
-
롱 포지션 진입 시 sum<0 이면 청산하고, 숏 포지션 진입 시 sum>0 이면 청산합니다.
이 전략은 가격과 이동평균선 간 거리의 누적합 부호를 추적하여 가격의 전반적인 추세 방향을 판단합니다. 누적합이 양수이면 상승 추세에 있다고 보고 롱 포지션을 유지하며, 누적합이 음수이면 하락 추세에 있다고 보고 숏 포지션을 유지합니다.
전략 장점
-
사용자 정의 지표 적분기를 사용하여 가격 추세 방향을 효과적으로 판단할 수 있습니다.
-
적분 개념을 도입하여 가격과 이동평균선 간 거리를 누적함으로써 추세 판단의 정확성을 높일 수 있습니다.
-
비교적 간단한 로직으로 이해와 구현이 쉬우며, 최적화 및 개선이 용이합니다.
-
적분 주기 매개변수를 유연하게 조정하여 적분기의 추세 판단 민감도를 최적화할 수 있습니다.
-
백테스트 결과가 양호하고 수익이 안정적이어서 실제 적용이 가능합니다.
전략 리스크
-
적분 주기 설정이 부적절하면 적분기의 반응이 둔화되어 추세 전환점을 놓칠 수 있습니다.
-
이동평균선 길이 설정이 부적절하면 적분기가 가격 추세를 잘못 판단할 수 있습니다.
-
돌발적인 주요 이벤트로 인해 가격이 급변하면 적분기가 잘못된 신호를 생성할 수 있습니다.
-
거래 종목 선택이 부적절하여 변동성이 너무 큰 종목을 선택하면 적분기의 효과가 떨어집니다.
리스크에 대한 대응 방안:
-
적분 주기 매개변수를 최적화하여 적분기가 추세 변화에 더 민감하게 반응하도록 합니다.
-
다양한 길이의 이동평균선 효과를 테스트하여 추세를 효과적으로 판단할 수 있는 길이를 선택합니다.
-
주요 이벤트 전에 전략을 중단하여 급격한 가격 변동으로 인한 잘못된 신호를 방지합니다.
-
변동성이 낮은 거래 종목을 선택하여 적분기의 효과를 높입니다.
전략 최적화 방향
-
적분기 기반에 RSI와 같은 보조 지표를 추가하여 종합적인 판단을 형성할 수 있습니다.
-
다양한 유형의 이동평균선과 가격 간 거리의 적분 효과를 연구할 수 있습니다.
-
적분 주기 매개변수를 자동으로 최적화하여 다양한 거래 종목에 적응할 수 있도록 시도할 수 있습니다.
-
거래량 지표를 추가하여 가격이 급격히 변동할 때 적분기가 잘못된 신호를 생성하는 것을 방지할 수 있습니다.
-
머신러닝 등 방법을 통해 적분기 매개변수를 자동으로 최적화하여 전략의 견고성을 높일 수 있습니다.
요약
본 전략은 사용자 정의 지표 적분기를 통해 가격 추세 방향을 판단하고, 가격과 이동평균선 간 거리의 누적 합계 방법을 사용하여 추세를 효과적으로 추종합니다. 전략 로직은 간단하고 명확하며, 백테스트 성과가 양호합니다. 적분기 매개변수 조정, 보조 지표 추가, 자동 최적화 등의 방법을 통해 개선하여 실전에서 더욱 안정적이고 신뢰할 수 있도록 만들 수 있습니다. 전반적으로 이 전략은 실제 적용 가능한 양적 추세 추종 전략입니다.
/*backtest
start: 2023-10-09 00:00:00
end: 2023-10-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=100, overlay=true)
l = input(defval=170,title="Length for indicator")- 1

