This commit is contained in:
dosang.yoon
2022-06-26 23:58:57 +09:00
parent 5c1be31d03
commit c48bde70c8
6 changed files with 231 additions and 1472 deletions

View File

@@ -1,5 +1,7 @@
import win32com.client
import csv
import time
from datetime import datetime
from hts.OrderItem import OrderItem
class HTS:
@@ -371,7 +373,7 @@ class HTS:
return
# 주식 현재가 조회
def writeStockData(self, stock_code, given_day):
def writeStockData(self, stock_code, today):
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
bConnect = objCpCybos.IsConnect
if (bConnect == 0):
@@ -381,11 +383,11 @@ class HTS:
# 차트 객체 구하기
objStockChart = win32com.client.Dispatch("CpSysDib.StockChart")
outfp = open("./data/"+stock_code+"_"+given_day+".csv", mode="w", encoding="utf-8")
outfp = open("./data/"+stock_code+"_"+today+".csv", mode="w", encoding="utf-8")
objStockChart.SetInputValue(0, 'A' + stock_code) # 종목 코드
objStockChart.SetInputValue(1, ord('1')) # 1: 기간으로 조회, 2: 개수로 조회
objStockChart.SetInputValue(2, given_day) # 기간 조회 시, 시작일
objStockChart.SetInputValue(3, given_day) # 기간 조회 시, 종료일
objStockChart.SetInputValue(2, today) # 기간 조회 시, 시작일
objStockChart.SetInputValue(3, today) # 기간 조회 시, 종료일
objStockChart.SetInputValue(4, 400) # 조회 시 가져오는 Line 개수
objStockChart.SetInputValue(5, [0, 1, 2, 3, 4, 5, 8]) # 날짜,시간,시가,고가,저가,종가,거래량
objStockChart.SetInputValue(6, ord('m')) # '차트 주가 - 월(M), 주(W), 일(D), 시(H), 분(m), 초(S) 차트 요청
@@ -428,9 +430,47 @@ class HTS:
outFp.close()
return
def getCSV(self, fileName, given_day, result):
with open(fileName, 'r') as infp:
reader = csv.reader(infp)
next(reader)
for rows in reader:
days = rows[0] # data.날짜
time = rows[1] # data.시간
open_v = rows[2] # data.시가
high = rows[3] # data.고가
low = rows[4] # data.저가
close = rows[5] # data.종가
vol = rows[6] # data.거래량
start_time = datetime.strptime(given_day + " 090000", '%Y%m%d %H%M%S')
temp = datetime.strptime(str(days) + " " + str(time).zfill(4) + "00", '%Y%m%d %H%M%S')
if temp < start_time:
continue
result["time"].append(temp)
result["open"].append(int(open_v))
result["close"].append(int(close))
result["high"].append(int(high))
result["low"].append(int(low))
result["vol"].append(int(vol))
return
# 주식 현재가 조회
def getRealTime(self, stock_code, given_day, result):
int_given_day = int(given_day)
def getRealTime(self, stock_code, lastday, today):
result = {"check": set(),
"time": [],
"open": [],
"close": [],
"high": [],
"low": [],
"vol": []}
self.getCSV("./data/" + stock_code + "_" + lastday + ".csv", today, result)
int_given_day = int(today)
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
bConnect = objCpCybos.IsConnect
if (bConnect == 0):
@@ -442,8 +482,8 @@ class HTS:
objStockChart.SetInputValue(0, 'A'+stock_code) # 종목 코드
objStockChart.SetInputValue(1, ord('1')) # 1: 기간으로 조회, 2: 개수로 조회
objStockChart.SetInputValue(2, given_day) # 기간 조회 시, 시작일
objStockChart.SetInputValue(3, given_day) # 기간 조회 시, 종료일
objStockChart.SetInputValue(2, today) # 기간 조회 시, 시작일
objStockChart.SetInputValue(3, today) # 기간 조회 시, 종료일
objStockChart.SetInputValue(4, 400) # 조회 시 가져오는 Line 개수
objStockChart.SetInputValue(5, [0, 1, 2, 3, 4, 5, 8]) # 날짜,시간,시가,고가,저가,종가,거래량
objStockChart.SetInputValue(6, ord('m')) # '차트 주가 - 월(M), 주(W), 일(D), 시(H), 분(m), 초(S) 차트 요청
@@ -454,7 +494,7 @@ class HTS:
size = objStockChart.GetHeaderValue(3)
#print("날짜", "시간", "시가", "고가", "저가", "종가", "거래량")
start_time = datetime.strptime(given_day + " 090000", '%Y%m%d %H%M%S')
start_time = datetime.strptime(today + " 090000", '%Y%m%d %H%M%S')
for i in range(size-1, -1, -1):
int_day = objStockChart.GetDataValue(0, i)
int_time = objStockChart.GetDataValue(1, i)