본문 바로가기
알고리즘 트레이딩/CREON API 예제 분석

CREON API (Python) 주식 일자별 조회

by 빵빵댇 2022. 2. 16.

코드

import win32com.client
 
def ReqeustData(obj):
    # 데이터 요청
    obj.BlockRequest()
 
    # 통신 결과 확인
    rqStatus = obj.GetDibStatus()
    rqRet = obj.GetDibMsg1()
    print("통신상태", rqStatus, rqRet)
    if rqStatus != 0:
        return False
 
    # 일자별 정보 데이터 처리
    count = obj.GetHeaderValue(1)  # 데이터 개수
    for i in range(count):
        date = obj.GetDataValue(0, i)  # 일자
        open = obj.GetDataValue(1, i)  # 시가
        high = obj.GetDataValue(2, i)  # 고가
        low = obj.GetDataValue(3, i)  # 저가
        close = obj.GetDataValue(4, i)  # 종가
        diff = obj.GetDataValue(5, i)  # 종가
        vol = obj.GetDataValue(6, i)  # 종가
        print(date, open, high, low, close, diff, vol)
 
    return True
 
 
 
# 연결 여부 체크
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
bConnect = objCpCybos.IsConnect
if (bConnect == 0):
    print("PLUS가 정상적으로 연결되지 않음. ")
    exit()
 
 
# 일자별 object 구하기
objStockWeek = win32com.client.Dispatch("DsCbo1.StockWeek")
objStockWeek.SetInputValue(0, 'A005930')   #종목 코드 - 삼성전자
 
# 최초 데이터 요청
ret = ReqeustData(objStockWeek)
if ret == False:
    exit()
 
 
# 연속 데이터 요청
# 예제는 5번만 연속 통신 하도록 함.
NextCount = 1
while objStockWeek.Continue:  #연속 조회처리
    NextCount+=1;
    if (NextCount > 5):
        break
    ret = ReqeustData(objStockWeek)
    if ret == False:
        exit()

실행결과

더보기
더보기

