AUTO TRADE/[대신증권] CYBOS PLUS

대신증권 CYBOS PLUS 시작하기 (4) - 특정종목 현재가 조회하기

학습 목표

  • 현재가 조회 함수 사용해보기
  • 현재가 조회 함수 캡슐화

대신증권의 홈페이지에 따르면, CYBOS PLUS에서 현재가를 조회할 수 있는 함수(=오브젝트)는 `StockMst()`이다. 이번 게시글에서는 `StockMst()` 오브젝트를 포함하는 함수를 구현하고, 더 나아가 우리가 해당 함수의 인자(=parameter)로 종목코드만 전달해주면 그 종목의 현재가를 반환해주도록 하나의 캡슐 함수를 제작할 예정이다.

 

 

(1) 현재가 조회 모듈의 인스턴스 생성하기

현재가를 조회하는 함수를 제작하기 전에 앞서, 이전 게시글에서 살펴봤던 것과 같이 현재가를 조회하는 모듈의 인스턴스를 생성해주어야 한다. 이 모듈의 이름은 아래의 이미지와 같이 대신증권 도움말을 보면 어렵지 않게 확인할 수 있다. 아래 이미지에서 주황색 네모칸이 쳐져 있는 `Dscbo1.StockMst`가 곧 주식 종목의 현재가를 반환하는 기능을 가진 모듈이므로, 이전 게시글에서 주로 사용할 네 가지 모듈의 인스턴스(`self.cybos`, `self.stockcode`, `self.trade`, `self.codemgr`)를 생성해준 것처럼 이 모듈에 대해서도 인스턴스를 하나 생성해주도록 하자. (`Dscbo1.StockMst` 모듈의 인스턴스는 `self.stockmst`로 하였다.)

import win32com.client

class cybos:
    def __init__(self):
        self.cybos = win32com.client.Dispatch("CpUtil.CpCybos")             ## COM 연결
        self.stockcode = win32com.client.Dispatch("CpUtil.CpStockCode")     ## COM 연결
        self.trade = win32com.client.Dispatch("CpTrade.CpTdUtil")           ## COM 연결
        self.codemgr = win32com.client.Dispatch("CpUtil.CpCodeMgr")         ## COM 연결
        self.stockmst = win32com.client.Dispatch("Dscbo1.StockMst")         ## COM 연결

 

 

(2) 현재가 조회 오브젝트 사용해보기

모듈의 인스턴스를 생성해주었다면, 이제 해당 인스턴스를 활용하여 특정 종목의 현재가 데이터를 반환받아보도록 하자. 도움말을 보면 알 수 있겠지만, 대신증권 CYBOS PLUS의 통신 방식에 대해 서술하는 게시글에서 간략하게 살펴보았던 함수인 `SetInputValue()` 함수를 통해 서버로 데이터를 전달해주면 된다. 그 후 데이터를 요청하는 함수는 아래 우측의 이미지에 있는 '통신 종류'를 보면 알 수 있듯이, 요청/응답 방식이므로 우리는 `Request()` 또는 `BlockRequest()` 함수를 사용하여 우리가 `SetInputValue()`에 적은 데이터를 서버로 전송할 수 있다.

그렇다면 여기서 우리는 `SetInputValue()` 함수에 어떠한 인자를 전달해주어야 하는지 모르는 상황인데, 위 왼쪽의 이미지를 보면 해당 함수의 형태에 대해 모두 설명되어 있음을 알 수 있다. 조금 더 자세히 설명해보자면 `type` 인자에는 입력할 데이터의 종류를 입력하면 되는데, 그 종류는 종목코드를 의미하며 우리가 `value`로 전달할 데이터가 종목코드를 의미하는 데이터임을 표시하는 값이 바로 '0'인 것이다. 즉, 서버에 005930 종목의 종목코드라는 데이터를 입력하고 싶을 때에는 아래와 같이 구현하면 된다.

self.stockmst.SetInputValue(0, "005930")

이제 다음으로 작성해야 할 함수는 `Request()` 또는 `BlockRequest()` 함수인데, 이 함수는 별도의 인자를 전달해주지 않아도 되고 기존에 제작했던 모듈의 인스턴스(`self.stockmst`)를 활용하여 데이터를 요청하면 된다. 이 중 어떠한 방식으로 데이터를 요청할 것인지는 개인의 자유지만, 둘 중 권장하는 함수가 있다면 바로 `BlockRequest()` 함수를 추천한다. 왜냐하면 서버로부터 데이터를 전달받기 전까지는 이외의 작업을 중단시키는 기능이 내재되어 있어 여러 함수가 동시에 실행되면서 데이터가 꼬이는 등의 문제를 예방할 수 있기 때문이다. 

