본문 바로가기
Quant Stock

파이썬 - 이동평균선 차트 만들기 (plt.axes에 대한 설명 포함)

by quantWhale 2023. 3. 19.
반응형

안녕하세요. 지식을 공유하는 투자자 인천고래입니다.

 

오늘은 파이썬을 이용해서 이동평균선을 차트에 표현하는 코드를 알아보도록 하겠습니다.

아래는 코드가 실행된 결과 화면입니다.

 

1. 코드 실행 결과 화면

아래와 같은 결과물을 만들기 위해서는 다음의 항목을 사용해야 합니다.

  • 데이터 : FinanceDataReader를 사용해서 데이터 가져오기
  • 차트 생성 : Matplotlib 라이브러리를 사용하여 이동평균선과 체크박스를 구현하였습니다.

이동평균선 적용된 차트 만들기 - 파이썬

 

핀치 줌 아웃을 하면 차트나 글자를 확대해서 보실 수 있습니다.

이동평균선은 원하는 수치를 입력할 수 있게 변수로 설정하였고 체크박스 또한 이동평균선의 배열값을 받아서 처리하도록 하였습니다.

 

2. 파이썬으로 차트에 이동평균선 만들기

아래의 코드를 실행하면, 주가 데이터와 이동평균선을 포함한 차트가 생성됩니다.

체크박스를 클릭하여 원하는 이동평균선을 보이거나 숨길 수 있도록 구현했습니다.

차트에 나타낼 종목코드는 symbol 변수의 값을 변경하여 원하는 종목의 차트를 확인할 수 있도록 했으니 많은 활용하시길 바랍니다.

import FinanceDataReader as fdr
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.widgets import CheckButtons

# 주가 데이터 가져오기
symbol = '005930'  # 삼성전자 종목코드
df = fdr.DataReader(symbol)

# 이동평균선 계산
ma_periods = [5, 10, 20, 60, 120, 240]
for period in ma_periods:
    df[f'MA{period}'] = df['Close'].rolling(window=period).mean()

# 차트 그리기
fig, ax = plt.subplots()
lines = []

# 종가 그래프
line, = ax.plot(df.index, df['Close'], label='Close', linewidth=1.0)
lines.append(line)

# 이동평균선 그래프
for period in ma_periods:
    line, = ax.plot(df.index, df[f'MA{period}'], label=f'MA{period}', linewidth=1.0)
    lines.append(line)

# 체크박스 생성
labels = ['Close'] + [f'MA{period}' for period in ma_periods]
check = CheckButtons(plt.axes([0.05, 0.4, 0.1, 0.15]), labels, [True] * (len(labels)))

def func(label):
    index = labels.index(label)
    lines[index].set_visible(not lines[index].get_visible())
    plt.draw()

check.on_clicked(func)

# 차트 설정
ax.set_title(symbol)
ax.set_xlabel('Date')
ax.set_ylabel('Price')
ax.legend(loc='upper left')

plt.show()

 

3. 체크박스의 위치를 조절

체크 박스의 위치를 임의로 조절하실 수 있습니다.

check = CheckButtons(plt.axes([0.8, 0.05, 0.1, 0.25]), labels, [True] * (len(labels)))

위 코드에서 plt.axes([0.8, 0.05, 0.1, 0.25]) 부분은 체크박스의 위치를 설정하는 부분입니다.

[0.8, 0.05, 0.1, 0.25]에서 앞의 두 숫자는 체크박스의 위치를 결정하며, 뒤의 두 숫자는 체크박스의 크기를 결정합니다.

아래에 좀 더 자세히 설명을 드리도록 하겠습니다.

 

plt.axes의 매개변수는 [left, bottom, width, height] 순서로 값을 입력받습니다.

  • left: 체크박스의 X축 위치를 설정합니다. 0부터 1 사이의 값을 사용하며, 0이 가장 왼쪽이고 1이 가장 오른쪽입니다.
  • bottom: 체크박스의 Y축 위치를 설정합니다. 0부터 1 사이의 값을 사용하며, 0이 가장 아래쪽이고 1이 가장 위쪽입니다.
  • width: 체크박스의 너비를 설정합니다. 0부터 1 사이의 값을 사용합니다.
  • height: 체크박스의 높이를 설정합니다. 0부터 1 사이의 값을 사용합니다.

 

4. 마무리

오늘은 FinanceDataReader로 데이터를 불러오고 Matplotlib라이브러리를 이용해서 차트를 만들고 차트에 이동평균선을 추가해 보는 코드를 작성해 봤습니다.

 

파이썬 코드로 작성한 이유는 매매를 함에 있어서 확률을 높이기 위함이고

확률을 높이기 위해서는 우선 분석하고자하는 매매기법의 기반이 되는 보조지표 또는 그 대상이 되는 지표를 코드로 만들어놔야 합니다.

이처럼 이평선이 주가와의 상관관계 혹은 이평선만의 분석자료를 뽑아내기 위해 코드로 작성한 것이며 이 부분에 대해서는 점차 풀어나가도록 하겠습니다.

 

오늘도 제 글을 읽어주신 모든 분들께 감사의 말씀을 드립니다.

반응형
-

댓글