이동평균선(MA)을 활용한 자동매매 투자 전략 요약
자동매매 전략을 처음 접할 때 가장 많이 사용하는 방법 중 하나가
이동평균선(Moving Average, MA) 입니다.
이 글에서는 이동평균선의 개념부터 골든 크로스 / 데드 크로스,
그리고 이를 활용한 간단한 자동매매 로직과 백테스트 개념까지 정리합니다.
1. 이동평균선(Simple Moving Average, SMA)
이동평균선이란?
이동평균선(SMA) 은
일정 기간 동안의 주가 평균값을 계속 이어서 그린 선입니다.
가격의 단기 변동을 완화해
전체적인 추세를 파악하는 데 많이 사용됩니다.
대표적인 이동평균선
- SMA20 : 최근 20개 가격의 평균
- SMA60 : 최근 60개 가격의 평균
Python 예시 코드 (5일 이동평균)
data = [10, 15, 20, 25, 30, 35, 40, 45, 50, 45, 40, 35, 30, 25, 20, 15, 10, 5, 10, 15]
ma05 = []
for i in range(5, len(data)):
avg = sum(data[i-5:i]) / 5
ma05.append(avg)
print(ma05)
- data[i-5:i] : 최근 5개의 가격
- 해당 구간의 평균값을 계산해 이동평균선 생성
2. 골든 크로스 & 데드 크로스
이동평균선을 활용한 대표적인 매매 신호입니다.
골든 크로스 (Golden Cross)
- 짧은 이동평균선(MA20) 이
긴 이동평균선(MA60) 을
아래에서 위로 돌파 - ➔ 매수 신호
데드 크로스 (Dead Cross)
- 짧은 이동평균선이
긴 이동평균선을
위에서 아래로 돌파 - ➔ 매도 신호
3. 매매 전략 구현
(1) 의사 코드(Pseudo Code)
if MA20 값이 MA60 보다 작았다가 커진 경우:
매수 신호
elif MA20 값이 MA60 보다 컸다가 작아진 경우:
매도 신호
(2) 실제 파이썬 코드
if ma20[i-1] < ma60[i-1] and ma20[i] >= ma60[i]:
# 매수 신호
elif ma20[i-1] >= ma60[i-1] and ma20[i] < ma60[i]:
# 매도 신호
이전 시점과 현재 시점을 비교해
이동평균선의 교차 여부를 판단합니다.
(3) 차이값으로 계산 단순화
이동평균선의 차이값을 활용하면 로직을 더 간단하게 만들 수 있습니다.
prev = ma20[i-1] - ma60[i-1]
current = ma20[i] - ma60[i]
if prev < 0 and current >= 0:
# 매수 신호
elif prev >= 0 and current < 0:
# 매도 신호
- 음수 → 양수 : 골든 크로스
- 양수 → 음수 : 데드 크로스
4. 백테스트(Backtest)
백테스트란?
과거 데이터로 투자 전략을 가상으로 실행해보는 과정입니다.
실제 돈을 투자하기 전에 전략의 성능을 미리 검증할 수 있습니다.
백테스트 기본 과정
- 과거 가격 데이터 준비
- 이동평균선 계산
- 매수 / 매도 신호 발생 시 가상 거래
- 최종 수익률 계산
백테스트 의사 코드
가격_데이터 = [...]
잔고 = 10000000
수량 = 0
for 처음 시점부터 마지막 시점까지:
이동 평균선 계산하기
매매 전략 판단하기
if 매수 신호:
매수를 가정하고 잔고와 수량 변경
if 매도 신호:
매도를 가정하고 잔고와 수량 변경
현재 수익률 계산
정리
- 이동평균선은 추세를 파악하는 가장 기본적인 지표
- 골든 크로스 / 데드 크로스를 이용해 매매 신호 생성 가능
- 간단한 조건문으로 자동매매 로직 구현 가능
- 백테스트를 통해 전략의 성능을 사전에 검증해야 함
👉 이 전략을 기반으로
실제 주식 데이터 + 증권사 API + 자동매매 코드로 확장할 수 있습니다.
728x90
'개발 > Python 프로젝트: 주식 자동 매매' 카테고리의 다른 글
| [주식 자동 매매] 5. 주식 투자 자동화 프로젝트 정리 (0) | 2025.12.20 |
|---|---|
| [주식 자동 매매] 3. 한국투자증권 오픈 API로 주식 데이터 가져오기 (파이썬 예제 포함) (0) | 2025.12.20 |
| [주식 자동 매매] 2. requests 모듈 사용법 (0) | 2025.12.20 |
| [주식 자동 매매] 1. 리퀘스트(Request)와 리스폰스(Response) 쉽게 정리 (0) | 2025.12.20 |