self.stockmst.BlockRequest()
##또는
self.stockmst.Request()

이제 마지막으로는 `GetHeaderValue()`라는 함수를 통해 서버로부터 반환해준 데이터를 얻어와야 하는데, 이 함수 역시 하나의 인자를 전달해주어야 한다. 여기서 전달해줘야 하는 인자는 우리가 조회하고자 하는 데이터가 어떤 것인지에 따라 다르다. 자세한 내용은 아래의 더 보기를 클릭하여 확인하도록 하자.

▶ Dscbo1.StockMst 모듈의 반환 데이터 코드 확인하기

더보기

0 - (string) 종목코드
1 - (string) 종목명
2 - (string) 대신업종코드
3 - (string) 그룹코드
4 - (short) 시간
5 - (string) 소속구분(문자열)
6 - (string) 대형,중형,소형
8 - (long) 상한가
9- (long) 하한가
10 - (long) 전일종가
11 - (long) 현재가
12 - (long) 전일대비
13 - (long) 시가
14 - (long) 고가
15 - (long) 저가
16 - (long) 매도호가
17 - (long) 매수호가
18 - (long) 누적거래량   [주의] 기준단위를확인하세요
19 - (unsigned long) 누적거래대금    [주의] 기준단위를확인하세요
20 - (long) EPS
21 - (long) 연중최고가
22 - (long) 연중최고가 일자
23 - (long) 연중최저가
24 - (long) 연중최저가 일자
25 - (short) 신용시장(전체)
26 - (char) 결산월
27 - (long) basis price (기준가)
28 - (float) PER
31 - (decimal) 상장주식수    [주의] 기준단위를확인하세요
32 - (long) 상장자본금
33 - (long) 외국인 DATA 일자
34 - (short) 외국인 TIME 일자
35 - (decimal) 외국인상장주식수
36 - (decimal) 외국인주문주식수
37 - (long) 외국인한도수량
38 - (float) 외국인한도비율
39 - (decimal) 외국인주문가능수량
40 - (float) 외국인주문가능비율
42 - (string) 증권전산업종코드
43 - (short) 매매수량단위
44 - (char)정상/이상급등/관리/거래정지등등구분(코드)
45 - (char) 소속구분(코드)
46 - (long) 전일거래량
47 - (long) 52주최고가
48 - (long) 52주최고일
49 - (long) 52주최저가
50 - (long) 52주최저일
52 - (string) 벤처기업구분
53 - (string) KOSPI200 채용여부
54 - (short) 액면가
55 - (long) 예상체결가
56 - (long) 예상체결가전일대비
57 - (long) 예상체결수량
58 - (char)예상체결가구분플래그
59 - (char)장구분플래그
60 - (char)자사주신청여부
61 - (long) 자사주신청수량
62 - (long) 거래원외국계매도총합
63 - (long) 거래원외국계매수총합
64 - (float) 신용잔고비율
65 - (char)CB여부
66 - (char)관리구분
67 -(char)투자경고구분
68 -(char)거래정지구분
69 -(char)불성실공시구분
70 - (long) BPS
71 - (long) 총매도잔량
72 - (long) 총매도잔량대비
73 - (long) 총매수잔량
74 - (long) 총매수잔량대비
75 - (long) 시간외총매도잔량
76 - (long) 시간외총매도잔량대비
77 - (long) 시간외총매수잔량
78 - (long) 시간외총매수잔량대비
79 - (long) Count [10차 호가이므로 10을 고정리턴]
80 - (long) 정적VI 발동 예상기준가
81 - (long) 정적VI 발동 예상상승가
82 - (long) 정적VI 발동 예상하락가
83 - (long) 장전 시간외 거래량
84 - (long) 장전 시간외 거래대금(단위: 거래소 만원, 코스닥 천원)
85 - (long) 장전 시간외 매도호가 잔량
86 - (long) 장전 시간외 매수호가 잔량

우리가 예제로 사용해 볼 데이터는 종목코드, 종목명, 현재가 데이터이며 이 세 유형의 데이터는 각각 0, 1, 11이라는 코드를 가지고 있다. 즉, 종목명 데이터를 조회하려면 `GetHeaderValue(1)`과 같이 코드를 구현하면 된다는 것이다. 

 

 


반응형
728x90

 

 

(3) 현재가 조회 함수 캡슐화

