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 f40183a..7b7f52e 100644 Binary files a/resources/hts.db and b/resources/hts.db differ 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)