플그래밍/파이써언

[파이썬] 007. 분봉 데이터로 상한가 찾기

훗티v 2020. 11. 20. 08:36

키움증권 HTS는 각 분봉에서 확인할 수 있는 주가 및 거래량 데이터를 엑셀 파일로 추출할 수 있는 기능을 제공한다.

 

차트 우클릭 후 "데이타표 저장"을 클릭하여 해당 차트의 주가 및 거래량 데이터를 엑셀 파일로 추출할 수 있다.

 

일단 엑셀 파일로 추출을 한 후에 원하는 조건을 만족하는 날짜를 찾기 위해서 파이썬을 활용해보자.

 

이번 예제에서는 추출한 엑셀파일을 기준으로 상한가 위치를 알아보고자 한다.

 

키움증권 HTS를 통해 추출한 엑셀파일은 .xls의 확장자의 파일로 위와 같은 구조를 갖추고 있다.

 

15분봉의 차트에서 추출하였기 때문에 1줄에 15분봉의 주가 및 거래량 데이타가 표시되어있다.

 

상한가는 전날의 종가대비 30%(정확히는 호가 때문에 30%가 안되는 종목도 있지만...)상승 마감한 종목을 뜻하기 때문에 각 날짜의 종가를 찾고 다음날의 종가와 비교하는 과정을 통해 상한가 여부를 확인할 수 있다.

 

import os
import glob
import xlrd as xl
import re

# 엑셀 파일과 파이썬 파일의 PATH값 설정
path = os.path.dirname(os.path.realpath(__file__))
os.chdir(path)

# 엑셀파일을 저장해놓은 폴더 검색
files = glob.glob('data/*.xls')

# 파일 위치(각 엑셀 파일마다 다음 작업을 실행한다)
for file in files:

    loc = file
    print(loc[5:])

    # 엑셀 파일 실행/읽기
    # 한글이 포함된 엑셀 파일의 경우, encoding_override='cp949' 추가 (cp949, euc_kr)
    wb = xl.open_workbook(loc, encoding_override='cp949')

    # 워크시트 읽어오기
    s1 = wb.sheet_by_index(0)

    # 셀 이니셜라이징
    s1.cell_value(0, 0)

    # 엑셀 파일의 총 row 저장
    rows = s1.nrows

    i = 1
    l = []

    while i < rows-1:
        x = s1.cell_value(i, 1).replace(":", "")
        y = s1.cell_value(i+1, 1).replace(":", "")
        z = int(x)-int(y)

        if z < 0:
            # print(s1.cell_value(i, 0))
            l.append(s1.cell_value(i+1, 0))
            # print(s1.cell_value(i, 5))
            l.append(s1.cell_value(i+1, 5))
            l.append(i)
            i += 1
        else:
            i += 1

    j = 0
    l_date = []
    l_row = []
    # print(l)
    while j < len(l)-3:
        k = (float(l[j+1])/float(l[j+4]))-1
        # print("{:.2f}".format(k))

        if k*10 > 2.95:
            # print(l[j])
            l_date.append(l[j])
            l_row.append(l[j+2])
            j += 3
        else:
            j += 3

    print(l_date)
    print('')

 

코드를 실행해보면 다음과 같은 결과가 나온다.

 

자기만의 기법을 찾다보면 최근에 발생한 움직임이 기준이 되는 경우가 대부분이다. 분봉에서 제공하는 기간이 한정되있어서이기도 하지만 많은 데이터를 가지고 수작업을 통해 기법을 만다는 것 또한 쉬운일이 아니기 떄문이기도하다. 그렇기 때문에, 기법의 일관성을 확인하기 위해서는 장기간의 데이터를 분석하는 것이 좋다. 이를 위해서 조금이라도 시간을 절약할 수 있는 방법으로 분석 후 기법을 만들어간다면 조금 더 유의미한 매매기준을 찾을 수 있지 않을까 싶다.

 

 

 

 

 

728x90