이제 현재가 데이터를 조회하기 위해 필요한 세 가지 함수를 모두 확인하였으니, 특정 함수에 종목코드만 전달하면 해당 종목코드의 종목코드(0), 종목명(1), 현재가(11), 전일 종가(10), 시가(13), 고가(14), 저가(15) 데이터를 모두 반환하는 함수를 제작해보도록 하자. 함수 이름은 임의로 `_StockMst`로 설정하였고 함수의 인자로는 `item_code`를 전달받도록 하였다. 그 후 각각의 반환 데이터는 적절한 변수명(`item_code`, `item_name`, `y_close`, `now` 등)을 지정하여 해당 변수에 값을 입력하도록 한 후, `print()` 구문을 통해 해당 데이터를 간단하게 출력하도록 하였다.

    def _StockMst(self, item_code):
        """주식종목현재가 반환"""
        self.stockmst.SetInputValue(0, item_code)
        self.stockmst.BlockRequest()
        item_code = self.stockmst.GetHeaderValue(0)
        item_name = self.stockmst.GetHeaderValue(1)
        y_close = self.stockmst.GetHeaderValue(10)
        now = self.stockmst.GetHeaderValue(11)
        open = self.stockmst.GetHeaderValue(13)
        high = self.stockmst.GetHeaderValue(14)
        low = self.stockmst.GetHeaderValue(15)
        print(f"[{item_code}] {item_name}")
        print(f"  전일종가:{y_close}, 현재가:{now} ")
        print(f"  시가:{open}, 고가:{high}, 저가:{low}")

이제 함수를 실행하는 코드를 구현한 후에 실행해보도록 하자.
※ Line: 10

import win32com.client

