교차 주기 추세 추종형 퀀트 전략
개요
본 전략은 PSAR 지표로 가격 추세를 판단하고, ADX 지표로 추세 강도를 측정하며, RSI 지표로 과매수/과매도 구간을 식별하고, CMF 지표로 자금 흐름을 분석하여, 크로스-주기 추세 추종형 퀀트 트레이딩 전략을 구축합니다. 이 전략은 가격이 횡보를 돌파하여 새로운 추세 방향을 형성할 때 신속하게 진입하고, 이후 추세를 지속적으로 추적하며, 주요 추세 수익을 확보하는 동시에 과정 필터 조건을 설정하여 포지션 리스크를 낮춥니다.
전략 원리
본 전략의 주요 판단 규칙은 다음과 같습니다:
-
PSAR 지표를 사용하여 가격이 상승 추세에 있는지 판단합니다. PSAR이 가격을 하향 돌파하면 상승 추세가 종료되고 하락 추세로 전환된 것으로 간주합니다.
-
RSI 지표가 중간선 50 이상이어야 합니다. 이는 과매도 구간에서 발생하는 거짓 돌파를 걸러내기 위함입니다.
-
ADX가 자신의 EMA 이평선보다 높아야 합니다. 이는 추세 분석 결과에 지속적인 신호가 있음을 의미합니다.
-
CMF가 0보다 커야 하며, 이는 자금 유입으로 판단합니다.
위 네 가지 조건이 모두 충족되면 매수 신호가 발생합니다. PSAR 상향 돌파, RSI 50 미만, ADX가 자신의 EMA 이평선 미만, CMF가 0 미만일 경우 매도 신호가 발생합니다.
이 전략은 가격 추세 방향, 추세 강도, 과매수/과매도 상태, 자금 흐름 등 여러 차원을 종합적으로 고려하여 거래 규칙을 설정합니다. 거래 신호 발생 시 엄격한 논리 판단을 적용하여 거짓 돌파를 효과적으로 걸러내고, 높은 확률로 지속 가능한 추세 방향을 포착할 수 있도록 합니다.
장점 분석
본 전략의 주요 장점은 다음과 같습니다:
-
여러 지표를 결합한 거래 규칙 설정으로 거짓 돌파를 효과적으로 방지하고 거래 신호 품질을 보장합니다.
-
새로운 추세 방향을 신속하게 포착하고 추적하여 추세 진행에 따른 수익을 충분히 확보할 수 있습니다.
-
과정 추적 필터 조건을 설정하여 리스크를 효과적으로 관리하고 추적 효과를 보장합니다.
-
추세 강도 지표를 결합하여 판단함으로써 횡보장에 갇히는 것을 피할 수 있습니다.
리스크 분석
본 전략의 주요 리스크는 다음과 같습니다:
-
단일 전략은 리스크가 집중되기 쉬우므로 포지션 크기를 적절히 조정하여 전체 리스크를 제어해야 합니다.
-
추적 과정에서 필터 조건 변화를 면밀히 모니터링해야 하며, 조건이 해제될 경우 손절( Loss Cut)이 발생할 수 있습니다.
-
본 전략은 중장기 위주이므로 단기적으로 변동성 영향으로 인한 손절 리스크가 발생할 수 있습니다.
이에 따른 리스크 관리 방안으로는 포지션 관리 규칙 최적화, 리스크 경고선 설정, 손절선 거리 적절히 완화 등이 있습니다.
최적화 방향
본 전략의 최적화 가능 영역은 다음과 같습니다:
-
파라미터 설정 최적화: 현재 파라미터 설정은 다소 주관적이므로 머신러닝 방법을 도입하여 자동 최적화할 수 있습니다.
-
포지션 관리 모듈 추가: 리스크 상황에 따라 포지션 크기를 동적으로 조정할 수 있습니다.
-
손절 메커니즘 최적화: 추적 손절, 시간 손절, 돌파 손절 등 다양한 방식을 적용할 수 있습니다.
결론
본 전략은 여러 지표 판단 규칙을 종합하여 새로운 추세의 신속한 포착과 지속적인 추적을 실현하였으며, 퀀트 트레이딩이 추세와 자금 등 다차원 분석과 결합된 효과를 검증했습니다. 이 전략은 크로스-주기 추세 추종의 기초 전략으로 인덱스화하여 활용할 수 있으며, 파라미터 및 모듈 최적화 후 안정적인 중장기 퀀트 전략으로 구축할 수 있습니다.
/*backtest
start: 2023-11-14 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("psar+ adx + cmf + rsi Strategy", overlay=true,initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent , commission_value=0.1 )
start = input(1.02)- 1

