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

처음에는 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))

+ Recent posts