본문 바로가기

주식투자/투자도움받기

파이썬 주식 자동매매 프로그램(로봇) 구축 : 3-5. 거래대금, 시가총액 구하기

반응형

주식투자를 하면서 활용하는 지표는 상당히 많지만 여러가지 지표를 보기전에 확인해야하는 사항은 바로 거래대금과 시가총액입니다. 거래대금은 해당 종목의 관심도를 나타내며, 시가총액은 기업의 규모를 보여주고 변동성을 예측할 수 있게 해주는 지표이기 때문입니다. 

관심종목을 선정한 이후에 가장 먼저 확인하는 것이 거래대금이 어느정도의 규모이며, 해당 거래대금은 시가총액의 몇프로정도를 차지하는지로 앞으로의 변동성을 예측해보고 투자를 결정하게 됩니다. 

그래서 이번에 파이썬으로 주식 자동매매프로그램(로봇)을 만들면서 거래대금과 시가총액을 구해서 해당 주식종목의 규모대비 거래대금이 얼마나 형성되었는지 알아보는 조건을 만들어보고자 했습니다.

파이썬 주식 자동매매 프로그램(로봇) 구축 : 3-5. 거래대금, 시가총액 구하기
파이썬 주식 자동매매 프로그램(로봇) 구축 : 3-5. 거래대금, 시가총액 구하기

 

 

 

