주가 다운로드 및 그리기

입문


나는 주식 거래를 하기 위해 통계를 내고 주가 데이터의 취득 방법을 조사했다.
python에서 주가를 다운로드하고 그린 곳으로 이동해서 적어 둡니다.도쿄증권거래소에서 거래되는 3개 품목의 데이터를 다운로드해 이런 느낌으로 묘사했다.

큰 돈 벌 수 있을까...뭐?^^)

Yahoo Finance에서 데이터를 검색하는 라이브러리


방법은 구글 선생님이 소개해 주신 홈페이지를 보고 여러 가지 조사를 했지만 제가 생각한 바와 같이'스크립트로 1~2년 동안의 데이터를 다운로드하여 비교하는 용도로는 사용할 수 없어 힘들었습니다.Quandl, pandas_datareader 등에서 배회한 결과,
yahoo-finance-api2
다 왔어요.소스로 보면https://query1.finance.yahoo.com/v8/finance/chart/...대답그리고 링크된github의 README에 쓰인 Usage는 그대로 이동합니다.

준비


PIP 설치에 성공했습니다.
python3 -m pip install yahoo_finance_api2

실시


나는 단지 자술한 파일의 Usage를 약간 변경했을 뿐, 아래의 느낌으로 그렸다.
필기하다
  • timestamp는 밀리초, UTC이기 때문에 일본 표준시간
  • 으로 변경됨
  • 각 EPO에 대해 Open, High, Low, Close, Volume에 수치가 있고 데이터가 없는 곳은null이다.거래가 없는 경우라든가.
  • 얻을 수 있는 범위가 제한되어 있다고 느낀다.예를 들어 다음 프로그램은 1000주의 데이터를 요구하지만 1년에 약간의 데이터만 얻는다.
  • import matplotlib.pyplot as plt
    from yahoo_finance_api2 import share
    from yahoo_finance_api2.exceptions import YahooFinanceError
    import pandas as pd
    
    data_list = [ \
        ["4391.T", "LOGIZARD"], 
        ["4755.T", "RAKUTEN"],
        ["2303.T", "DAWN"]]
    
    fig, ax = plt.subplots(len(data_list), 1, figsize=(16, 8))
    for i, (company_code, company_name) in enumerate(data_list):
        my_share = share.Share(company_code)
    
        try:
            symbol_data = my_share.get_historical(share.PERIOD_TYPE_WEEK, 1000,
                                            share.FREQUENCY_TYPE_DAY, 1)
            df = pd.DataFrame(symbol_data.values(), index=symbol_data.keys()).T
            df.timestamp = pd.to_datetime(df.timestamp, unit='ms')
            df.index = pd.DatetimeIndex(df.timestamp, name='timestamp').tz_localize('UTC').tz_convert('Asia/Tokyo')
    
            ax[i].set_title( "TSE {} ({})".format(company_name, company_code))
            ax[i].plot(df.index, df.close, '.')
            ax[i].grid(True)
            ax[i].set_ylabel("Stock Price [Yen]")
            ax[i].label_outer()
            if i == (len(data_list) - 1):
                ax[i].set_xlabel("Date")
        except YahooFinanceError as e:
            print(e.message)
            pass
    plt.show()
    
    아무튼 먼저 움직였으면 좋겠어요.
    - 그건 상관없지만 구글에 있을 때TradingView 사용할 수 있으면 대단한 사이트를 만났어요. 
    - 처음에 나는 Quandl을 사용하려고 노력했다.pip3 install Quandl에서 간단하게 설치하고 여기의 설명에 따라 동작할 수 있다.다만, 최근의 데이터는 얻지 못했다.다른 한편, https://www.quandl.com/api/v3/datasets/TSE/4391/data.csv처럼 직접 악배할 수도 있다.변수를 지정해서 원하는 데이터를 얻었을 수도 있습니다.
     

    좋은 웹페이지 즐겨찾기