This commit is contained in:
dsyoon
2021-10-03 18:43:22 +09:00
parent 1b82e2d464
commit 7e209a680b
39 changed files with 9225 additions and 57 deletions

View File

@@ -1,10 +1,10 @@
#import win32com.client
import win32com.client
import time
import os
from datetime import datetime, timedelta
import pandas as pd
from enum import Enum
import plotly.graph_objects as go
#import plotly.graph_objects as go
from stockpredictor.analysis.Common import Common
# enum 주문 상태 세팅용
@@ -351,7 +351,7 @@ class HTS:
return orderList
# 주식 현재가 조회
def printStockData(self, stock_code, day):
def writeStockData(self, stock_codes, given_day):
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
bConnect = objCpCybos.IsConnect
if (bConnect == 0):
@@ -361,29 +361,32 @@ class HTS:
# 차트 객체 구하기
objStockChart = win32com.client.Dispatch("CpSysDib.StockChart")
objStockChart.SetInputValue(0, 'A' + stock_code) # 종목 코드
objStockChart.SetInputValue(1, ord('1')) # 1: 기간으로 조회, 2: 개수로 조회
objStockChart.SetInputValue(2, day) # 기간 조회 시, 시작일
objStockChart.SetInputValue(3, day) # 기간 조회 시, 종료일
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) 차트 요청
objStockChart.SetInputValue(7, 1)
objStockChart.SetInputValue(9, ord('1')) # 수정주가 사용
objStockChart.BlockRequest()
for stock_code in stock_codes:
outfp = open("./data/"+stock_code+"_"+given_day+".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(4, 400) # 조회 시 가져오는 Line 개수
objStockChart.SetInputValue(5, [0, 1, 2, 3, 4, 5, 8]) # 날짜,시간,시가,고가,저가,종가,거래량
objStockChart.SetInputValue(6, ord('m')) # '차트 주가 - 월(M), 주(W), 일(D), 시(H), 분(m), 초(S) 차트 요청
objStockChart.SetInputValue(7, 1)
objStockChart.SetInputValue(9, ord('1')) # 수정주가 사용
objStockChart.BlockRequest()
size = objStockChart.GetHeaderValue(3)
size = objStockChart.GetHeaderValue(3)
print("%s,%s,%s,%s,%s,%s,%s" % ("날짜", "시간", "시가", "고가", "저가", "종가", "거래량"))
for i in range(size - 1, -1, -1):
day = objStockChart.GetDataValue(0, i)
time = objStockChart.GetDataValue(1, i)
open = objStockChart.GetDataValue(2, i)
high = objStockChart.GetDataValue(3, i)
low = objStockChart.GetDataValue(4, i)
close = objStockChart.GetDataValue(5, i)
vol = objStockChart.GetDataValue(6, i)
print("%d,%s,%d,%d,%d,%d,%d" % (day, str(time).zfill(4), open, high, low, close, vol))
outfp.write("%s,%s,%s,%s,%s,%s,%s\n" % ("날짜", "시간", "시가", "고가", "저가", "종가", "거래량"))
for i in range(size - 1, -1, -1):
day = objStockChart.GetDataValue(0, i)
time = objStockChart.GetDataValue(1, i)
start = objStockChart.GetDataValue(2, i)
high = objStockChart.GetDataValue(3, i)
low = objStockChart.GetDataValue(4, i)
close = objStockChart.GetDataValue(5, 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.close()
return
@@ -833,7 +836,7 @@ class HTS:
"vol": []}
# 데이터를 가지고 온다.
self.getCSV(given_day+".csv", given_day, result)
self.getCSV("./data/"+stock_code+"_"+given_day+".csv", given_day, result)
# 분석을 통해서 볼린저밴드 상/하단을 계산한다.
data, upper, lower = self.analyze(result)
@@ -969,19 +972,18 @@ if __name__ == "__main__":
PROJECT_HOME = os.path.join(os.path.dirname(os.path.join(os.path.dirname(__file__))))
RESOURCE_DIR = PROJECT_HOME + "/resources/analysis/"+today.strftime("%Y%m%d")
stock_code = "252670"
stock_codes = ["252670", "122630"]
given_day = datetime.today().strftime('%Y%m%d')
hts = HTS()
#hts.all_stocks()
#hts.getChartData(stock_code)
#hts.currentStock(stock_code)
#hts.printStockData(stock_code, given_day)
given_days = ['20210909','20210910','20210913','20210914','20210915','20210916','20210917','20210923','20210924','20210927','20210928','20210929','20210930','20211001']
#hts.getChartData(stock_codes)
#hts.currentStock(stock_codes)
given_days = ['20210901','20210902','20210903','20210907','20210907','20210908','20210909','20210910','20210913','20210914','20210915','20210916','20210917','20210923','20210924','20210927','20210928','20210929','20210930','20211001']
for given_day in given_days:
hts.simulate(stock_code, given_day)
hts.writeStockData(stock_codes, given_day)
#hts.simulate(stock_codes, given_day)
#hts.buyRealTime(stock_code, given_day)
#hts.buyRealTime(stock_codes, given_day)
print ("done...")