3.6.4. 보조 지표 시각화 Matplotlib Plotly 등 활용

보조 지표를 시각화하는 방법을 학습합니다. 시각화는 데이터 분석 결과를 직관적으로 이해하도록 돕습니다. Matplotlib와 Plotly를 사용하여 다양한 그래프를 그려봅니다. 시각화를 통해 효과적인 매매 전략을 개발할 수 있습니다.

보조 지표는 숫자 데이터로 표현됩니다. 숫자만으로는 데이터의 패턴을 파악하기 어렵습니다. 시각화는 데이터를 그래프 형태로 보여줍니다. 이를 통해 추세, 변동성, 관계 등을 쉽게 파악할 수 있습니다. 시각화는 데이터 분석의 필수적인 과정입니다.

이 섹션에서는 Matplotlib와 Plotly를 사용하여 보조 지표를 시각화합니다. Matplotlib는 파이썬의 기본적인 시각화 라이브러리입니다. Plotly는 인터랙티브한 그래프를 제공하는 라이브러리입니다. 두 라이브러리의 장단점을 비교하고, 상황에 맞게 선택하여 사용합니다.

1단계: Matplotlib 설치 및 기본 사용법

Matplotlib는 파이썬에서 그래프를 그리는 데 가장 많이 사용되는 라이브러리입니다. 먼저 Matplotlib를 설치합니다.

pip install matplotlib

다음은 Matplotlib를 사용하여 간단한 선 그래프를 그리는 예제입니다.

import matplotlib.pyplot as plt
import pandas as pd

# 예시 데이터 생성
data = {'x': [1, 2, 3, 4, 5], 'y': [2, 4, 1, 3, 5]}
df = pd.DataFrame(data)

# 그래프 그리기
plt.plot(df['x'], df['y'])

# 제목 및 레이블 추가
plt.title('Sample Line Graph')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')

# 그래프 표시
plt.show()

위 코드는 x축과 y축 데이터를 사용하여 선 그래프를 그립니다. plt.title(), plt.xlabel(), plt.ylabel() 함수를 사용하여 제목과 레이블을 추가합니다. plt.show() 함수는 그래프를 화면에 표시합니다.

2단계: Matplotlib를 이용한 보조 지표 시각화

이동평균선, RSI, MACD 등 다양한 보조 지표를 Matplotlib를 사용하여 시각화합니다. 먼저 필요한 라이브러리를 임포트합니다.

import matplotlib.pyplot as plt
import pandas as pd
import talib

다음은 이동평균선(SMA)을 가격 데이터와 함께 시각화하는 예제입니다.

# 예시 데이터 불러오기 (CSV 파일 또는 API)
df = pd.read_csv("BTC_USDT_1h.csv") # 예시 파일명, 실제 파일명으로 변경
# 컬럼명 확인 및 조정 (Open, High, Low, Close, Volume)
df.rename(columns={'open': 'Open', 'high': 'High', 'low': 'Low', 'close': 'Close', 'volume': 'Volume'}, inplace=True)

# 이동평균선 계산
df['SMA_20'] = talib.SMA(df['Close'], timeperiod=20)

# 그래프 그리기
plt.figure(figsize=(12, 6)) # 그래프 크기 설정
plt.plot(df['Close'], label='Close Price')
plt.plot(df['SMA_20'], label='SMA 20')

# 제목 및 레이블 추가
plt.title('Close Price and 20-day SMA')
plt.xlabel('Time')
plt.ylabel('Price')

# 범례 표시
plt.legend()

# 그리드 추가
plt.grid(True)

# 그래프 표시
plt.show()

위 코드는 종가와 20일 이동평균선을 함께 표시합니다. plt.figure(figsize=(12, 6)) 함수는 그래프의 크기를 설정합니다. plt.legend() 함수는 범례를 표시합니다. plt.grid(True) 함수는 그래프에 그리드를 추가합니다.

다음은 RSI를 시각화하는 예제입니다.

# RSI 계산
df['RSI'] = talib.RSI(df['Close'], timeperiod=14)

# 그래프 그리기
plt.figure(figsize=(12, 4))
plt.plot(df['RSI'], label='RSI')