class cybos:
    def __init__(self):
        self.cybos = win32com.client.Dispatch("CpUtil.CpCybos")             ## COM 연결
        self.stockcode = win32com.client.Dispatch("CpUtil.CpStockCode")     ## COM 연결
        self.trade = win32com.client.Dispatch("CpTrade.CpTdUtil")           ## COM 연결
        self.codemgr = win32com.client.Dispatch("CpUtil.CpCodeMgr")         ## COM 연결
        self.stockmst = win32com.client.Dispatch("DsCbo1.StockMst")         ## COM 연결
        self._StockMst("005930")

    def _StockMst(self, item_code):
        """주식종목현재가 반환"""
        self.stockmst.SetInputValue(0, item_code)
        self.stockmst.BlockRequest()
        item_code = self.stockmst.GetHeaderValue(0)
        item_name = self.stockmst.GetHeaderValue(1)
        y_close = self.stockmst.GetHeaderValue(10)
        now = self.stockmst.GetHeaderValue(11)
        open = self.stockmst.GetHeaderValue(13)
        high = self.stockmst.GetHeaderValue(14)
        low = self.stockmst.GetHeaderValue(15)
        print(f"[{item_code}] {item_name}")
        print(f"  전일종가:{y_close}, 현재가:{now} ")
        print(f"  시가:{open}, 고가:{high}, 저가:{low}")

    def _IsConnect(self):
        value = self.cybos.IsConnect
        if value == 1:
            print(f"[통신결과:{value}] 서버와의 연결에 성공했습니다.")
        elif value == 0:
            print(f"[통신결과:{value}] 서버와의 연결에 실패했습니다.")

    def _ServerType(self):
        """
        0: 연결 끊김
        1: CybosPlus 서버
        2:HTS 보통 서버(1번 제외)
        """
        value = self.cybos.ServerType
        if value == 0:
            print(f"[서버종류:{value}] 서버와의 연결이 끊겼습니다.")
        elif value == 1:
            print(f"[서버종류:{value}] CybosPlus 서버와의 연결에 성공했습니다.")
        elif value == 2:
            print(f"[서버종류:{value}] HTS 보통 서버와의 연결에 성공했습니다.")

    def _CodeToName(self, code):
        value = self.stockcode.CodeToName(code)
        print(f"[인자값:{code}] 결과값:{value}")

    def _CodeToFullCode(self, code):
        value = self.stockcode.CodeToFullCode(code)
        print(f"[인자값:{code}] 결과값:{value}")

    def _FullCodeToCode(self, fullcode):
        value = self.stockcode.FullCodeToCode(fullcode)
        print(f"[인자값:{fullcode}] 결과값:{value}")

    def _FullCodeToName(self, fullcode):
        value = self.stockcode.FullCodeToName(fullcode)
        print(f"[인자값:{fullcode}] 결과값:{value}")

    def _CodeToIndex(self, code):
        value = self.stockcode.CodeToIndex(code)
        print(f"[인자값:{code}] 결과값:{value}")

    def _GetCount(self):
        value = self.stockcode.GetCount()
        print(f"전체 종목코드 개수:{value}")

    def _GetData(self, type, index):
        """
        종목코드의 Index와 함께 Type을 전달해주면 Type에 해당하는 데이터를 반환함
        :param type: 0은 종목코드, 1은 종목명, 2은 표준코드 체계 하에서의 코드
        :param index:종목코드 인덱스
        :return: 해당 데이터
        """
        value = self.stockcode.GetData(type, index)
        print(f"[Type:{type}, Index:{index}] 결과값:{value}")

    def _TradeInit(self):
        """
        :return: 주문과 관련된 결과값 반환
            -1: 오류 (계좌 비밀번호 오류도 포함함)
             0: 정상
             1: OTP/보안카드 키 입력 잘못됨
             3: 취소
        """
        value = self.trade.TradeInit(0)
        result = ""   ## 지역변수 설정
        if value == -1:
            result = "오류(계좌 비밀번호 오류도 포함함)"
        elif value == 0:
            result = "정상"
        elif value == 1:
            result = "OTP/보안카드 키 입력 잘못됨"
        elif value == 3:
            result = "취소"
        print(f"[주문 오브젝트 초기화 결과] {value}({result})")

    def _AccountNumber(self):
        """
        [Only Read, 읽기 전용 함수]
        :return: 계좌 목록 표기
        """
        value = self.trade.AccountNumber
        print(f"[마스터 계좌 표기] {value}")

    def _GetStockMarginRate(self, code):
        """
        :param code: 종목코드
        :return:     주식 매수 증거금율
        """
        value = self.codemgr.GetStockMarginRate(code)
        print(f"[인자값:{code}] 매수 증거금율:{value}%({type(value)})")

    def _GetStockMarketKind(self, code):
        """
        :param code: 종목코드
        :return:     해당 종목코드의 소속 시장 반환
            0: 구분없음
            1: 거래소
            2: 코스닥
            3: K-OTC
            4: KRX
            5: KONEX
        """
        value = self.codemgr.GetStockMarketKind(code)
        name = ""   ## 지역변수 설정
        if value == 0:
            name = "구분없음"
        elif value == 1:
            name = "거래소"
        elif value == 2:
            name = "코스닥"
        elif value == 3:
            name = "K-OTC"
        elif value == 4:
            name = "KRX"
        elif value == 5:
            name = "KONEX"
        print(f"[인자값:{code}] 소속시장:{value}({name})")

    def _GetStockListByMarket(self, market_kind_code):
        """
        :param market_kind_code: GetStockMarketKind 함수의 인자값 참조
            1: 거래소, 2: 코스닥, 3: K-OTC, 4: KRX, 5: KONEX
        :return                : 시장 구분에 따른 주식 종목 배열
        """
        value = self.codemgr.GetStockListByMarket(market_kind_code)
        print(f"[인자값:{market_kind_code}] 종목코드 목록:{value}")

    def _GetIndustryList(self):
        """
        :return: 증권 전산 업종코드 리스트를 모두 반환
        """
        value = self.codemgr.GetIndustryList()
        print(f"[증권 전산 업종코드 목록] {value}")

    def _GetIndustryName(self, code):
        """
        :param code: 증권 전산 업종코드
        :return    : 증권 전산 업종명
        """
        value = self.codemgr.GetIndustryName(code)
        print(f"[증권 전산 업종코드:{code}] 업종명:{value}")

    def _GetIndustryGroupCodeList(self, code):
        value = self.codemgr.GetIndustryGroupCodeList(code)
        print(f"[증권 전산 업종코드:{code}] 종목목록:{value}")

if __name__ == "__main__":
    cybos()

▶ 실행 결과 확인하기

더보기

[005930] 삼성전자
  전일종가:0, 현재가:0 
  시가:0, 고가:0, 저가:0

실행 결과를 보니 전일 종가 데이터와 현재가 데이터를 잘 가져오지 못하고 있다는 걸 확인할 수 있다. 그 이유는 무엇일까 ? 바로 대신증권은 종목코드를 전달해줄 때에는 반드시 종목의 단축코드 체계 하에서의 종목코드를 입력해주어야 하기 때문이다. 즉, 결론부터 말하자면 우리는 삼성전자 종목의 데이터를 조회할 때에는 "005930"이 아닌 "A005930"을 전달해줘야 한다. 그렇다면 종목코드 별로 앞에 추가되는 문자가 "A"인지 아닌지 등에 대해 확인할 수 있어야 하는데, 우리는 조금은 번거롭더라도 6자리로 이루어진 종목코드를 가지고 단축코드 체계의 종목코드를 조회할 수 있는 함수가 있다.

