From f74234599edc449c7fe8f579af88c24d881673d0 Mon Sep 17 00:00:00 2001 From: dosangyoon Date: Wed, 17 Aug 2022 16:01:34 +0900 Subject: [PATCH] init --- LabelMaker.py | 91 ++++++++++++++++++ resources/hts.db | Bin 45010944 -> 45010944 bytes stock/util/{LabelMaker.py => LabelChecker.py} | 76 +++------------ 3 files changed, 106 insertions(+), 61 deletions(-) create mode 100644 LabelMaker.py rename stock/util/{LabelMaker.py => LabelChecker.py} (81%) diff --git a/LabelMaker.py b/LabelMaker.py new file mode 100644 index 0000000..e946096 --- /dev/null +++ b/LabelMaker.py @@ -0,0 +1,91 @@ +import os +import logging +from stock.util.LabelChecker import LabelChecker + +class LabelMaker: + db_filename = None + labelChecker = None + + def __init__(self, RESOURCE_PATH): + self.labelChecker = LabelChecker(RESOURCE_PATH) + self.db_filename = os.path.join(RESOURCE_PATH, "hts.db") + return + + def clearLabel(self, stock_code, ymd): + self.labelChecker.clearLabel(self.db_filename, stock_code, ymd) + return + + def showLabels(self, stock_code, ymd): + self.labelChecker.showLabels(stock_code, ymd) + return + + def update(self, stock_code, ymd, hms, label): + self.labelChecker.makeLabel(self.db_filename, stock_code, ymd, hms, label) + return + + def write(self, stock_code, ymd, outFp): + self.labelChecker.showLabels(stock_code, ymd, outFp) + return + + def check(self, stock_codes): + # 종목에 대해서 주어진 일자에 대해서 통계치 추출하기 + for stock_code in stock_codes: + ymds = self.labelChecker.getDate(stock_code) + for ymd in ymds: + logging.info(stock_code, ymd) + bsLine, data = self.labelChecker.makeCandidate(stock_code, ymd) + self.labelChecker.updateLabel(self.db_filename, stock_code, bsLine, data, ymd) + return + +if __name__ == "__main__": + PROJECT_HOME = os.path.join(os.path.dirname(__file__)) + RESOURCE_PATH = os.path.join(PROJECT_HOME, "resources") + + labelMaker = LabelMaker(RESOURCE_PATH) + + stock_codes = { + "252670": ['20220701', '20220704', '20220705', '20220706', '20220707', + '20220708', '20220711', '20220712', '20220713', '20220714', + '20220715', '20220718', '20220719', '20220720', '20220721', + '20220722', '20220725', '20220726', '20220727', '20220728', + '20220729', '20220801', '20220802', '20220803', '20220804', + '20220805', '20220808', '20220809', '20220810', '20220811', + '20220812', '20220816', '20220817'], + # "122630": ['20220801', '20220802', '20220803', '20220804', '20220805', '20220808', '20220809', '20220810', '20220811', '20220812'], + } + + + MODE = "UPDATE" + if MODE == "UPDATE": + # 매일 입력하면서 정답 셋 만들기 + stock_code = "252670" + ymd = '20220817' + + labelMaker.clearLabel(stock_code, ymd) + labelMaker.update(stock_code, ymd, "0915", 2) + labelMaker.update(stock_code, ymd, "0916", 2) + labelMaker.update(stock_code, ymd, "0917", 2) + labelMaker.update(stock_code, ymd, "0918", 2) + labelMaker.update(stock_code, ymd, "0919", 2) + labelMaker.update(stock_code, ymd, "0920", 2) + labelMaker.update(stock_code, ymd, "0921", 2) + + labelMaker.update(stock_code, ymd, "1124", 1) + labelMaker.update(stock_code, ymd, "1125", 1) + labelMaker.update(stock_code, ymd, "1126", 1) + labelMaker.update(stock_code, ymd, "1127", 1) + labelMaker.update(stock_code, ymd, "1330", 1) + labelMaker.update(stock_code, ymd, "1331", 1) + labelMaker.update(stock_code, ymd, "1332", 1) + labelMaker.showLabels(stock_code, ymd) + + elif MODE == "WRITE": + + for stock_code in stock_codes: + outFp = open("check_"+stock_code+".txt", "w") + for ymd in stock_codes[stock_code]: + labelMaker.write(stock_code, ymd, outFp) + outFp.close() + else: + + labelMaker.check(stock_codes) \ No newline at end of file diff --git a/resources/hts.db b/resources/hts.db index f40183a0238919bf5be1dfe248a8a333539941e9..7b7f52e54b7758726167c184c7a7bdeac2084f1e 100644 GIT binary patch delta 15350 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 diff --git a/stock/util/LabelMaker.py b/stock/util/LabelChecker.py similarity index 81% rename from stock/util/LabelMaker.py rename to stock/util/LabelChecker.py index 1a395b1..988086d 100644 --- a/stock/util/LabelMaker.py +++ b/stock/util/LabelChecker.py @@ -1,6 +1,5 @@ import os import csv -import logging from math import nan import pandas as pd import plotly.graph_objects as go @@ -10,7 +9,7 @@ from hts.HTS import HTS from hts.BuySellChecker import BuySellChecker from stock.util.Stock2Vector import Stock2Vector -class LabelMaker (HTS): +class LabelChecker (HTS): buySellChecker = None stock2Vector = None @@ -310,64 +309,19 @@ if __name__ == "__main__": RESOURCE_PATH = os.path.join(PROJECT_HOME, "resources") db_filename = os.path.join(RESOURCE_PATH, "hts.db") - labelMaker = LabelMaker(RESOURCE_PATH) + labelChecker = LabelChecker(RESOURCE_PATH) - UPDATE_MODE = False - if UPDATE_MODE: - # 매일 입력하면서 정답 셋 만들기 - stock_code = "252670" - ymd = '20220730' + stock_codes = { + "252670": ['20220701', '20220704', '20220705', '20220706', '20220707', + '20220708', '20220711', '20220712', '20220713', '20220714', + '20220715', '20220718', '20220719', '20220720', '20220721', + '20220722', '20220725', '20220726', '20220727', '20220728', + '20220729', '20220801', '20220802', '20220803', '20220804', + '20220805', '20220808', '20220809', '20220810', '20220811', + '20220812', '20220816'], + #"122630": ['20220801', '20220802', '20220803', '20220804', '20220805', '20220808', '20220809', '20220810', '20220811', '20220812'], + } - labelMaker.clearLabel(db_filename, stock_code, ymd) - labelMaker.makeLabel(db_filename, stock_code, ymd, "0933", 2) - labelMaker.makeLabel(db_filename, stock_code, ymd, "0934", 2) - labelMaker.makeLabel(db_filename, stock_code, ymd, "0935", 2) - labelMaker.makeLabel(db_filename, stock_code, ymd, "0936", 2) - - labelMaker.makeLabel(db_filename, stock_code, ymd, "1004", 1) - labelMaker.makeLabel(db_filename, stock_code, ymd, "1005", 1) - labelMaker.makeLabel(db_filename, stock_code, ymd, "1006", 1) - labelMaker.makeLabel(db_filename, stock_code, ymd, "1007", 1) - - labelMaker.makeLabel(db_filename, stock_code, ymd, "1412", 1) - labelMaker.makeLabel(db_filename, stock_code, ymd, "1413", 1) - labelMaker.makeLabel(db_filename, stock_code, ymd, "1414", 1) - labelMaker.makeLabel(db_filename, stock_code, ymd, "1415", 1) - labelMaker.makeLabel(db_filename, stock_code, ymd, "1416", 1) - labelMaker.makeLabel(db_filename, stock_code, ymd, "1417", 1) - - labelMaker.showLabels(stock_code, ymd) - - else: - stock_codes = { - "252670": ['20220701', '20220704', '20220705', '20220706', '20220707', - '20220708', '20220711', '20220712', '20220713', '20220714', - '20220715', '20220718', '20220719', '20220720', '20220721', - '20220722', '20220725', '20220726', '20220727', '20220728', - '20220729', '20220801', '20220802', '20220803', '20220804', - '20220805', '20220808', '20220809', '20220810', '20220811', - '20220812', '20220816'], - #"122630": ['20220801', '20220802', '20220803', '20220804', '20220805', '20220808', '20220809', '20220810', '20220811', '20220812'], - } - - view = True - outFp = None - for stock_code in stock_codes: - if view: - if outFp is None: - outFp = open("check_"+stock_code+".txt", "w") - for ymd in stock_codes[stock_code]: - if view: - labelMaker.showLabels(stock_code, ymd, outFp) - else: - # 종목에 대해서 주어진 일자에 대해서 통계치 추출하기 - for stock_code in stock_codes: - ymds = labelMaker.getDate(stock_code) - for ymd in ymds: - logging.info(stock_code, ymd) - bsLine, data = labelMaker.makeCandidate(stock_code, ymd) - labelMaker.updateLabel(db_filename, stock_code, bsLine, data, ymd) - if view: - if outFp is not None: - outFp.close() - outFp = None \ No newline at end of file + for stock_code in stock_codes: + for ymd in stock_codes[stock_code]: + labelChecker.showLabels(stock_code, ymd)