# 과매수/과매도 영역 표시
plt.axhline(70, color='red', linestyle='--', label='Overbought (70)')
plt.axhline(30, color='green', linestyle='--', label='Oversold (30)')

# 제목 및 레이블 추가
plt.title('Relative Strength Index (RSI)')
plt.xlabel('Time')
plt.ylabel('RSI Value')

# 범례 표시
plt.legend()

# 그리드 추가
plt.grid(True)

# 그래프 표시
plt.show()

위 코드는 RSI 값과 함께 과매수/과매도 기준선을 표시합니다. plt.axhline() 함수는 수평선을 추가합니다.

3단계: Plotly 설치 및 기본 사용법

Plotly는 인터랙티브한 그래프를 제공하는 라이브러리입니다. Plotly를 사용하면 그래프를 확대/축소하고, 데이터를 자세히 볼 수 있습니다. 먼저 Plotly를 설치합니다.

pip install plotly

다음은 Plotly를 사용하여 간단한 선 그래프를 그리는 예제입니다.

import plotly.express as px
import pandas as pd

# 예시 데이터 생성
data = {'x': [1, 2, 3, 4, 5], 'y': [2, 4, 1, 3, 5]}
df = pd.DataFrame(data)

# 그래프 그리기
fig = px.line(df, x='x', y='y', title='Sample Line Graph')

# 그래프 표시
fig.show()

위 코드는 plotly.express 모듈을 사용하여 선 그래프를 그립니다. px.line() 함수는 데이터프레임, x축, y축 데이터를 인자로 받습니다. fig.show() 함수는 그래프를 웹 브라우저에 표시합니다.

4단계: Plotly를 이용한 보조 지표 시각화

Plotly를 사용하여 보조 지표를 시각화합니다. Plotly는 다양한 종류의 그래프를 제공합니다. 선 그래프, 막대 그래프, 캔들스틱 차트 등을 사용할 수 있습니다.

다음은 이동평균선(SMA)을 가격 데이터와 함께 시각화하는 예제입니다.

import plotly.graph_objects as go
import pandas as pd
import talib

# 예시 데이터 불러오기 (CSV 파일 또는 API)
df = pd.read_csv("BTC_USDT_1h.csv") # 예시 파일명, 실제 파일명으로 변경
# 컬럼명 확인 및 조정 (Open, High, Low, Close, Volume)
df.rename(columns={'open': 'Open', 'high': 'High', 'low': 'Low', 'close': 'Close', 'volume': 'Volume'}, inplace=True)

# 이동평균선 계산
df['SMA_20'] = talib.SMA(df['Close'], timeperiod=20)

# 그래프 객체 생성
fig = go.Figure()

# 종가 데이터 추가
fig.add_trace(go.Scatter(x=df.index, y=df['Close'], mode='lines', name='Close Price'))

# 이동평균선 데이터 추가
fig.add_trace(go.Scatter(x=df.index, y=df['SMA_20'], mode='lines', name='SMA 20'))

# 레이아웃 설정
fig.update_layout(title='Close Price and 20-day SMA',
                  xaxis_title='Time',
                  yaxis_title='Price',
                  template='plotly_white') # 템플릿 설정

# 그래프 표시
fig.show()

위 코드는 plotly.graph_objects 모듈을 사용하여 그래프를 그립니다. go.Figure() 함수는 그래프 객체를 생성합니다. go.Scatter() 함수는 선 그래프를 추가합니다. fig.update_layout() 함수는 그래프의 레이아웃을 설정합니다. template='plotly_white'는 그래프 배경을 흰색으로 설정합니다.

다음은 캔들스틱 차트를 사용하여 가격 데이터를 시각화하는 예제입니다.

“`python
import plotly.graph_objects as go
import pandas as pd

df = pd.read_csv(“BTC_USDT_1h.csv”) # 예시 파일명, 실제 파일명으로 변경

df.rename(columns={‘open’: ‘Open’, ‘high’: ‘High’, ‘low’: ‘Low’, ‘close’: ‘Close’, ‘volume’: ‘Volume’}, inplace=True)

fig = go.Figure(

위로 스크롤