init
This commit is contained in:
@@ -15,7 +15,7 @@ class DataDownloader (HTS):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# 주식 현재가 조회
|
# 주식 현재가 조회
|
||||||
def writeStockData(self, stock_code, given_day, type, outfp):
|
def writeStockData(self, stock_code, today):
|
||||||
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
|
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
|
||||||
bConnect = objCpCybos.IsConnect
|
bConnect = objCpCybos.IsConnect
|
||||||
if (bConnect == 0):
|
if (bConnect == 0):
|
||||||
@@ -25,20 +25,21 @@ class DataDownloader (HTS):
|
|||||||
# 차트 객체 구하기
|
# 차트 객체 구하기
|
||||||
objStockChart = win32com.client.Dispatch("CpSysDib.StockChart")
|
objStockChart = win32com.client.Dispatch("CpSysDib.StockChart")
|
||||||
|
|
||||||
|
outfp = open("./data/" + stock_code + "_" + today + ".csv", mode="w", encoding="utf-8")
|
||||||
objStockChart.SetInputValue(0, 'A' + stock_code) # 종목 코드
|
objStockChart.SetInputValue(0, 'A' + stock_code) # 종목 코드
|
||||||
objStockChart.SetInputValue(1, ord('2')) # 1: 기간으로 조회, 2: 개수로 조회
|
objStockChart.SetInputValue(1, ord('1')) # 1: 기간으로 조회, 2: 개수로 조회
|
||||||
objStockChart.SetInputValue(2, given_day) # 기간 조회 시, 시작일
|
objStockChart.SetInputValue(2, today) # 기간 조회 시, 시작일
|
||||||
objStockChart.SetInputValue(3, given_day) # 기간 조회 시, 종료일
|
objStockChart.SetInputValue(3, today) # 기간 조회 시, 종료일
|
||||||
objStockChart.SetInputValue(4, 400) # 조회 시 가져오는 Line 개수
|
objStockChart.SetInputValue(4, 400) # 조회 시 가져오는 Line 개수
|
||||||
objStockChart.SetInputValue(5, [0, 1, 2, 3, 4, 5, 8]) # 날짜,시간,시가,고가,저가,종가,거래량
|
objStockChart.SetInputValue(5, [0, 1, 2, 3, 4, 5, 8]) # 날짜,시간,시가,고가,저가,종가,거래량
|
||||||
objStockChart.SetInputValue(6, ord(type)) # '차트 주가 - 월(M), 주(W), 일(D), 시(H), 분(m), 초(S) 차트 요청
|
objStockChart.SetInputValue(6, ord('m')) # '차트 주가 - 월(M), 주(W), 일(D), 시(H), 분(m), 초(S) 차트 요청
|
||||||
objStockChart.SetInputValue(7, 1)
|
objStockChart.SetInputValue(7, 1)
|
||||||
objStockChart.SetInputValue(9, ord('1')) # 수정주가 사용
|
objStockChart.SetInputValue(9, ord('1')) # 수정주가 사용
|
||||||
objStockChart.BlockRequest()
|
objStockChart.BlockRequest()
|
||||||
|
|
||||||
size = objStockChart.GetHeaderValue(3)
|
size = objStockChart.GetHeaderValue(3)
|
||||||
|
|
||||||
if size > 0:
|
outfp.write("%s,%s,%s,%s,%s,%s,%s\n" % ("날짜", "시간", "시가", "고가", "저가", "종가", "거래량"))
|
||||||
for i in range(size - 1, -1, -1):
|
for i in range(size - 1, -1, -1):
|
||||||
day = objStockChart.GetDataValue(0, i)
|
day = objStockChart.GetDataValue(0, i)
|
||||||
time = objStockChart.GetDataValue(1, i)
|
time = objStockChart.GetDataValue(1, i)
|
||||||
@@ -48,8 +49,9 @@ class DataDownloader (HTS):
|
|||||||
close = objStockChart.GetDataValue(5, i)
|
close = objStockChart.GetDataValue(5, i)
|
||||||
vol = objStockChart.GetDataValue(6, i)
|
vol = objStockChart.GetDataValue(6, i)
|
||||||
outfp.write("%d,%s,%d,%d,%d,%d,%d\n" % (day, str(time).zfill(4), start, high, low, close, vol))
|
outfp.write("%d,%s,%d,%d,%d,%d,%d\n" % (day, str(time).zfill(4), start, high, low, close, vol))
|
||||||
|
outfp.close()
|
||||||
|
|
||||||
return size
|
return objStockChart.GetHeaderValue(3)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
@@ -61,26 +63,18 @@ if __name__ == "__main__":
|
|||||||
stock_codes = ["252670", "122630"]
|
stock_codes = ["252670", "122630"]
|
||||||
dataDownloader = DataDownloader()
|
dataDownloader = DataDownloader()
|
||||||
|
|
||||||
|
zero_count = 0
|
||||||
for stock_code in stock_codes:
|
for stock_code in stock_codes:
|
||||||
outFp = open(RESOURCE_DIR + "/" + stock_code + "_"+today.strftime('%Y%m%d')+".csv", mode="w", encoding="utf-8")
|
|
||||||
outFp.write("%s,%s,%s,%s,%s,%s,%s\n" % ("날짜", "시간", "시가", "고가", "저가", "종가", "거래량"))
|
|
||||||
|
|
||||||
zero_count_m, zero_count_S = 0, 0
|
|
||||||
for i in range(1, 100000):
|
for i in range(1, 100000):
|
||||||
given_day = today - timedelta(i)
|
given_day = today - timedelta(i)
|
||||||
|
|
||||||
# '차트 주가 - 월(M), 주(W), 일(D), 시(H), 분(m), 초(S) 차트 요청
|
count = dataDownloader.writeStockData(stock_code, given_day.strftime('%Y%m%d'))
|
||||||
if zero_count_m < 10:
|
if count == 0:
|
||||||
count_m = dataDownloader.writeStockData(stock_code, given_day.strftime('%Y%m%d'), 'm', outFp_m)
|
zero_count += 1
|
||||||
if count_m == 0:
|
|
||||||
zero_count_m += 1
|
|
||||||
else:
|
else:
|
||||||
zero_count_m = 0
|
zero_count = 0
|
||||||
print(given_day, "m", count_m)
|
print(given_day, count)
|
||||||
|
|
||||||
if zero_count_m > 10:
|
if zero_count > 10:
|
||||||
break
|
break
|
||||||
|
|
||||||
outFp.close()
|
|
||||||
|
|
||||||
print ("done...")
|
print ("done...")
|
||||||
|
|||||||
Reference in New Issue
Block a user