
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
아래 코드로 숙제를 진행하니, 샘플 그래프처럼 화살표가 제대로 표시가 안되고 화살표가 복붙을 잔뜩 한것처럼 이상하게 표시되는데, 어느 코드가 문제가 있는걸까요?
보고 계신 화면 전체를 캡처해 주시면

, 튜터님들이 빠르게 상황을 이해할 수 있어요.
작성한 코드 및 에러 메세지
import FinanceDataReader as fdr
import datetime
import pandas as pd
import matplotlib.pyplot as plt
def golden_cross(data, short_window=20, long_window=60):
"""
Identifies golden cross and dead cross points in stock price data.
Args:
data (pandas.DataFrame): DataFrame containing stock price data with 'Close' column.
short_window (int): Short moving average window.
long_window (int): Long moving average window.
Returns:
pandas.DataFrame: DataFrame containing stock price data with 'Signal' column indicating buy/sell signals.
"""
# Calculate short and long moving averages
data['MA20'] = data['Close'].rolling(window=short_window, min_periods=1).mean()
data['MA60'] = data['Close'].rolling(window=long_window, min_periods=1).mean()
# Initialize signal column
data['Signal'] = 0
# Identify golden cross (buy signal)
data.loc[data['MA20'] > data['MA60'], 'Signal'] = 1
# Identify dead cross (sell signal)
data.loc[data['MA20'] < data['MA60'], 'Signal'] = -1
return data
end_date = datetime.datetime.now() # 현재 시간을 구합니다.
start_date = end_date - datetime.timedelta(days=365) # 1년 전 날짜를 구합니다.
# 롯데 종목코드: 004990
stock_data = fdr.DataReader('004990', start_date, end_date)
# 이동평균선 계산
stock_data['MA20'] = stock_data['Close'].rolling(window=20).mean()
stock_data['MA60'] = stock_data['Close'].rolling(window=60).mean()
# 골든크로스와 데드크로스 신호 생성
stock_data = golden_cross(stock_data)
# 그래프 그리기
plt.figure(figsize=(12,6))
plt.plot(stock_data.index, stock_data['Close'], label='Close')
plt.plot(stock_data.index, stock_data['MA20'], label='MA20')
plt.plot(stock_data.index, stock_data['MA60'], label='MA60')
plt.plot(stock_data[stock_data['Signal'] == 1].index, stock_data['MA20'][stock_data['Signal'] == 1], '^', markersize=10, color='g', lw=0, label='Golden Cross')
plt.plot(stock_data[stock_data['Signal'] == -1].index, stock_data['MA20'][stock_data['Signal'] == -1], 'v', markersize=10, color='r', lw=0, label='Death Cross')
plt.legend(loc='best')
plt.grid()
plt.show()
# 폰트 설정
import os
# apt-get : 패키지 설치 명령어
# -qq : 에러외의 메세지 숨기는 옵션키
!apt-get -qq install fonts-nanum
fe = fm.FontEntry(
fname=r'/usr/share/fonts/truetype/nanum/NanumGothic.ttf', # ttf 파일이 저장되어 있는 경로
name='NanumGothic') # 이 폰트의 원하는 이름 설정
fm.fontManager.ttflist.insert(0, fe) # Matplotlib에 폰트 추가
plt.rcParams.update({'font.size': 18, 'font.family': 'NanumGothic'}) # 폰트 설정오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.
Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.
Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!
