커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
2주차 숙제 관련 질문
[왕초보] ChatGPT 300% 활용하기 v0
2주차
북마크
최*연
댓글
1
추천
0
조회수
21
조회수
21
답변 완료

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

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


기존 올려주신 코드를 내용대로 변경했는데 기존 결과 값과 동일하게 날짜와 주가 단위 변경하고 싶은데 방법을 모르겠습니다.

변경하는 방법 부탁드립니다. 그리고 혹시 그런 거 변경 없이 이대로 숙제 제출해도 상관 없는지도 알려주시기 바랍니다.



기존 코드 결과 값

스파르타 즉문즉답


수정한 코드 결과 값

스파르타 즉문즉답





작성한 코드 및 에러 메세지

import FinanceDataReader as fdr
import datetime
import pandas as pd
import matplotlib.pyplot as plt


# 폰트 설정
import matplotlib.font_manager as fm


# 폰트 경로 설정
font_path = '/usr/share/fonts/truetype/nanum/NanumGothic.ttf'
fontprop = fm.FontProperties(fname=font_path, size=18)


# 데이터 불러오기
end_date = datetime.datetime.now()
start_date = end_date - datetime.timedelta(days=365)
타겟주식 = 'NFLX'  # 넷플릭스 주식 코드
stock_data = fdr.DataReader(타겟주식, start_date, end_date)


# 이동평균선 계산
stock_data['MA20'] = stock_data['Close'].rolling(window=20).mean()
stock_data['MA60'] = stock_data['Close'].rolling(window=60).mean()


# 골든크로스, 데드크로스 신호 계산
signals = pd.DataFrame(index=stock_data.index)
signals['Close'] = stock_data['Close']
signals['MA20'] = stock_data['MA20']
signals['MA60'] = stock_data['MA60']
signals['Signal'] = 0.0


# 20일 이동평균과 60일 이동평균을 비교하여 신호 생성
for i in range(1, len(signals)):
    if signals['MA20'].iloc[i] > signals['MA60'].iloc[i] and signals['MA20'].iloc[i-1] <= signals['MA60'].iloc[i-1]:
        signals['Signal'].iloc[i] = 1  # 골든크로스 신호 (매수)
    elif signals['MA20'].iloc[i] < signals['MA60'].iloc[i] and signals['MA20'].iloc[i-1] >= signals['MA60'].iloc[i-1]:
        signals['Signal'].iloc[i] = -1  # 데드크로스 신호 (매도)


# 그래프 그리기
plt.figure(figsize=(12, 6))


# 주가 그래프
plt.plot(signals.index, signals['Close'], label='Close')


# 이동평균선 그래프
plt.plot(signals.index, signals['MA20'], label='MA20')
plt.plot(signals.index, signals['MA60'], label='MA60')


# 골든크로스와 데드크로스 신호를 마커로 표시
plt.scatter(signals[signals['Signal'] == 1].index, signals['MA20'][signals['Signal'] == 1], marker='^', color='g', s=100, label='Golden Cross')
plt.scatter(signals[signals['Signal'] == -1].index, signals['MA20'][signals['Signal'] == -1], marker='v', color='r', s=100, label='Dead Cross')


plt.title(f'{타겟주식} 주식 가격과 이동평균선 (Golden Cross 및 Dead Cross)', fontproperties=fontprop)
plt.xlabel('날짜', fontproperties=fontprop)
plt.ylabel('주가', fontproperties=fontprop)
plt.legend(loc='best', prop=fontprop)
plt.grid(True)
plt.show()




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