파이썬 주식데이터 분석, 주식보조지표 확인하는 방법은?!

목차

    2020. 7. 31. 06:30

    주식-차트
    주식-차트

    금융사에서 제공하는 API를 이용하면, 주식 데이터 분석부터 주문까지 할 수 있습니다. 이를 통해 자동매매시스템까지 구축이 가능한데요. 관심 있는 주식을 분석하고 가치를 판단하는 일은 의미 있습니다. 파이썬 패키지를 이용하여 여러 가지 주식 지표를 산출하는 방법을 알아보았습니다.

     

     

    파이썬을 이용하면 주식 분석을 쉽게 할 수 있습니다. 문법이 쉽고 활용도가 높은 패키지들이 많아 데이터를 수집하고 활용하기가 좋습니다. 블로그 글이 복붙이 되지 않습니다. 그래서 포스팅 하단에 아래 설명한 코드를 첨부하였습니다.

     

    1. 파이썬 패키지 설치

    파이썬에는 이미 이동평균선을 구하고, 주가 차트를 그리기 쉽게 도와주는 패키지가 있습니다. 하지만 이것도 불편하다고 생각했는지 함수 하나로 계산부터 차트까지 그려주는 패키지를 누군가 개발했습니다. StockInsider라는 패키지입니다. talib이라는 패키지도 주식 관련 지표를 산출하는데 유용합니다. 우선 패키지를 설치해 보겠습니다.

    pip install StockInsider

     

     

    사용방법은 간단합니다. 원하는 종목코드를 넣어서 StockInsider 객체를 만들 후에, 필요한 plot함수를 호출하면 됩니다.

    from insider import StockInsider

    si = StockInsider("sz002516")
    si.plot()

     

    주가_그래프
    주식-차트

     

    빨간색과 녹색 막대의 차이는 당일 종가가 오픈가보다 올랐는지 떨어졌는지를 나타냅니다. 빨간색은 오른 것이고, 녹색을 떨어진 것인데요.

     

    하지만 중국에서 개발한 패키지라 한국이나 미국 시장에 상장된 종목 코드는 등록돼 있지 않습니다. 그래서 코스피 종목을 확인하려면 약간의 작업이 필요합니다. 코스피 종목의 주식데이터를 받아서 StockInsider 패키지에 넣어줘야 하는데요. from_external_csv_data함수가 있어서 어렵지 않게 할 수 있습니다. 이 부분을 함수로 만들어 보았습니다.

    def get_stock(code):
        import FinanceDataReader as fdr
        from insider import StockInsider
        import os

        df=fdr.DataReader("code")
        df["day"]=df.index
        df.columns=['open', 'close','high', 'low', 'volumn', "price_change",'day']

        df["ma5"]=df["close"].rolling(5).mean()
        df["ma10"]=df["close"].rolling(10).mean()
        df["ma20"]=df["close"].rolling(20).mean()
        df["v_ma5"]=df["volumn"].rolling(5).mean()
        df["v_ma10"]=df["volumn"].rolling(10).mean()
        df["v_ma20"]=df["volumn"].rolling(20).mean()
        df["percent_change"]=df["close"].pct_change()
     
        if os.path.exists("./data")==False:
            os.mkdir("./data")
      
        df.to_csv("./data/{}.csv".format(code))
        fpath = "./data/{}.csv".format(code)
        si = StockInsider.from_external_csv_data(fpath=fpath, code=code) 

        return si

     

    주가 데이터는 FinanceDataReader 패키지로 가져오고, 전처리를 후에 csv파일로 저장합니다. 이 파일을 이용해서 StockInsider 객체를 만듭니다. 이제 plot함수를 이용하면 아래와 같이 주식지표를 확인할 수 있습니다. 삼성전자 종목코드를 입력하여, 삼성전자 차트를 그려보았습니다.

    si=get_stock("005930")
    si.plot()

     

    삼성전자_차트
    삼성전자-주식-차트

     

    출력된 데이터가 너무 많다고 생각하면, plot함수의 입력파라미터에 head=120과 같이 숫자를 입력해서 일부 데이터만 확인할 수도 있습니다. verbose=False를 입력파라미터로 넣으면 bar를 제외하고 선그래프만 볼 수 있습니다. show_data()를 호출하면 데이터를 직접 확인할 수 있습니다.

     

     

    StockInsider에서 확인할 수 있는 주식보조지표들은 아래와 같습니다. 아는 것도 있지만, 모르는 것도 다수 있네요.

    주식보조지표 이름

    주식보조지표 내용

    사용방법

    MA Moving Average si.plot_ma()
    MD Moving Deviation si.plot_md()
    EMA Exponential Moving Average si.plot_ema()
    MACD Moving Average Convergence/Divergence si.plot_macd()
    KDJ - si.plot_kdj()
    RSI Relative Strength Index si.plot_rsi()
    VRSI Volumn Relative Strength Index si.plot_vrsi()
    Volumn change - si.plot_volumn()
    VMA Volumn Moving Average si.plot_vma()
    VSTD - si.plot_vstd()
    VMACD Volumn Moving Average Convergence/Divergence si.plot_vmacd()
    ENV(轨 - si.plot_env()
    VOSC Volumn Oscillator si.plot_vosc()
    MI Momentum Indicator si.plot_mi()
    MIKE - si.plot_mike()
    ADTM - si.plot_adtm()
    OBV On Balance Volumn si.plot_obv()
    RC Price rate of Change si.plot_rc()
    BOLL BOLL line si.plot_boll()
    BBIBOLL BBI BOLL line si.plot_bbiboll()
    ATR Average True Ranger si.plot_atr()
    CDP Contrarian Operation si.plot_cdp()
    SAR Stop And Reverse si.plot_sar()
    MTM Momentum Index si.plot_mtm()
    DMI Directional Movement Index si.plot_dmi()

     

    가장 이해하기 쉬운 이동평균선을 계산해 보았습니다.

    si.plot_ma()

     

    이동평균선-라인-차트
    이동평균선-라인-차트

     

    plot함수를 제외하고, 호출하면 데이터를 직접 확인할 수도 있습니다. 예를 들어 Relative Strength Index를 그래프로 그리려면, plot_rsi() 함수를 이용합니다. 여기서 'plot_'를 제외하고 rsi() 함수만 호출하면 데이터를 직접 확인할 수 있습니다.

     

    위 파이썬 코드를 아래에 파일로 첨부합니다.

    stockinsider-이용.py
    0.00MB


    StockInsider 패키지를 이용하여, 여러 가지 주식보조지표를 확인하는 방법을 알아보았습니다. 이렇게 그래프를 그리고, 데이터를 확인하는 것도 주식공부가 됩니다.

     

    거래량-보는-법
    거래량-보는-법