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 import sqlite3
from datetime import datetime from datetime import datetime
from stock.analysis.DailyStatus import DailyStatus
from hts.HTS import HTS from hts.HTS import HTS
from hts.OrderType import OrderType 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.Stock2Vector import Stock2Vector
from stock.util.LabelChecker import LabelChecker from stock.util.LabelChecker import LabelChecker
from stock.util.StockPredictor import StockPredictor from stock.util.StockPredictor import StockPredictor
from stock.analysis.DailyStatus import DailyStatus
from hts.BuySellChecker import BuySellChecker from hts.BuySellChecker import BuySellChecker
from stock.analysis.StockStatus import StockStatus
class Simulation (HTS): class Simulation (HTS):
stock2Vector = None stock2Vector = None
@@ -163,6 +163,28 @@ class Simulation (HTS):
return 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): def simulate(self, stock_codes:dict=None):
if stock_codes is not None: if stock_codes is not None:
@@ -170,25 +192,30 @@ class Simulation (HTS):
for given_day in stock_codes[stock_code]: for given_day in stock_codes[stock_code]:
LAST_DATA = self.stock2Vector.getLastData(stock_code, given_day) LAST_DATA = self.stock2Vector.getLastData(stock_code, given_day)
result = self.stock2Vector.getRealTime(stock_code, given_day, LAST_DATA) result = self.stock2Vector.getRealTime(stock_code, given_day, LAST_DATA)
result_30 = self.makeTickData(result, min=30)
# 이동평균, RSI, MACD, 일목균형, 볼린저밴드 상/하단을 계산한다. # 이동평균, RSI, MACD, 일목균형, 볼린저밴드 상/하단을 계산한다.
data = self.buySellChecker.analyze(result) data1 = self.buySellChecker.analyze(result)
# 사야 할 시점과 팔아야 할 시점을 체크한다. # 사야 할 시점과 팔아야 할 시점을 체크한다.
#bsLine, data = self.buySellChecker.checkTransaction(data, stock_code, isRealTime=False) 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)
# 그래프를 그린다. # 그래프를 그린다.
self.draw(stock_code, given_day, data, bsLine) self.draw(stock_code, given_day, data, bsLine)
else: else:
dailyStatus = DailyStatus(self.RESOURCE_PATH) stockStatus = StockStatus(self.RESOURCE_PATH)
dailyStatus.checkEnvelope() stockStatus.checkEnvelope()
return return
if __name__ == "__main__": 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() PROJECT_HOME = os.getcwd()
RESOURCE_PATH = os.path.join(PROJECT_HOME, "resources") RESOURCE_PATH = os.path.join(PROJECT_HOME, "resources")
@@ -197,11 +224,14 @@ if __name__ == "__main__":
# to check bying # to check bying
stock_codes = { stock_codes = {
"252670": [ "252670": [
'20220901', '20220902', '20220905', '20220906', '20220907', '20220901', '20220902', '20220905', '20220906', '20220907', '20220908','20220913','20220914','20220915','20220916'
'20220908','20220913','20220914','20220915','20220916' ],
"122630": [
'20220901', '20220902', '20220905', '20220906', '20220907', '20220908', '20220913', '20220914', '20220915',
'20220916'
] ]
} }
#simulation.simulate(stock_codes) #simulation.simulate(stock_codes)
simulation.simulate() simulation.simulate(stock_codes)
print ("done...") print ("done...")

View File

@@ -7,7 +7,7 @@ from stock.crawler.FnGuideCrawler import FnGuideCrawler
from stock.crawler.MetaCrawler import MetaCrawler from stock.crawler.MetaCrawler import MetaCrawler
from stock.crawler.StockCrawler import StockCrawler from stock.crawler.StockCrawler import StockCrawler
from stock.analysis.AnalyzerSqlite import AnalyzerSqlite 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") today = datetime.now().strftime("%Y-%m-%d")

View File

@@ -15,7 +15,7 @@ from hts.HTS import HTS
from hts.BuySellChecker import BuySellChecker from hts.BuySellChecker import BuySellChecker
from stock.analysis.AnalyzerSqlite import AnalyzerSqlite from stock.analysis.AnalyzerSqlite import AnalyzerSqlite
class DailyStatus (HTS): class StockStatus (HTS):
tableName = None tableName = None
dbFileName = None dbFileName = None
RESOURCE_PATH = 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__)))))) 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") RESOURCE_PATH = os.path.join(PROJECT_HOME, "resources")
dailyStatus = DailyStatus(RESOURCE_PATH) dailyStatus = StockStatus(RESOURCE_PATH)
dailyStatus.checkEnvelope() dailyStatus.checkEnvelope()

View File

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