This commit is contained in:
dsyoon
2023-01-29 02:16:02 +09:00
parent 443a6eeafd
commit b1d8beaf34
5 changed files with 45 additions and 17 deletions

View File

@@ -8,8 +8,8 @@ from hts.HTS import HTS
from stock.util.Stock2Vector import Stock2Vector
from stock.util.LabelChecker import LabelChecker
from stock.util.StockPredictor import StockPredictor
from stock.analysis.DailyStatus import DailyStatus
from hts.BuySellChecker import BuySellChecker
from stock.analysis.StockStatus import StockStatus
class Simulation (HTS):
stock2Vector = None
@@ -163,6 +163,28 @@ class Simulation (HTS):
return
def makeTickData(self, data, mins=30):
result = {"check": set(),
"time": [],
"open": [],
"close": [],
"high": [],
"low": [],
"vol": [],
"label": []}
for i in range(mins, len(data['time'])+1):
result["check"].add(data['time'][i])
result["time"].append(data['time'][i])
result["open"].append(data['open'][i-mins])
result["close"].append(data['close'][i-1])
result["high"].append(max(data['high'][i - 30: i]))
result["low"].append(min(data['low'][i - 30: i]))
result["vol"].append(sum(data[i - 30: i]))
return result
def simulate(self, stock_codes:dict=None):
if stock_codes is not None:
@@ -170,25 +192,30 @@ class Simulation (HTS):
for given_day in stock_codes[stock_code]:
LAST_DATA = self.stock2Vector.getLastData(stock_code, given_day)
result = self.stock2Vector.getRealTime(stock_code, given_day, LAST_DATA)
result_30 = self.makeTickData(result, min=30)
# 이동평균, RSI, MACD, 일목균형, 볼린저밴드 상/하단을 계산한다.
data = self.buySellChecker.analyze(result)
data1 = self.buySellChecker.analyze(result)
# 사야 할 시점과 팔아야 할 시점을 체크한다.
#bsLine, data = self.buySellChecker.checkTransaction(data, stock_code, isRealTime=False)
analyzed_day = 120
bsLine, data = self.buySellChecker.checkTransactionWithEnvelope(data, stock_code, analyzed_day, isRealTime=False)
bsLine, data = self.buySellChecker.checkTransaction(data, stock_code, isRealTime=False)
# 그래프를 그린다.
self.draw(stock_code, given_day, data, bsLine)
else:
dailyStatus = DailyStatus(self.RESOURCE_PATH)
dailyStatus.checkEnvelope()
stockStatus = StockStatus(self.RESOURCE_PATH)
stockStatus.checkEnvelope()
return
if __name__ == "__main__":
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in range(3, len(a)+1):
print (a[i-3: i])
print (a[i - 3])
print (a[i - 1])
PROJECT_HOME = os.getcwd()
RESOURCE_PATH = os.path.join(PROJECT_HOME, "resources")
@@ -197,11 +224,14 @@ if __name__ == "__main__":
# to check bying
stock_codes = {
"252670": [
'20220901', '20220902', '20220905', '20220906', '20220907',
'20220908','20220913','20220914','20220915','20220916'
'20220901', '20220902', '20220905', '20220906', '20220907', '20220908','20220913','20220914','20220915','20220916'
],
"122630": [
'20220901', '20220902', '20220905', '20220906', '20220907', '20220908', '20220913', '20220914', '20220915',
'20220916'
]
}
#simulation.simulate(stock_codes)
simulation.simulate()
simulation.simulate(stock_codes)
print ("done...")