# 이중 EMA 이동평균선과 ATR 지표를 결합한 필터링 추세 추종 전략
개요
해당 전략은 이중 EMA 이동평균선을 사용하여 골든 크로스 시 매수, 데드 크로스 시 매도하는 고전적인 추세 추종 전략에 ATR 지표와 ADX 지표를 추가로 필터로 활용하여 강한 추세에서는 추적하고, 변동장에서는 리스크를 관리합니다.
전략 원리
이 전략은 주로 다음 사항에 기반합니다.
-
비교적 단기인 8주기 EMA와 장기인 20주기 EMA를 사용하여 골든 크로스와 데드 크로스 신호를 생성합니다. EMA 자체가 추세 추종 성격을 가집니다.
-
ATR 지표는 최근 변동성을 나타냅니다. ATR을 정규화하여 EMA 교차 필터 조건을 동적으로 조정함으로써 강한 추세 추적 시 요구 조건을 낮추고, 변동장에서는 필터를 강화하여 리스크를 통제합니다.
-
ADX 지표로 추세 강도를 판단합니다. ADX 값이 30보다 크면 강한 추세로 간주하고 이때 손절매를 통해 방어합니다.
-
상승/하락 추세를 결합하여 매수/매도 시점을 판단합니다. 상승장에서는 골든 크로스 시 매수, 하락장에서는 데드 크로스 시 매도합니다.
-
거래량 필터를 적용하여 거래량이 증가할 때 진입합니다.
-
USD 지수로 달러 강세를 간단히 판단하여 달러가 강할 때 손절 및 이익실현 폭을 확대합니다.
-
슈퍼트렌드 지표를 결합하여 전반적인 시장 흐름을 판단하고 매수/매도 시점 결정을 보조합니다.
이 전략은 추세 지표와 변동성 지표를 충분히 활용하여 동적으로 매개변수를 조정하며, 추세를 추적하는 동시에 리스크를 관리합니다.
전략 장점
-
이중 EMA 시스템으로 추세를 판단하며, EMA의 평활성 덕분에 가짜 돌파를 효과적으로 걸러냅니다.
-
ATR 지표가 EMA 교차 필터 조건을 동적으로 조정하여 다양한 시장 환경에 유연하게 대응할 수 있습니다.
-
ADX 지표와 거래량을 보조 판단 지표로 사용하여 변동장에서 갇히는 것을 방지합니다.
-
달러 지수와 슈퍼트렌드 지표를 고려하여 큰 추세를 판단함으로써 의사 결정의 정확성을 높입니다.
-
리스크 관리 매개변수가 달러 강세에 따라 자동 조정되어 강달러 시 손절 및 이익실현 폭이 확대됩니다.
-
직관적인 골든 크로스/데드 크로스 매매 신호와 손절/이익실현 전략을 사용하여 구현과 백테스트가 용이합니다.
전략 리스크
-
이중 EMA 시스템은 추세 전환점 판단에 시차가 존재합니다.
-
ATR 매개변수를 부적절하게 선택하면 지나치게 공격적이거나 보수적으로 작용할 수 있습니다.
-
ADX 매개변수 최적화가 필요하며, ADX 고점 설정이 잘못되면 추세를 놓칠 수 있습니다.
-
달러 지수 및 슈퍼트렌드 지표 판단이 오류를 가질 수 있습니다.
-
손절 폭이 너무 작으면 손실이 커질 수 있고, 너무 크면 물릴 위험이 있습니다.
최적화 방안
-
MACD 등 다른 지표를 결합하여 추세 전환점을 판단하는 것을 고려할 수 있습니다.
-
더 많은 과거 데이터를 활용하여 ATR 매개변수 공간을 학습시키고 최적 매개변수 범위를 찾습니다.
-
다양한 ADX 매개변수를 테스트하고 ADX 고점 판단을 최적화합니다.
-
달러 지수와 시장 전반 흐름을 판단하는 변수를 더 추가합니다.
-
백테스트 데이터를 기반으로 최적 손절 폭을 계산합니다.
-
손절 방식을 이동 손절 또는 변동 손절로 변경하는 것을 고려합니다.
-
포지션 규모와 보유 기간을 지속적으로 최적화합니다.
요약
본 전략은 고전적인 이중 EMA 시스템과 여러 보조 지표를 통합하고, 매개변수 자동 최적화를 통해 비교적 완성도 높은 추세 추종 전략을 구현했습니다. 시장 환경 변화에 유연하게 대응하며 추세를 추적하는 동시에 리스크를 관리합니다. 그러나 손절 및 지표 매개변수에 대한 추가 테스트와 최적화가 필요하며, 이를 통해 보다 안정적인 수익을 얻을 수 있습니다. 이 전략의 접근 방식은 참고하고 개선할 가치가 있습니다.
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Refactored Advanced EMA Cross with Normalized ATR Filter, Controlling ADX", shorttitle="ALP V5", overlay=true)
// Initialize variables to track if a buy order has been placed and number of periods since the last buy- 1