그 방법은 ① `_CodeToFullCode()` 함수를 통해서 표준코드 체계의 종목코드로 전환한 후 ② `_FullCodeToCode()` 함수를 통해서 표준코드 체계의 종목코드를 단축코드 체계의 종목코드로 전환하는 것이다. 이 방법을 쓸 경우 ①번 단계에서 "005930" 데이터를 가지고 "KR7005930003"을 얻고, ②번 단계에서 "A005930"을 얻게 된다. 내용이 조금은 번거로울 수도 있겠지만, 이 부분에서 우리는 한 가지 시사점을 얻을 수 있다. 바로 대신증권의 CYBOS PLUS를 사용할 경우, 종목코드를 저장하거나 호출하는 등 종목코드 데이터를 관리할 때에는 반드시 7자리로 이루어진 단축코드 체계의 종목코드를 저장하고 호출해야 한다는 것이다. 이제 데이터가 조회되지 않는 원인을 확인했으니, `self._StockMst()` 함수의 인자로 "005930"이 아닌 "A005930"을 입력하고 데이터가 잘 수신되는지 확인해보도록 하자.
※ Line: 10

import win32com.client

class cybos:
    def __init__(self):
        self.cybos = win32com.client.Dispatch("CpUtil.CpCybos")             ## COM 연결
        self.stockcode = win32com.client.Dispatch("CpUtil.CpStockCode")     ## COM 연결
        self.trade = win32com.client.Dispatch("CpTrade.CpTdUtil")           ## COM 연결
        self.codemgr = win32com.client.Dispatch("CpUtil.CpCodeMgr")         ## COM 연결
        self.stockmst = win32com.client.Dispatch("DsCbo1.StockMst")         ## COM 연결
        self._StockMst("A005930")

    def _StockMst(self, item_code):
        """주식종목현재가 반환"""
        self.stockmst.SetInputValue(0, item_code)
        self.stockmst.BlockRequest()
        item_code = self.stockmst.GetHeaderValue(0)
        item_name = self.stockmst.GetHeaderValue(1)
        y_close = self.stockmst.GetHeaderValue(10)
        now = self.stockmst.GetHeaderValue(11)
        open = self.stockmst.GetHeaderValue(13)
        high = self.stockmst.GetHeaderValue(14)
        low = self.stockmst.GetHeaderValue(15)
        print(f"[{item_code}] {item_name}")
        print(f"  전일종가:{y_close}, 현재가:{now} ")
        print(f"  시가:{open}, 고가:{high}, 저가:{low}")

    def _IsConnect(self):
        value = self.cybos.IsConnect
        if value == 1:
            print(f"[통신결과:{value}] 서버와의 연결에 성공했습니다.")
        elif value == 0:
            print(f"[통신결과:{value}] 서버와의 연결에 실패했습니다.")

    def _ServerType(self):
        """
        0: 연결 끊김
        1: CybosPlus 서버
        2:HTS 보통 서버(1번 제외)
        """
        value = self.cybos.ServerType
        if value == 0:
            print(f"[서버종류:{value}] 서버와의 연결이 끊겼습니다.")
        elif value == 1:
            print(f"[서버종류:{value}] CybosPlus 서버와의 연결에 성공했습니다.")
        elif value == 2:
            print(f"[서버종류:{value}] HTS 보통 서버와의 연결에 성공했습니다.")

    def _CodeToName(self, code):
        value = self.stockcode.CodeToName(code)
        print(f"[인자값:{code}] 결과값:{value}")

    def _CodeToFullCode(self, code):
        value = self.stockcode.CodeToFullCode(code)
        print(f"[인자값:{code}] 결과값:{value}")

    def _FullCodeToCode(self, fullcode):
        value = self.stockcode.FullCodeToCode(fullcode)
        print(f"[인자값:{fullcode}] 결과값:{value}")

    def _FullCodeToName(self, fullcode):
        value = self.stockcode.FullCodeToName(fullcode)
        print(f"[인자값:{fullcode}] 결과값:{value}")

    def _CodeToIndex(self, code):
        value = self.stockcode.CodeToIndex(code)
        print(f"[인자값:{code}] 결과값:{value}")

    def _GetCount(self):
        value = self.stockcode.GetCount()
        print(f"전체 종목코드 개수:{value}")

    def _GetData(self, type, index):
        """
        종목코드의 Index와 함께 Type을 전달해주면 Type에 해당하는 데이터를 반환함
        :param type: 0은 종목코드, 1은 종목명, 2은 표준코드 체계 하에서의 코드
        :param index:종목코드 인덱스
        :return: 해당 데이터
        """
        value = self.stockcode.GetData(type, index)
        print(f"[Type:{type}, Index:{index}] 결과값:{value}")

    def _TradeInit(self):
        """
        :return: 주문과 관련된 결과값 반환
            -1: 오류 (계좌 비밀번호 오류도 포함함)
             0: 정상
             1: OTP/보안카드 키 입력 잘못됨
             3: 취소
        """
        value = self.trade.TradeInit(0)
        result = ""   ## 지역변수 설정
        if value == -1:
            result = "오류(계좌 비밀번호 오류도 포함함)"
        elif value == 0:
            result = "정상"
        elif value == 1:
            result = "OTP/보안카드 키 입력 잘못됨"
        elif value == 3:
            result = "취소"
        print(f"[주문 오브젝트 초기화 결과] {value}({result})")

    def _AccountNumber(self):
        """
        [Only Read, 읽기 전용 함수]
        :return: 계좌 목록 표기
        """
        value = self.trade.AccountNumber
        print(f"[마스터 계좌 표기] {value}")

    def _GetStockMarginRate(self, code):
        """
        :param code: 종목코드
        :return:     주식 매수 증거금율
        """
        value = self.codemgr.GetStockMarginRate(code)
        print(f"[인자값:{code}] 매수 증거금율:{value}%({type(value)})")

    def _GetStockMarketKind(self, code):
        """
        :param code: 종목코드
        :return:     해당 종목코드의 소속 시장 반환
            0: 구분없음
            1: 거래소
            2: 코스닥
            3: K-OTC
            4: KRX
            5: KONEX
        """
        value = self.codemgr.GetStockMarketKind(code)
        name = ""   ## 지역변수 설정
        if value == 0:
            name = "구분없음"
        elif value == 1:
            name = "거래소"
        elif value == 2:
            name = "코스닥"
        elif value == 3:
            name = "K-OTC"
        elif value == 4:
            name = "KRX"
        elif value == 5:
            name = "KONEX"
        print(f"[인자값:{code}] 소속시장:{value}({name})")

    def _GetStockListByMarket(self, market_kind_code):
        """
        :param market_kind_code: GetStockMarketKind 함수의 인자값 참조
            1: 거래소, 2: 코스닥, 3: K-OTC, 4: KRX, 5: KONEX
        :return                : 시장 구분에 따른 주식 종목 배열
        """
        value = self.codemgr.GetStockListByMarket(market_kind_code)
        print(f"[인자값:{market_kind_code}] 종목코드 목록:{value}")

    def _GetIndustryList(self):
        """
        :return: 증권 전산 업종코드 리스트를 모두 반환
        """
        value = self.codemgr.GetIndustryList()
        print(f"[증권 전산 업종코드 목록] {value}")

    def _GetIndustryName(self, code):
        """
        :param code: 증권 전산 업종코드
        :return    : 증권 전산 업종명
        """
        value = self.codemgr.GetIndustryName(code)
        print(f"[증권 전산 업종코드:{code}] 업종명:{value}")

    def _GetIndustryGroupCodeList(self, code):
        value = self.codemgr.GetIndustryGroupCodeList(code)
        print(f"[증권 전산 업종코드:{code}] 종목목록:{value}")

if __name__ == "__main__":
    cybos()

▶ 실행 결과 확인하기

더보기

[A005930] 삼성전자
  전일종가:83100, 현재가:79600 
  시가:81000, 고가:81400, 저가:79500

※ (2024.08.02. 기준 데이터입니다.)

 

이로써 우리는 `self._StockMst()` 함수에 종목코드 데이터를 전달한 후, 그 결과값을 정상적으로 수신받을 수 있게 되었다. 앞으로도 삼성전자가 아닌 다른 종목이라 하더라도, 단순히 종목코드만 전달하면 원하는 데이터를 모두 회신받을 수 있다. 궁금하자면 LG전자의 종목코드인 "A066570"을 입력하여 데이터를 수신받고, 실제 데이터와 일치하는지 직접 확인해보도록 하자.

 

 


728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.