목  차

     

    파이썬 주식 자동매매 프로그램(로봇) 구축 : 3-5. 거래대금, 시가총액 구하기

    일단 거래대금과 시가총액을 구하기 위해서는 기본적인 호가에 나오는 정보를 활용해야합니다. 여러가지 방법으로 시가총액과 거래대금을 구할수가 있지만 이동평균을 구하기 위해서는 pykrx를 활용하여 하면 됩니다.

    pip install pykrx
    
    from pykrx import stock

    pykrx의 자세한 사용법은 아래의 링크(pykrx github)에 들어가시면 세부적인 사항이 나와있습니다. 우리는 여기서 시가총액과 거래대금만을 활용할 것입니다. 다른 것을 활용할때보다 장점은 기간조회가 가능하다는 것에 있습니다.

    거래대금, 시가총액을 구하기 위해 pykrx API를 활용하자

    pykrx github 링크

     

    sharebook-kr/pykrx

    KRX 주식 정보 스크래핑. Contribute to sharebook-kr/pykrx development by creating an account on GitHub.

    github.com

    from pykrx import stock
    import pandas as pd
    from datetime import datetime, timedelta
    
    df4 = stock.get_market_ohlcv_by_ticker("20210224", market="KOSPI")
    print(df4.sort_values(by='거래대금',ascending=False).head(20))
    
    df5 = stock.get_market_ohlcv_by_ticker("20210224", market="KOSDAQ")
    print(df5.sort_values(by='거래대금',ascending=False).head(20))
    
    result = pd.concat([df4,df5])
    
    print(result.sort_values(by='거래대금',ascending=False).head(20))

    위 소스코드를 사용하면 pykrx의 API를 활용해서 대신증권 크레온 API를 이용해서 코스피(KOSPI)와 코스닥(KOSDAQ)의 모든 주식종목의 해당일자 거래량과 거래대금을 확인할 수가 있습니다.

    pykrx를 활용해 전체 주식종목의 거래대금과 거래량을 확인할 수 있다.
    pykrx를 활용해 전체 주식종목의 거래대금과 거래량을 확인할 수 있다.

     

    거래대금과 시가총액을 구하는 파이썬 코드

    자!그러면 파이썬에서 pykrx함수를 활용해서 시가총액을 만드는 방법을 알아보겠습니다. 거래대금은 위에서 보는 것과 같이 나와있는데요. 시가총액은 get_market_cap_by_date라는 함수를 활용해서 특정종목에 대해서 상장주식수와 함께 확인할 수가 있습니다. 

    df = stock.get_market_cap_by_date(datetime.now() - timedelta(days=15),datetime.now() - timedelta(days=1) ,'005940')
    df= pd.DataFrame(df)
    
    print(df)

    위 소스코드 삼성전자(005900)의 최근 몇일간의 거래대금과 시가총액을 확인하는 할 수가 있습니다.

    pykrx 함수를 활용하여 최근 15일간의 삼성전자 거래대금과 시가총액을 확인 
    pykrx 함수를 활용하여 최근 15일간의 삼성전자 거래대금과 시가총액을 확인 

    위 2개의 소스코드만 잘 활용한다면 거래대금이 시가총액대비해서 상당히 많이 발생한 주식종목을 찾는 코드를 만들수가 있을 것입니다. 제가 주의깊게 보는 것은 시가총액 대비해서 거래대금이 10%가량 발생한 종목들은 눈여겨볼 필요가 있는데요. 그만큼 시장의 관심도가 높은 종목이라고 봐도 무방할 것입니다.

     

    전체 소스코드를 실행하여 20봉 이동평균선 주가를 구해보자

    위에서 이야기한 바와 같이 특정종목의 거래대금 비중을 한번 구해보도록 하겠습니다. 최근 15일의 거래대금이 시가총액의 몇%를 차지하는지 확인하기 위해서 말이죠.

    df = stock.get_market_cap_by_date(datetime.now() - timedelta(days=15),datetime.now() - timedelta(days=1) ,'005940')
    
    df= pd.DataFrame(df)
    print(df)
    vol= df['시가총액']
    ratio =df['거래대금']
    
    #print(vol)
    #print(ratio)
    
    vol_array = []
    ratio_array = []
    
    for cell in vol.values:
        vol_array.append(cell)
    
    for cell in ratio.values:
        ratio_array.append(cell)
    
    ev = vol_array[len(vol_array)-1]    # 현재 시가총액
    
    i = 0
    total_vol = 0
    for vol_value in ratio_array:       #최근 15일간의 거래대금 합산
        total_vol += vol_value
    
    vol_check = total_vol / ev
    
    print('거래대금 비중 : ', round(vol_check*100,2), '%')

    위 소스코드를 사용해서 실행을 시켜보면 삼성전자의 최근 15일간의 거래대금내역과 함께 15일동안 발생한 거래대금이 시가총액의 몇 퍼센트(%)를 차지하는지 알수가 있습니다. 

     

    대신증권 API를 이용해서 거래대금과 시가총액을 구하는 파이썬 코드

    pykrx는 외부 API이고 제가 자동매매 프로그램을 위해서 사용하는 API는 대신증권에서 제공해주는 API이기때문에 이것을 활용해서 거래대금과 시가총액을 구하는 방법도 있습니다. 물론 특정기간의 거래대금을 확인해서 넣어주는 방법이 기간조회가 어렵기 때문에 사용하지는 않지만 방법을 알아보도록 하겠습니다.

    import win32com.client
    
    cpStock = win32com.client.Dispatch('DsCbo1.StockMst')
    
    cpStock.SetInputValue(0, 'A005900')  
    cpStock.BlockRequest()
    yprice= cpStock.GetHeaderValue(27)  # 전일종가
    stock_count= cpStock.GetHeaderValue(35)   #상장주식수
    vol_yes = cpStock.GetHeaderValue(46)  #전읽래량
    cprice = cpStock.GetHeaderValue(11)  #현재가
    
    sigachong = yprice * stock_count)/100000000 #시가총액 억원단위 표시
    vol_cash_yes = yprice * vol_yes / 100000000   #전일거래대금 억원단위 표시

    위 소스코드의 차이점이라고 하면 종목정보를 'A'가 붙어있는 코드로 조회해야한다는 것이며, 시가총액과 거래대금을 거래량에 주가를 곱해서 산출해주어야한다는 번거로움이 있습니다. 

    그래서 저는 대신증권에서 제공하는 API로 자동매매프로그램에 적용을 하지는 않았고, pykrx함수를 이용해서 필요한 정보를 얻어오는 방식을 사용을 했습니다. 굳이 복잡하게 시가총액과 거래대금을 계산하지 않아도 되기 때문입니다.

     

    ※ 저는 주식투자를 공부중인 개인/개미투자자입니다. 제 주관에 의한 개인적인 투자방식을 정립 중이며, 투자 손실과 책임은 개인에게 있음을 안내드립니다.

    유익하셨다면, 공감(♡)클릭 및 댓글 부탁드리며, 블로그/유튜브가 많은 분들에게 도움이 되었으면 좋겠네요.

    찌쏘와 함께 주식공부 합시다.
    찌쏘와 함께 주식공부 합시다.

     

    반응형

    Visitor :
    POWERED/DESIGN/COPYRIGHTⓒ BY JJISSO