Cybos #2_주식 정보 가져오기(Util)

Daco·2021년 12월 29일
0

주식자동화

목록 보기
2/3

*해당 시리즈는 대신증권 cybos api를 활용하여 주식 프로그램을 제작하는 글입니다.

세가지 타입이 있다.

Cybos 에서는 정보를 가져오는 타입이 세가지가 있는데 첫 번째는 불러온 객체에서 바로 값을 불러오는 방법, 두 번째는 Request()를 통해 값을 불러오는 방법, 세 번째는 Subscribe()을 통해 값이 변동될때마다 그때그때 실시간으로 불러오는 방법이 있다.

이번 글에서는 첫 번째 객체에서 바로 값을 불러오는 방법을 설명해보겠다. (예제 코드는 지난번 샘플 코드를 사용)

종목정보 구하는 예제 - 샘플 코드

import win32com.client #pywin32를 설치했다면 정상적으로 import될 것이다.
 
 
# 연결 여부 체크
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
bConnect   = objCpCybos.IsConnect
if (bConnect == 0):
    print("PLUS가 정상적으로 연결되지 않음. ")
    exit()
# --- 여기까지는 지난 글에서 확인 가능합니다. ---
 
# 종목코드 리스트 구하기
objCpCodeMgr = win32com.client.Dispatch("CpUtil.CpCodeMgr") # CpCodeMgr는 각종 코드정보 및 코드 리스트를 가져오는 객체이다. 
codeList     = objCpCodeMgr.GetStockListByMarket(1) #거래소 
codeList2    = objCpCodeMgr.GetStockListByMarket(2) #코스닥

 
print("거래소 종목코드", len(codeList))
for i, code in enumerate(codeList): # enumerate 를 이용하여 주식코드와 인덱스를 함께 반복
    secondCode = objCpCodeMgr.GetStockSectionKind(code) # code 에 해당하는 부 구분 코드를 반환
    name       = objCpCodeMgr.CodeToName(code) # code 에 해당하는 주식/선물/옵션 종목명 을 반환
    stdPrice   = objCpCodeMgr.GetStockStdPrice(code) # 기준가를 반환
    print(i, code, secondCode, stdPrice, name) # 위에 반환받은 값들을 출력
 
print("코스닥 종목코드", len(codeList2))
for i, code in enumerate(codeList2): # 위와 동일
    secondCode = objCpCodeMgr.GetStockSectionKind(code)
    name       = objCpCodeMgr.CodeToName(code)
    stdPrice   = objCpCodeMgr.GetStockStdPrice(code)
    print(i, code, secondCode, stdPrice, name)
 
print("거래소 + 코스닥 종목코드 ",len(codeList) + len(codeList2)) #

주석을 보면 알겠지만 객체에서 곧바로 값을 불러오는 것은 Cybos의 매서드를 활용하여 가져오기만 하면 된다. 이를 더 알기 쉽게 일부만 풀어보자면 다음과 같다.

objCpCodeMgr = win32com.client.Dispatch("CpUtil.CpCodeMgr")

:: 객체를 가져와 objCpCodeMgr 에 할당한다.

codeList = objCpCodeMgr.GetStockListByMarket(1)

:: objCpCodeMgr 객체에 GetStockListByMarket() 매서드와 속성을 활용하여 codeList 를 만든다.

for i, code in enumerate(codeList2):
    name = objCpCodeMgr.CodeToName(code)

:: codeList를 for문으로 반복하여 개별 요소인 code를 구하고 code를 다시 CodeToName매서드에 넣어 '종목명'을 name 에 할당한다.

이것이 첫 번째 방법, 불러온 객체를 곧바로 매서드를 활용하여 원하는 값을 얻어내는 방법이다.

방법 자체는 어렵지 않지만 Cybos를 처음 접하는 사람들이라면 저런 매서드는 어떻게 알 수 있는지, 또 어떻게 사용하는지가 추가적인 의문이 들 것이다. 결론부터 말하자면 굳이 매서드를 외울 필요는 없다. Cybos 도움말 를 활용하면 쉽게 그 방법을 찾아낼 수 있다.

도움말 활용법


처음 도움말을 들어가면 다음 처럼 안내글을 보게 된다. 여기서 직접 하나하나 찾아서 살펴볼 수도 있겠지만 필요한 api를 Search 버튼을 통해 바로 검색해 볼 수 있다.


이렇게 궁금한 api를 검색해보면 해당 api의 모듈 위치는 어디인지, 어떤 Method를 갖고 있는지, 어떤 값을 불러올 수 있는지, 어떤 인자가 필요한지도 알 수 있다. 만약 직접 연습을 해보고 싶다면 Cybos 자료실에 있는 예제 코드를 살펴보고 궁금한 api를 직접 검색해보자.

다음 글에서는 값을 불러오는 두 번째 방법인 Request()에 대해 설명해보겠다.

레퍼런스

cybos 도움말 가이드 http://cybosplus.github.io//
파이썬으로 배우는 알고리즘 트레이딩 https://wikidocs.net/book/110
PyQt5 Tutorial - 파이썬으로 만드는 나만의 GUI 프로그램 https://wikidocs.net/book/2165

profile
티스토리 - https://daco2020.tistory.com/

0개의 댓글