통신상태 0 B035 조회가 계속 됩니다.(stock.week1)
20220216 74600 74900 74200 74800 1100 10767386
20220215 74100 74200 73100 73700 0 9320365    
20220214 74400 74500 73100 73700 1200 13993255
20220211 75000 75500 74600 74900 500 12205407 
20220210 75600 75800 74700 75400 700 17746033 
20220209 74300 74700 74000 74700 1200 9699122 
20220208 73800 74200 73000 73500 500 11736666 
20220207 73500 73600 72400 73000 1000 14240838
20220204 74300 74600 73400 74000 700 12730034 
20220203 74900 74900 73300 73300 0 17744721   
20220128 71300 73700 71200 73300 2000 21367447
20220127 73800 74000 71300 71300 2000 22274777
20220126 73900 74400 73100 73300 700 12976730 
20220125 74800 75000 73200 74000 1100 17766704
20220124 75400 75800 74700 75100 500 13691134 
20220121 75800 75800 74700 75600 900 15774888 
20220120 76200 76700 75900 76500 200 9708168  
20220119 76500 76900 76100 76300 700 10598290 
20220118 77600 77800 76600 77000 500 9592788  
20220117 77600 77800 76900 77500 200 8785122  
20220114 77700 78100 77100 77300 600 10096725 
20220113 79300 79300 77900 77900 1000 13889401
20220112 79500 79600 78600 78900 0 11000502
20220111 78400 79000 78000 78900 900 13221123
20220110 78100 78100 77100 78000 300 9947422
20220107 78100 78400 77400 78300 1400 15163757
20220106 76700 77600 76600 76900 500 12931954
20220105 78800 79000 76400 77400 1300 25470640
20220104 78800 79200 78300 78700 100 12427416
20220103 79400 79800 78200 78600 300 13502112
20211230 78900 79500 78100 78300 500 14236700
20211229 80200 80200 78500 78800 1500 19794795
20211228 80200 80400 79700 80300 100 18226325
20211227 80600 80600 79800 80200 300 10783368
20211224 80200 80800 80200 80500 600 12086380
20211223 79800 80000 79300 79900 500 13577498
통신상태 0 B035 조회가 계속 됩니다.(stock.week1)
20211222 78900 79400 78800 79400 1300 17105892
20211221 77900 78300 77500 78100 1000 14245298
20211220 77600 77800 76800 77100 900 11264375
20211217 76800 78000 76800 78000 200 13108479
20211216 78500 78500 77400 77800 200 11996128
20211215 76400 77600 76300 77600 600 9584939
20211214 76500 77200 76200 77000 200 10976660
20211213 77200 78300 76500 76800 100 15038750
20211210 77400 77600 76800 76900 1300 9155219
20211209 77400 78200 77000 78200 800 21604528
20211208 78300 78600 77100 77400 0 21558340
20211207 76100 77700 75600 77400 1100 19232453
20211206 75100 76700 74900 76300 700 16391250
20211203 75600 76000 74100 75600 200 18330240
20211202 73900 75800 73800 75800 1400 23652940
20211201 72000 74800 71600 74400 3100 21954856
20211130 73200 73900 70500 71300 1000 30364841
20211129 71700 73000 71400 72300 0 16682559
20211126 73500 74100 72000 72300 1400 13002242
20211125 75100 75100 73600 73700 1100 12559258
20211124 76000 76200 74100 74800 500 15652305
20211123 76000 76000 74500 75300 400 22029195
20211122 73300 75200 73000 74900 3700 27506623
20211119 70400 71400 70100 71200 1000 11954728
20211118 70700 71000 70200 70200 500 10144957
20211117 71300 71600 70600 70700 600 11027606
20211116 71500 72000 71300 71300 100 10919239
20211115 71700 71900 70900 71400 800 12420710
20211112 70200 70900 69900 70600 700 10087450
20211111 69900 70000 69600 69900 300 11489122
20211110 70300 70900 70200 70200 300 9422009
20211109 70300 71000 70100 70500 100 11159589
20211108 70400 70600 69800 70600 400 11121981
20211105 71600 71600 70200 70200 400 12667743
20211104 71200 71600 70500 70600 200 11818987
20211103 71700 71700 70100 70400 1100 12770428
통신상태 0 B035 조회가 계속 됩니다.(stock.week1)
20211102 70800 72200 70700 71500 1600 16812570
20211101 70200 70600 69900 69900 100 11503729
20211029 71200 71600 69700 69800 900 17016151
20211028 69500 72200 69500 70700 600 20644902
20211027 71000 71000 70000 70100 1000 10295316
20211026 70600 71500 70400 71100 900 10528252
20211025 69900 70600 69500 70200 200 10029621
20211022 70000 70700 70000 70400 200 8395448
20211021 70300 70600 70000 70200 100 10891094
20211020 70700 71000 70200 70300 300 10151638
20211019 70800 71000 70400 70600 400 9507991
20211018 70200 70300 69200 70200 100 13486391
20211015 70200 71000 70000 70100 700 18051612
20211014 69000 69800 68800 69400 600 19520641
20211013 68700 69600 68300 68800 200 24172015
20211012 70700 70900 68700 69000 2500 31001484
20211008 72300 72400 71500 71500 100 14043287
20211007 71600 72100 71300 71600 300 13683532
20211006 72600 72800 71200 71300 900 18956962
20211005 73000 73000 71400 72200 1000 24013921
20211001 73900 74000 72900 73200 900 15803395
20210930 74300 74800 73700 74100 0 19919361
20210929 74800 75300 73800 74100 2200 23992458
20210928 77700 77800 76200 76300 1400 15406382
20210927 77300 77700 77000 77700 400 11699798
20210924 77600 77700 77100 77300 100 12247274
20210923 77500 77600 76800 77400 200 17055590
20210917 76300 77200 75900 77200 1100 16289502
20210916 77300 77400 76100 76100 900 13067622
20210915 77400 77400 76400 77000 400 12829128
20210914 77100 77700 76600 76600 300 18167057
20210913 75200 76300 75100 76300 1000 11397775
20210910 75300 75600 74800 75300 0 10103212
20210909 76400 76600 75000 75300 1000 17600770
20210908 76000 76400 75600 76300 200 11798147
20210907 77100 77100 75900 76100 1200 13239401
통신상태 0 B035 조회가 계속 됩니다.(stock.week1)
20210906 76800 77600 76600 77300 700 12861180
20210903 76400 76700 76000 76600 600 12096419
20210902 76800 76800 75700 76000 800 15347486
20210901 76700 77100 75900 76800 100 16114775
20210831 74900 76700 74300 76700 2100 24630370
20210830 75400 75500 74200 74600 300 12686999
20210827 74300 75000 73800 74300 300 15172748
20210826 76100 76200 74600 74600 1100 16671494
20210825 76200 76600 74900 75700 100 22319664
20210824 73900 75700 73900 75600 2300 21016913
20210823 73300 74000 73000 73300 600 19384648
20210820 73500 73900 72500 72700 400 22364803
20210819 73500 74400 73100 73100 800 22166298
20210818 73900 74600 73100 73900 300 29192631
20210817 74000 75100 74000 74200 200 30944847
20210813 75800 76000 74100 74400 2600 61270643
20210812 77100 78200 76900 77000 1500 42365223
20210811 79600 79800 78500 78500 1700 30241137
20210810 82300 82400 80100 80200 1300 20362639
20210809 81500 82300 80900 81500 0 15522581
20210806 81900 82500 81300 81500 600 13342623
20210805 83300 83300 82000 82100 800 18485469
20210804 82200 83100 81800 82900 1500 25642368
20210803 79400 81400 79300 81400 2100 24339360
20210802 79200 79500 78700 79300 800 11739124
20210730 78900 78900 78500 78500 500 13823411
20210729 78800 79400 78800 79000 200 14360453
20210728 78300 79200 78100 79200 700 12743417
20210727 79200 79400 78500 78500 300 11427693
20210726 79400 79500 78800 78800 500 10040975
20210723 79700 79900 79200 79300 400 9098910
20210722 79000 79800 78900 79700 1200 12618790
20210721 79000 79100 78500 78500 500 12355296
20210720 78500 79000 78400 79000 0 12456646
20210719 79100 79200 78800 79000 800 13155414
20210716 80100 80100 79500 79800 800 10859399
통신상태 0 B035 조회가 계속 됩니다.(stock.week1)
20210715 79800 80600 79500 80600 1100 13766279
20210714 79400 79600 79100 79500 300 11575636
20210713 80000 80200 79800 79800 100 9863450
20210712 79900 80000 79500 79700 300 9768108
20210709 79600 79800 79000 79400 500 22720577
20210708 81100 81200 79900 79900 900 16660998
20210707 81200 81300 80300 80800 400 15992202
20210706 80600 81200 80500 81200 800 12131651
20210705 80100 80800 80000 80400 400 8330969
20210702 80000 80400 79900 80000 100 8753097
20210701 80500 80600 80000 80100 600 13382882
20210630 81100 81400 80700 80700 300 13288643
20210629 81900 82100 80800 81000 900 15744317
20210628 81700 82000 81600 81900 300 11578529
20210625 81500 81900 81200 81600 400 13481405
20210624 80400 81400 80100 81200 1100 18771080
20210623 80500 80600 79900 80100 100 13856548
20210622 80200 80300 79900 80000 100 11773365
20210621 79700 80000 79600 79900 600 16063340
20210618 81100 81100 80500 80500 400 14916721
20210617 81100 81300 80700 80900 900 14007385
20210616 81500 81900 81100 81800 900 14999855
20210615 80900 81200 80600 80900 400 10075685
20210614 80800 80900 80500 80500 500 10550078
20210611 81200 81700 80700 81000 0 14087962
20210610 81300 81400 80900 81000 100 17586995
20210609 81500 82000 81100 81100 800 14908823
20210608 82300 82600 81800 81900 0 12781226
20210607 82700 82800 81600 81900 300 16496197
20210604 82700 82700 81500 82200 600 18112259
20210603 81300 83000 81100 82800 2000 29546007
20210602 80400 81400 80300 80800 200 16414644
20210601 80500 81300 80100 80600 100 14058401
20210531 80300 80600 79600 80500 400 13321324
20210528 79800 80400 79400 80100 500 12360199
20210527 80000 80000 79100 79600 200 23198510

