Open cahn70 opened 3 years ago
추가로 확인해본 내용 입니다.
가설 1 FinanceDataReader에서 반복해서 데이터를 불러올 때 문제가 생기는 것 같다. -> for문으로 아래 코드를 1000회 반복해서 돌려보았는데 문제없이 동작했습니다. fdr.DataReader('005930','2011-01-01','2021-03-26')
가설2 fdr.DataReader(code, start_date, end_date)로 code, start_date, end_date 인수값이 제대로 입력이 안되는 것 같다. -> 가설1에서 사용한 것과 동일한 코드로 변경해서, 변수에 값을 전달하지 않고, 아예 고정된 데이터 값을 넣어서 돌려보았습니다. 위의 단순 for 반복문에서는 문제없이 1000회 반복해서 돌아갔던 동일한 코드로 돌렸는데도 fdr.DataReader부분에서, 역시나 수십회 정도 돌다가 멈춰 버립니다. 도는 횟수도 일정하지 않고 랜덤 입니다.
즉 fdr.DataReader(code, start_date, end_date)) 부분을
fdr.DataReader('005930','2011-01-01','2021-03-26') 로 변경해서 테스트
알려주신 내용을 봐서는 일정한 규칙은 없는 것 같지만 FinanceDataReader 데이터를 조회하다가 멈추는 현상이 존재하는 것 같습니다.
내부적으로 특정 시간 동안 호출할 수 있는 최대 횟수를 정해놓진 않았는지 FinanceDataReader 깃허브에 문의해 보시는 게 좋겠습니다.
제가 수정한 코드 자체는 별 이상이 없다는 말씀이신 거죠? 심플한 For문으로 돌려봤을 때는 1000회 돌려도 문제가 없었던 걸로 봐서는 FinanceDataReader만의 문제는 아닌 듯 싶기도 하고요... FinanceDataReader 깃허브에도 문의 글 올려놓고 기다리는 중인데, 해결되기를 바래 봐야 겠네요.^^;
결괏값이 수시로 달라진다는 것은 코드에 뭔가 문제가 있을 가능성이 크다는 반증인데 그것이 cahn70님이 작성하신 코드 때문인지 FinanceDataReader 자체의 문제인지는 저도 판단하기 어렵습니다.
일전에 한 번 문의 드린 적이 있는데, 네이버는 수정종가를 지원하지 않아서, 수정종가 데이터를 가져오기 위해, FinanceDataReader를 사용하기로 하고, 책의 DBUpdater 코드를 응용해서 일일시세를 FinanceDataReader에서 읽어오는 코드를 작성해 보았는데요... 실행을 해보면 에러 발생은 없는데, 몇 개 데이터를 불러와서 데이터베이스에 Replace 한 후에는 무작위로 멈춰서 버리네요... 중간 중간 프린트 문을 넣어 확인해 보니.... 아래의 라인에서 멈추는 것 까지는 확인했습니다. fdr.DataReader(code, start_date, end_date)
위의 메소드에 들어갈 종목코드와 시작일, 종료일 모두 제대로 들어오는 것도 확인을 했는데... 어느 순간 freeze가 되네요... 어떤 때는 10개 내외의 데이터를 읽어오고 멈추고, 어떤 때는 50~60개 까지 가져오고 멈추고는 합니다. 읽어 온 부분까지는 시세 데이터가 MariaDB에 제대로 저장이 된 것 까지도 확인은 했습니다. 이유를 찾을 수가 없어 문의를 드려 봅니다. 감사합니다.
아래는 작성한 코드입니다.
import matplotlib.pyplot as plt import FinanceDataReader as fdr import mplfinance as mpf import pandas as pd from bs4 import BeautifulSoup import pymysql, calendar, time, json import requests from datetime import datetime from threading import Timer
class DBUpdater:
if name == 'main': dbu = DBUpdater() dbu.execute_daily()
MariaDB의 테이블 구성은 아래와 같이 하였습니다.