이중 이동평균선 역전 전략
개요
본 전략은 이중 이동평균선의 골든크로스와 데드크로스 원리에 기반하여 설계되었습니다. 단기 이동평균선이 장기 이동평균선을 상향 돌파하면 매수하고, 단기 이동평균선이 장기 이동평균선을 하향 돌파하면 포지션을 청산합니다. 이 전략은 간단하고 이해하기 쉬워 초보자가 학습하기에 적합합니다.
전략 원리
이 전략은 주로 sma(close, 14)와 sma(close, 28) 두 개의 이동평균선 인디케이터를 기반으로 합니다.
먼저 장단기 이동평균선을 정의합니다:
pine
short_ma = sma(close, 14)
long_ma = sma(close, 28)
그런 다음 골든크로스와 데드크로스를 기준으로 진입과 청산을 판단합니다:
pine
longCondition = crossover(short_ma, long_ma)
shortCondition = crossunder(short_ma, long_ma)
단기 이동평균선이 장기 이동평균선을 상향 돌파하면 매수합니다:
pine
strategy.entry("Buy", strategy.long, when = longCondition)
단기 이동평균선이 장기 이동평균선을 하향 돌파하면 포지션을 청산합니다:
pine
strategy.close_all(when = shortCondition)
이 전략은 원리가 간단명료하며, 이중 이동평균선의 골든크로스와 데드크로스를 활용하여 판단하므로 일정한 추세 추종 능력을 갖추고 있습니다.
장점 분석
- 전략 원리가 간단하여 초보자도 쉽게 사용할 수 있습니다.
- 이동평균선의 골든크로스와 데드크로스로 추세를 판단하여 일정한 추세 추종 능력을 보유합니다.
- 이동평균선 주기를 사용자 정의하여 전략 파라미터를 최적화할 수 있습니다.
- 손절매 지점을 설정하여 단일 거래 손실을 제어할 수 있습니다.
리스크 분석
- 이중 이동평균선 전략은 시장 변동성에 민감하여 여러 번의 손실 거래가 발생할 수 있습니다.
- 이동평균선은 후행성(지연성)이 있어 가격 반전 지점을 놓칠 수 있습니다.
- 이동평균선 교차점 근처에서 포지션을 설정하면 쉽게 물릴 수 있습니다.
- 이동평균선 주기 파라미터 최적화가 필요하며, 주기에 따라 효과가 다를 수 있습니다.
- 추세가 급격히 변할 때 빠르게 손절매하지 못할 수 있습니다.
최적화 방향
해당 전략은 다음과 같은 측면에서 최적화할 수 있습니다:
-
이동평균선 주기 파라미터 최적화, 최적의 파라미터 조합 탐색
다양한 단기 및 장기 이동평균선 주기를 시도하여 최적의 조합을 찾습니다. 예를 들어 (5, 10), (10, 20), (20, 60) 등의 파라미터를 비교 테스트합니다.
-
필터 조건 추가, 허위 신호 방지
이동평균선 교차 시 거래량, 가격 갭 등의 필터 조건을 추가하여 변동성 장에서 과도한 거래가 발생하는 것을 방지합니다.
-
손절매 전략 추가
손절매 지점을 설정하거나 이동평균선을 손절매 기준선으로 사용하여 단일 거래 손실을 제어할 수 있습니다.
-
다른 지표 결합
MACD, KDJ 등 보조 지표를 추가하여 조합 거래를 수행하고 전략 효과를 높일 수 있습니다.
-
진입 지점 최적화
이동평균선 부근에서 더 나은 진입 지점을 찾되, 이동평균선에 딱 붙어서 포지션을 설정하지 않습니다. 예를 들어 이동평균선 다이버전스가 발생한 지점에서 진입합니다.
요약
이중 이동평균선 전략은 개념이 간단하여 초보자가 쉽게 사용할 수 있습니다. 그러나 시장 변동성에 민감하여 손실 위험이 존재합니다. 파라미터 최적화, 필터 조건 추가, 손절매 설정, 다른 지표 결합 등을 통해 전략 효과를 개선할 수 있습니다. 강력한 추세에서는 좋은 성과를 낼 수 있지만, 시장이 변동하는 기간에는 신중하게 사용하거나 손절매로 리스크를 통제하는 것이 좋습니다.
/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=2
// strategy("Tester", pyramiding = 50, default_qty_type = strategy.cash, default_qty_value = 20, initial_capital = 2000, commission_type = strategy.commission.percent, commission_value = 0.25)
minGainPercent = input(0.6)- 1
