개발/Python 프로젝트: 주식 자동 매매

[주식 자동 매매] 4. 투자 전략 소개(이동평균선 활용)

honeypeach 2025. 12. 20. 21:04

 

이동평균선(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)

백테스트란?

과거 데이터로 투자 전략을 가상으로 실행해보는 과정입니다.

실제 돈을 투자하기 전에 전략의 성능을 미리 검증할 수 있습니다.


백테스트 기본 과정

  1. 과거 가격 데이터 준비
  2. 이동평균선 계산
  3. 매수 / 매도 신호 발생 시 가상 거래
  4. 최종 수익률 계산

백테스트 의사 코드

가격_데이터 = [...]
잔고 = 10000000
수량 = 0

for 처음 시점부터 마지막 시점까지:
    이동 평균선 계산하기
    매매 전략 판단하기
    if 매수 신호:
        매수를 가정하고 잔고와 수량 변경
    if 매도 신호:
        매도를 가정하고 잔고와 수량 변경
    현재 수익률 계산

정리

  • 이동평균선은 추세를 파악하는 가장 기본적인 지표
  • 골든 크로스 / 데드 크로스를 이용해 매매 신호 생성 가능
  • 간단한 조건문으로 자동매매 로직 구현 가능
  • 백테스트를 통해 전략의 성능을 사전에 검증해야 함

👉 이 전략을 기반으로
실제 주식 데이터 + 증권사 API + 자동매매 코드로 확장할 수 있습니다.

 

728x90