이동평균선 교차 전략 기반
개요
이동평균선 교차 전략은 이동평균선을 기반으로 한 거래 전략입니다. 빠른 이동평균선과 느린 이동평균선의 교차를 매수 및 매도 신호로 사용합니다. 빠른 이동평균선이 아래에서 위로 느린 이동평균선을 돌파하면 매수 신호가 발생하고, 빠른 이동평균선이 위에서 아래로 느린 이동평균선을 하향 돌파하면 매도 신호가 발생합니다.
전략 원리
해당 전략은 sma 함수를 사용하여 지정된 기간의 단순 이동평균선을 계산하며, 이를 빠른 이동평균선과 느린 이동평균선으로 사용합니다. 전략의 기본 빠른 이동평균선 기간은 18일이며, 매개변수를 통해 조정할 수 있습니다.
빠른 이동평균선이 아래에서 위로 느린 이동평균선을 돌파할 때 crossunder 함수를 사용하여 교차 신호를 감지하고 매수 신호를 생성합니다. 빠른 이동평균선이 위에서 아래로 느린 이동평균선을 하향 돌파할 때 crossover 함수를 사용하여 교차 신호를 감지하고 매도 신호를 생성합니다.
전략은 track 신호와 exit 신호를 통해 자동 거래를 구현합니다. 롱 포지션 진입은 빠른 이동평균선이 아래에서 느린 이동평균선을 돌파할 때 발생하며, 숏 포지션 진입은 빠른 이동평균선이 위에서 느린 이동평균선을 하향 돌파할 때 발생합니다. 해당 exit 신호는 반대 방향 교차 시에도 생성됩니다.
장점 분석
- 이동평균선 교차를 사용하면 강력한 추세 추종 능력을 가지며, 가격 추세를 효과적으로 포착할 수 있습니다.
- 이동평균선 전략은 비교적 단순하고 직관적이며, 논리가 명확하여 이해하고 구현하기 쉽습니다.
- 이동평균선 매개변수를 조정하여 전략을 최적화하고 다양한 시장 환경에 적응할 수 있습니다.
- 전략이 자동 거래를 구현하여 인적 개입이 필요 없으며, 운영 비용을 절감할 수 있습니다.
위험 및 해결 방법
- 가격이 횡보 구간에 있을 때 여러 번의 비효율적인 교차 신호가 발생하여 잦은 거래 위험이 있습니다. 필터 조건을 추가하여 방지할 수 있습니다.
- 매개변수 최적화 문제에 주의해야 합니다. 서로 다른 매개변수는 전략 성과에 큰 영향을 미칩니다. 백테스트를 통해 매개변수를 최적화하거나 적응형 이동평균선을 도입할 수 있습니다.
- 신호를 놓칠 위험이 있으므로, 다른 지표를 결합하여 신호를 필터링하거나 보조 조건으로 사용할 수 있습니다.
- 손절매 전략을 도입하여 개별 거래 손실을 통제할 수 있습니다.
최적화 방향
- 적응형 이동평균선 또는 동적 최적화된 이동평균선 매개변수를 도입하여 매개변수를 동적으로 조정하고 시장을 더 잘 추종할 수 있습니다.
- 가격 횡보나 추세 불명확 시 오류 신호를 방지하기 위해 필터 조건을 추가할 수 있습니다. 예를 들어 거래량 필터를 도입할 수 있습니다.
- 볼린저 밴드와 같은 다른 지표를 필터 또는 진입 보조 조건으로 결합하여 전략 성능을 향상시킬 수 있습니다.
- 손절매 전략을 도입하여 개별 거래 손실을 허용 가능한 범위 내로 통제할 수 있습니다.
요약
이동평균선 교차 전략은 전반적으로 비교적 고전적이고 간단한 추세 추종 전략입니다. 주로 이동평균선 교차를 거래 신호로 사용하며, 원리가 단순하고 직관적이며 이해하고 구현하기 쉽고 매개변수 조정을 통해 시장에 적응할 수 있습니다. 그러나 횡보나 추세 전환에 취약하고 신호 빈도가 높은 등의 몇 가지 단점도 있습니다. 이러한 문제는 필터 조건 추가, 매개변수 동적 조정, 손절매 도입 등을 통해 개선할 수 있습니다. 해당 전략은 광범위한 최적화 공간과 방향을 가지고 있으며, 퀀트 트레이딩의 기본 전략 중 하나입니다.
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-17 04:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title = "MA Close Strategy", shorttitle = "MA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
MASource = input(defval = open, title = "MA Source")- 1

