INVESTAR / StockAnalysisInPython

456 stars 412 forks source link

6.1 효율적 투자선 구하기 코드 관련 p256 #61

Open iMichaelChu opened 3 years ago

iMichaelChu commented 3 years ago

get_daily_price함수를 이용해 데이터프레임을 생성하는 코드에서 f5누르고 실행결과를 살펴보는데 에러사항이나 df결과값 그 어느것도 출력되지 않는데 어떻게 하는건가요? get_daily_price 함수에 회사명만 넣으면 데이터 출력이 되는 반면 일자를 지정하면 아예 나타나지 않는데 무엇이 문제인가요?

아래는 직접 작성한 코드입니다.

1) get_daily_price함수에 일자 지정했을 때

import numpy as np import pandas as pd import matplotlib.pyplot as plt from Investar import Analyzer mk = Analyzer.MarketDB() stocks = ['삼성전자','SK하이닉스','현대자동차','NAVER']

df = pd.DataFrame() for stock in stocks: ... df[stock] = mk.get_daily_price(stock, '2016-01-04','2018-04-27')['close'] ... df Empty DataFrame Columns: [삼성전자, SK하이닉스, 현대자동차, NAVER] Index: []

2) get_daily_price함수에 기본값으로 지정한 경우

import numpy as np import pandas as pd import matplotlib.pyplot as plt from Investar import Analyzer mk = Analyzer.MarketDB() stocks = ['삼성전자','SK하이닉스','현대자동차','NAVER']

df = pd.DataFrame() for stock in stocks: ... df[stock] = mk.get_daily_price(stock)['close'] ... start_date is initialized to '2020-04-06' end_date is initialized to '2021-04-06' start_date is initialized to '2020-04-06' end_date is initialized to '2021-04-06' start_date is initialized to '2020-04-06' end_date is initialized to '2021-04-06' start_date is initialized to '2020-04-06' end_date is initialized to '2021-04-06' df 삼성전자 SK하이닉스 현대자동차 NAVER date 2021-03-22 82000 138000 229000 396500 2021-03-23 81800 135000 226500 386000 2021-03-24 81000 133500 221000 387000 2021-03-25 81200 133000 218000 380000 2021-03-26 81500 135000 215500 383000 2021-03-29 81600 132000 215500 372000 2021-03-30 82200 134500 219500 376500 2021-03-31 81400 132500 218000 377000 2021-04-01 82900 140500 219000 378500 2021-04-02 84800 141000 233500 379500 2021-04-05 85400 143000 234000 377000

** 참고로 Visual Studio Code에서 작업을 진행하고 있는데 터미널에서 실행하는 것과 그렇지 않고 F5로 곧바로 실행할 때와 출력 결과가 다른데 정상적으로 진행되고 있는지도 잘 모르겠습니다. f5 단축키로 실행했을 때 결과는 다음과 같이 데이터 프레임이 출력되지 않은 채로 나옵니다 기본값으로 지정해두고 실행해도 이렇게만 나오고 데이터프레임은 출력되지 않는건데 내부적으로 정상적으로 진행되는지 잘 모르겠습니다. start_date is initialized to '2020-04-06' end_date is initialized to '2021-04-06' start_date is initialized to '2020-04-06' end_date is initialized to '2021-04-06' start_date is initialized to '2020-04-06' end_date is initialized to '2021-04-06' start_date is initialized to '2020-04-06' end_date is initialized to '2021-04-06'

INVESTAR commented 3 years ago

get_daily_price() 함수를 호출하실 때 조회 기간을 '2016-01-04' ~ '2018-04-27'로 지정할 경우 Empty DataFrame이 출력된 것은 iMichaelChu님의 DB에 해당 기간에 대한 주식 데이터가 존재하지 않기 때문입니다.

반면에, 조회기간을 지정하지 않았을때에는 조회기간이 아래처럼 '1년전 오늘' ~ '오늘'까지로 자동 설정되므로

start_date is initialized to '2020-04-06'
end_date is initialized to '2021-04-06'

DB에 존재하는 '2021-03-25' ~ '2021-04-05' 기간 동안의 주식 데이터가 표시된 것입니다.

config.json 파일의 pages_to_fetch 값을 100 정도로 늘려서 DBUpdater를 재시작 하시면 100 x 1페이지(10일치) = 1000일 = 영업일 250일 x 4 = 대략 4년치 데이터를 업데이트하실 수 있습니다. pages_to_fetch 값을 늘려서 100 이상으로 변경하셔서 주식 데이터를 다시 한번 업데이트 해보시기 바랍니다.