모멘텀 지표 보조 이동평균선 회전 거래 전략
개요
본 전략은 모멘텀 지표와 이동평균선의 조합을 활용하여 시장 추세와 반전 지점을 식별하고, 추세 전환 시점에 거래를 실행하는 추세 추종 및 역추세 전략입니다. 주로 수급 구역, EMA 이동평균, 각종 HH, LL, LH, HL 매매 구역 표시, ATR 손절매 등의 모듈로 구성됩니다.
전략 원리
1. 수급 구역 식별
캔들의 고가와 저가 범위를 기준으로 수급 관계를 구분하며, 빨간색 영역은 공급이 수요를 초과하는 공급 구역, 초록색 영역은 수요가 공급보다 많은 수요 구역을 나타냅니다.
2. EMA 추세 판단
기간 200의 EMA 이동평균선을 계산하여 표시하고, 가격과 EMA의 크기 관계를 통해 매수/매도 추세를 판단합니다. 가격이 EMA보다 높으면 상승 추세, 가격이 EMA보다 낮으면 하락 추세로 간주합니다.
3. 매매 구역 표시
최근 2개 캔들의 고가와 저가 상황을 기준으로 반전 구역을 판단합니다:
- HH 구역(상승 고점 구역) — 연속 2개 캔들의 고가가 신고가 경신
- LL 구역(하락 저점 구역) — 연속 2개 캔들의 저가가 신저가 경신
- LH 구역(하락 고점 구역) — 최근 1개 캔들의 고가가 신고가를 경신했으나, 다음 캔들의 고가가 반전되어 하락 고점에 해당
- HL 구역(상승 저점 구역) — 최근 1개 캔들의 저가가 신저가를 경신했으나, 다음 캔들의 저가가 반전되어 상승 저점에 해당
4. ATR 손절매 추적
14주기 ATR 값을 계산하고, 여기에 계수 2를 곱하여 본 전략의 손절매 기준선으로 사용합니다.
5. 진입 및 손절매 청산
가격과 전일 캔들의 고가/저가 관계를 모니터링합니다. 가격이 전일 고가보다 높으면 매수 신호가 발생하고, 가격이 전일 저가보다 낮으면 매도 신호가 발생합니다. 진입 신호는 3번째 캔들에서 확인하여 충격 변동으로 인한 잘못된 신호를 방지합니다. ATR 손절매 추적 방식을 사용하여 가격이 손절매 기준선을 넘어 후퇴하면 능동적으로 손절매하여 현재 신호를 청산합니다.
장점 분석
- 다양한 지표를 활용하여 추세와 주요 반전 구역을 식별함으로써 수익 확률을 높입니다.
- ATR 손절매 방식은 개별 거래의 손실 위험을 효과적으로 통제할 수 있습니다.
- 진입 지연을 통해 유효 신호를 확인하여 잘못된 거래 확률을 줄입니다.
위험 분석
- 기술적 지표에만 의존하고 기본적 정보를 결합하지 않아 중요한 정보를 놓쳐 거래 실패로 이어질 수 있습니다.
- ATR 손절매 방식은 큰 폭의 변동 장세에서 돌파되어 손실을 초래할 수 있습니다.
- 횡보 추세에서는 EMA 반전 거래 신호가 빈번하게 발생하여 과도한 거래로 이어질 수 있습니다.
위험 해결 방법:
- 주요 경제 데이터 및 정책 판단을 결합하여 운용을 결정합니다.
- ATR 손절매 계수를 적절히 확대하여 충분한 여유 공간을 확보합니다.
- ATR 손절매의 주기 매개변수를 조정하여 횡보장에서 지나치게 민감하게 반응하지 않도록 합니다.
최적화 방향
- MACD, RSI 등 다른 기술적 지표와 결합하여 진입 시점을 판단합니다.
- 다양한 주기 매개변수와 계수 매개변수의 조합을 테스트하여 최적의 매개변수를 찾습니다.
- 재돌파 필터를 추가하여 신호가 함정에 빠지는 것을 방지하는 방안을 고려할 수 있습니다.
- 머신러닝 등의 방법을 활용하여 매개변수를 동적으로 최적화합니다.
요약
본 전략은 수급 분석, 추세 판단, 반전 식별 및 손절매 관리 모듈을 종합적으로 활용하여 시장의 주요 구역에서 전환 기회를 효과적으로 포착합니다. 이는 효과적인 추세 추종 및 역추세 거래 전략입니다. 동시에 지속적인 테스트와 최적화가 필요하며, 경험에 기반한 수동 판단을 보조하여 장기적으로 안정적인 수익을 얻을 수 있습니다.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-20 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supply and Demand Zones with EMA and Trailing Stop", shorttitle="SD Zones", overlay=true)
showBuySignals = input(true, title="Show Buy Signals", group="Signals")- 1

