ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Creon API로 connect
    개발자로 살아남기/주식투자 2019. 8. 4. 16:29

    맨날 공부한다고 생각만하고 있어서 그런지 상당히 더디게 프로젝트가 진행되고 있다.

    처음에는 python 공부를 목적으로 하였지만.. 그것보단 내가 어떤 주식을 사야할지, 데이터 접근하여 값을 가져오는 용도로 이용하게 될 것같다.

    Creon API로 connect 하는 예제 코드이다.

    종목 번호를 기반으로 주가를 찍어주는 소스이다.

    b_connected = self.obj_CpCybos.IsConnect
    if b_connected == 0:
    print("connect fail")
    return None

    이 부분이 앞으로의 프로젝트에 제일 많이 쓰일.. connect 를 체크하는 부분이다.

    python 자체를 공부해보지 못해서 다소 소스 해석이 되지않지만 하다 보면 되지 않을까 생각된다.

    예제 소스는 다음과 같다.

    
    import time
    import win32com.client
    import pandas as pd
    
    class Creon:
        def __init__(self):
            self.obj_CpCodeMgr = win32com.client.Dispatch('CpUtil.CpCodeMgr')
            self.obj_CpCybos = win32com.client.Dispatch('CpUtil.CpCybos')
            self.obj_StockChart = win32com.client.Dispatch('CpSysDib.StockChart')
    
        def creon_chart_search(self, code, date_from, date_to):
            b_connected = self.obj_CpCybos.IsConnect
            if b_connected == 0:
                print("connect fail")
                return None
    
            list_field_key = [0, 1, 2, 3, 4, 5, 8]
            list_field_name = ['date', 'time', 'open', 'high', 'low', 'close', 'volume']
            dict_chart = { name : [] for name in list_field_name}
            self.obj_StockChart.SetInputValue(0, 'A'+code)
            self.obj_StockChart.SetInputValue(1, ord('1'))
            self.obj_StockChart.SetInputValue(2, date_to)
            self.obj_StockChart.SetInputValue(3, date_from)
            self.obj_StockChart.SetInputValue(5, list_field_key)
            self.obj_StockChart.SetInputValue(6, ord('D'))
            self.obj_StockChart.BlockRequest()
    
            status = self.obj_StockChart.GetDibStatus()
            msg = self.obj_StockChart.GetDibMsg1()
            print("connected status : {} {}".format(status,msg))
            if status != 0:
                return None
    
            cnt = self.obj_StockChart.GetHeaderValue(3)
            for i in range(cnt):
                dict_item = (
                    {name : self.obj_StockChart.GetDataValue(pos,i)
                    for pos,name in zip(range(len(list_field_name)),list_field_name)}
                )
                for k,v in dict_item.items():
                    dict_chart[k].append(v)
    
            print("char {} {}".format(cnt, dict_chart))
            return pd.DataFrame(dict_chart, columns=list_field_name)
    
    
    if __name__ == '__main__':
        creon = Creon()
        print(creon.creon_chart_search('035420', 20150101, 20171201))
    
    
Designed by Tistory.