커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
그래프 골든크로스 데스크로스 화살표 표기 오류
[왕초보] ChatGPT 300% 활용하기 v0
2주차
북마크
이*연
댓글
7
추천
0
조회수
23
조회수
23
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


아래 코드로 숙제를 진행하니, 샘플 그래프처럼 화살표가 제대로 표시가 안되고 화살표가 복붙을 잔뜩 한것처럼 이상하게 표시되는데, 어느 코드가 문제가 있는걸까요?



보고 계신 화면 전체를 캡처해 주시면

스파르타 즉문즉답

, 튜터님들이 빠르게 상황을 이해할 수 있어요.




작성한 코드 및 에러 메세지


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) 단축키로 코드를 한 번에 선택할 수 있어요!




취소
 공유
취소
댓글 0
댓글 알림
나의얼굴