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

@@ -3,7 +3,6 @@ import os
import sqlite3
from datetime import datetime
from stock.analysis.DailyStatus import DailyStatus
from hts.HTS import HTS
from hts.OrderType import OrderType

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...")

View File

@@ -7,7 +7,7 @@ from stock.crawler.FnGuideCrawler import FnGuideCrawler
from stock.crawler.MetaCrawler import MetaCrawler
from stock.crawler.StockCrawler import StockCrawler
from stock.analysis.AnalyzerSqlite import AnalyzerSqlite
from stock.analysis.DailyStatus import DailyStatus
from stock.analysis.StockStatus import DailyStatus
today = datetime.now().strftime("%Y-%m-%d")

View File

@@ -15,7 +15,7 @@ from hts.HTS import HTS
from hts.BuySellChecker import BuySellChecker
from stock.analysis.AnalyzerSqlite import AnalyzerSqlite
class DailyStatus (HTS):
class StockStatus (HTS):
tableName = None
dbFileName = None
RESOURCE_PATH = None
@@ -637,5 +637,5 @@ if __name__ == "__main__":
PROJECT_HOME = os.path.join(os.path.dirname(os.path.join(os.path.dirname(os.path.join(os.path.dirname(__file__))))))
RESOURCE_PATH = os.path.join(PROJECT_HOME, "resources")
dailyStatus = DailyStatus(RESOURCE_PATH)
dailyStatus = StockStatus(RESOURCE_PATH)
dailyStatus.checkEnvelope()

View File

@@ -1,10 +1,9 @@
import os
import csv
import copy
import sqlite3
import numpy as np
import pandas as pd
from datetime import datetime, timedelta
from datetime import datetime
from hts.BuySellChecker import BuySellChecker
from hts.HTS import HTS