This commit is contained in:
dsyoon
2022-08-03 22:40:23 +09:00
parent 41e23641a8
commit ce26ef5623
5 changed files with 139 additions and 32 deletions

View File

@@ -6,6 +6,7 @@ import os
from hts.HTS import HTS
from stock.util.Stock2Vector import Stock2Vector
from stock.util.StockPredictor import StockPredictor
from hts.BuySellChecker import BuySellChecker
class Simulation (HTS):
@@ -16,6 +17,7 @@ class Simulation (HTS):
super().__init__(RESOURCE_PATH)
self.stock2Vector = Stock2Vector(RESOURCE_PATH)
self.stockPredictor = StockPredictor()
self.buySellChecker = BuySellChecker()
self.RESOURCE_PATH = RESOURCE_PATH
#self.connect()
@@ -126,23 +128,23 @@ class Simulation (HTS):
return
def analyzeAutoMode(self, data):
return data, None
def simulate(self, stock_code, today, type="rule"):
LAST_DATA = self.stock2Vector.getLastData(stock_code, today)
def simulate(self, stock_code, today, method="rule"):
result = self.stock2Vector.getRealTime(stock_code, today, LAST_DATA)
if method == "ml":
LAST_DATA = self.stock2Vector.getLastData(stock_code, today, n=10)
result = self.stock2Vector.getRealTime(stock_code, today, LAST_DATA)
df, minmax_df = self.stock2Vector.preprocessData(result)
bsLine, data = self.stockPredictor.predict(df, minmax_df, isRealTime=False)
else:
LAST_DATA = self.stock2Vector.getLastData(stock_code, today)
result = self.stock2Vector.getRealTime(stock_code, today, LAST_DATA)
if type == "rule":
# 이동평균, RSI, MACD, 일목균형, 볼린저밴드 상/하단을 계산한다.
data = self.buySellChecker.analyze(result)
# 사야 할 시점과 팔아야 할 시점을 체크한다.
bsLine, data = self.buySellChecker.checkTransaction(data, stock_code, isRealTime=False)
elif type == "auto":
data, bsLine = self.analyzeAutoMode(result)
else:
data, bsLine = None, None
if data is not None:
# 그래프를 그린다.
@@ -159,13 +161,13 @@ if __name__ == "__main__":
stock_codes = {
# 252670
# 122630
"122630": ['20220729'],
"122630": ['20220803'],
}
for stock_code in stock_codes:
simulation = Simulation(RESOURCE_PATH)
for given_day in stock_codes[stock_code]:
simulation.simulate(stock_code, given_day)
simulation.simulate(stock_code, given_day, method='ml')
print ("done...")