분석내용

DsCbo1.StockWeek 객체를 사용하여 대상 주식의 일자별 정보(시가, 고가, 저가, 종가 등..)를 조회하는 예제다.

객체 생성 이후 SetInputValue() 메소드로 조회 대상이 되는 종목을 설정한다. (예제에서는 A005930 삼성전자)

 

예제 내에서 StockWeek 객체를 인자로 받는 RequestData()라는 메소드를 정의하여 사용했는데 예제 상에서 코드 재사용(Reuse)를 위해 정의한 것일 뿐 특별한 의미는 없어 보인다.

 

StockWeek 객체를 이용하기 위해 사용한 주요 메소드 및 분석 내용은 아래와 같다. 그림은 내가 이해한 내용을 정리한 것이다.

 

  • SetInputValue() 메소드로 조회대상 종목을 설정한다. 첫번째 인자는 종목코드 입력할 것을 의미하는 0 고정값이고 두번째 인자로 종목코드를 입력받는다.
  • StockWeek 객체에 대해 BlockRequest()로 데이터를 요청하면 호출하는 시점의 일자를 포함하여 주식 장이 열리지 않는 휴일을 제외한 최근 36일치 정보를 읽어온다. 대상기간을 정하는 별도의 메소드가 없어서 36일이라는 수치가 default 값이고 조정할 수 없다. (CREON에서 도움말을 잘못 작성한 것이 아니라면..)
  • GetHeaderValue()의 인자는 아래와 같은 값이 입력될 수 있다
    • 0 : 종목코드. 본 예제에서 GetHeaderValue(0)을 호출하면 앞서 입력한 종목코드인 A005930을 반환한다.
    • 1 : 데이터 개수. BlockRequest()의 결과값으로 수신한 데이터 개수 따라서 36을 반환한다. 하지만 BlockRequest() 호출 이전에 GetHeaderValue(1)을 호출해보면 0을 반환함을 확인할 수 있다.
    • 2 : 날짜. 위 그림을 예시로 설명하면 BlockRequest() 호출 이후 GetHeaderValue(2)를 호출한 경우, 35번째 index의 날짜인 '20211223'을 반환한다.
  • GetDataValue()의 첫번째 인자는 type, 두번째 인자는 index를 의미한다. index는 위 그림의 0~35 값을 가지는 index에 해당하고 type은 0~22의 값을 가지는 index에 해당한다. 즉 위 그림처럼 이해해보면 type도 index라고 생각해도 무방하다는 의미이다. 각 type이 가지는 의미는 아래와 같다. 
    더보기
    더보기

    0 - (ulong) 

    1 - (long) 

    2 - (long) 

    3 - (long) 

    4 - (long) 

    5 - (long) 전일대

    6 - (long) 누적거래[주의] 기준단위를확인하세요

    시장구분 기준단위
    거래소,코스닥,프리보드 단주
    거래소지수 천주
    코스닥지수프리보드지수 단주

    7 - (long) 외인보

    8 - (long) 외인보유전일대

    9 - (double) 외인비

    10 - (double) 등락

    11- (char)대비부호

    코드 내용
    '1' 상한
    '2' 상승
    '3' 보합
    '4' 하한
    '5' 하락
    '6' 기세상한
    '7' 기세상승
    '8' 기세하한
    '9' 기세하락

    12- (long) 기관순매수수량

    13- (long) 시간외단일가시가

    14- (long) 시간외단일가고가

    15- (long) 시간외단일가저가

    16- (long) 시간외단일가종가

    17- (char) 시간외단일가대비부호

    18- (long) 시간외단일가전일대비

    19- (long) 시간외단일가거래량

    20- (long)  거래대금(단위:  만원)

    21- (long)  외국인 순매수 수량

 

참고

아래는 StockWeek 객체의 CREON 홈페이지의 도움말이다.

https://money2.creontrade.com/e5/mboard/ptype_basic/HTS_Plus_Helper/DW_Basic_Read_Page.aspx?boardseq=284&seq=23&page=1&searchString=stockweek&p=8841&v=8643&m=9505 

 

크레온플러스 도움말 - 크레온

주식종목에대해일자별주가데이터 (최고 10년치데이터)를최근의날로부터그일정시점의날까지시가,고가,저가,종가,등락률,외인비중등등격

money2.creontrade.com

 

댓글