[파이썬] 크레온 거래량과 거래대금 상위 종목 가져오기

이번 포스팅은 파이썬으로 대신증권 크레온에서 거래량과 거래대금 상위 종목을 가져와 활용하는 방법을 정리했습니다. 크레온 HTS의 0168 화면의 데이터와 같습니다. 주식에서 가장 중요한 지표 중 하나인 거래량을 분석해 현재 가장 주목 받는 종목을 찾을 수 있습니다. 또한, 간단한 필터링 작업으로 종목의 가격대, 전일 대비 상승/하락, 관리 종목, 우선주 종목 등으로 분류해 세분화할 수도 있습니다.



예제 코드

import win32com.client
CP_TOP_N = win32com.client.Dispatch('CpSysDib.CpSvr7049') 
def request_stock_TopN(market, number):
    try:     
        '''요청 조건 설정'''
        CP_TOP_N.SetInputValue(0, market)   # 시장 - '1':거래소, '2':코스닥, '4':전체(거래소+코스닥)  
        CP_TOP_N.SetInputValue(1,'A')       # 구분 - 'V':거래량상위, 'A':거래대금상위
        CP_TOP_N.SetInputValue(2,'y')       # 관리종목 - 'Y':미포함, 'N':포함
        CP_TOP_N.SetInputValue(3,'y')       # 우선주 - 'Y':미포함, 'N':포함
        CP_TOP_N.BlockRequest()             # 요청
        '''응답 헤더'''
        print('요청 종목 개수 -',CP_TOP_N.GetHeaderValue(0))
        '''응답 결과 분석'''
        # 0 - 순위, 1 - 종목코드, 2 - 종목명, 3 - 현재가, 4 - 현재가 전일대비
        # 5 - 현재가 전일대비율,  6 - 거래량, 7 - 거래대금
        for i in range(number):
            print(CP_TOP_N.GetDataValue(0,i), CP_TOP_N.GetDataValue(1,i), CP_TOP_N.GetDataValue(2,i))
            '''필터링 및 종목 저장'''
            if 1000 < CP_TOP_N.GetDataValue(3,i) < 50000:
                list_buy_plan.append(CP_TOP_N.GetDataValue(1,i))
            
    except Exception as ex:
        print('에러발생 : request_stock_TopN() ' + str(ex))
list_buy_plan = []          # 구매 예정 리스트 선언
request_stock_TopN(2, 5)    # 변수1 - 시장, 변수2 - 개수
print('구매 예정 리스트 -',list_buy_plan)

5 – 함수에 주식시장과 종목수를 유기적으로 바꿀 수 있는 매개변수를 설정.
8:12 – 아래 [거래량과 거래대금 상위 종목 요청하기] 참조.
15 – 아래 [거래량과 거래대금 상위 종목 응답 헤더] 참조.
18:21 – 아래 [거래량과 거래대금 상위 종목 응답 값] 참조.
24:25 – 필터링 조건에 맞는 종목만 저장.
27:28 – 에러 발생 시 알림.




[거래량과 거래대금 상위 종목] 요청하기

CP_TOP_N.SetInputValue(0, market)   
CP_TOP_N.SetInputValue(1,'A')      
CP_TOP_N.SetInputValue(2,'y')    
CP_TOP_N.SetInputValue(3,'y')       
CP_TOP_N.BlockRequest()            
typevalue 설명응답 자료형
0‘1’:거래소, ‘2’:코스닥, ‘4’:전체(거래소+코스닥)주식시장 구분string
1‘V’:거래량상위, ‘A’:거래대금상위거래량/대금 구분string
2‘Y’:미포함, ‘N’:포함관리종목 포함 여부string
3‘Y’:미포함, ‘N’:포함우선주 포함 여부string




[거래량과 거래대금 상위 종목] 응답 헤더

print('요청 종목 개수 -',CP_TOP_N.GetHeaderValue(0))
request_header = CP_TOP_N.GetHeaderValue(0)
for i in range(request_header):
    print(CP_TOP_N.GetDataValue(0,i), CP_TOP_N.GetDataValue(1,i), CP_TOP_N.GetDataValue(2,i))
type설명응답 자료형
0결과값 개수short

저처럼 함수의 매개변수 number로 보여지는 정보를 상위 N개로 제한하지 않고, 응답 헤더의 결과를 변수에 저장해 활용하면 응답 된 모든 종목의 결과를 확인할 수 있습니다.




[거래량과 거래대금 상위 종목] 응답 값

for i in range(number):
    print(CP_TOP_N.GetDataValue(0,i), CP_TOP_N.GetDataValue(1,i), CP_TOP_N.GetDataValue(2,i))
    '''필터링 및 종목 저장'''
    if 1000 < CP_TOP_N.GetDataValue(3,i) < 50000:
        list_buy_plan.append(CP_TOP_N.GetDataValue(1,i))
type설명응답 자료형
0순위short
1종목코드string
2종목명string
3현재가long
4현재가 전일대비long
5현재가 전일대비율float
6거래량long
7거래대금 (만원, 코스닥으로 선택시에는 천원)long

응답 값의 여러 결과로도 필요한 종목을 필터링 할 수 있지만 시가총액, PER, 매출액 등 더 상세한 분석을 위해서는 []를 활용하는 것이 좋습니다.




참고글

[크레온 문서]
[거래량/거래대금 상위종목] CpSysDib.CpSvr7049 – 크레온




관련글

guest
0 Comments
Inline Feedbacks
모든 댓글 보기