This commit is contained in:
dsyoon
2023-02-01 22:37:30 +09:00
parent 346e1655f3
commit abbd852c6c
4 changed files with 80 additions and 96 deletions

View File

@@ -23,8 +23,8 @@ class HTS_Stocks (HTS):
analyzed_day = None
MAX_BUY_PRICE = None
conn = None
cursor = None
conn_stock = None
cursor_stock = None
def __init__(self, RESOURCE_PATH):
super().__init__(RESOURCE_PATH)
@@ -38,23 +38,20 @@ class HTS_Stocks (HTS):
self.analyzed_day = 120
self.MAX_BUY_PRICE = 50000
return
def connect2DB(self, dbfile_name):
try:
self.conn = sqlite3.connect(os.path.join(self.RESOURCE_PATH, dbfile_name))
self.cursor = self.conn.cursor()
except:
return False
return True
def connect2StockDB(self):
def disconnect(self):
try:
self.cursor.close()
self.conn.close()
except:
return False
return True
self.conn_stock = sqlite3.connect(os.path.join(self.RESOURCE_PATH, "stock.db"))
self.cursor_stock = self.conn_stock.cursor()
return
def disconnectStockDB(self):
self.cursor_stock.close()
self.conn_stock.close()
return
def getSellingPrice(self, log_time, stock_code, final_price, without_loss=False):
# final_price와 diff를 받으면, 해당 가격으로 그냥 매도한다는 의미
@@ -86,31 +83,34 @@ class HTS_Stocks (HTS):
return orderNum, None, None, None
def valid_company(self):
def getCompanyInfo(self):
self.cursor.execute('SELECT distinct code, name FROM stock order by code')
all_stocks = self.cursor.fetchall()
valid_company = set()
self.cursor.execute('select CODE, NAME, max(ymd) as ymd from fnguide where type != "E" group by 1 order by total_assets desc')
items = self.cursor.fetchall()
self.cursor_stock.execute('select CODE, NAME, max(ymd) as ymd from fnguide where type != "E" group by 1 order by total_assets desc')
items = self.cursor_stock.fetchall()
for item in items:
valid_company.add(item[0])
return valid_company
return all_stocks, valid_company
def buyRealTime(self, today, n = 200):
self.connect2DB("stock.db")
self.connect2DB("hts.db")
self.connect2StockDB()
print ("START...")
THIS_TIME = datetime.now()
valid_company = self.valid_company()
self.cursor.execute('SELECT distinct code, name FROM stock order by code')
items = self.cursor.fetchall()
all_stocks, valid_company = self.getCompanyInfo()
while datetime.strptime(today + " 070000", '%Y%m%d %H%M%S') < THIS_TIME < datetime.strptime(today + " 153100", '%Y%m%d %H%M%S'):
# 1515 까지만 매수를 시도한다.
if datetime.strptime(today + " 090000", '%Y%m%d %H%M%S') < THIS_TIME < datetime.strptime(today + " 151500", '%Y%m%d %H%M%S'):
for idx, item in enumerate(items):
for idx, item in enumerate(all_stocks):
if THIS_TIME < datetime.strptime(today + " 090000", '%Y%m%d %H%M%S') or datetime.strptime(today + " 151500", '%Y%m%d %H%M%S') < THIS_TIME:
break
@@ -122,7 +122,7 @@ class HTS_Stocks (HTS):
continue
print(idx, stock_code, stock_name, ", CODE: ", stock_code, ", NAME: ", stock_name)
stock = self.stockStatus.fetchLastData(self.cursor, stock_code, n)
stock = self.stockStatus.fetchLastData(self.cursor_stock, stock_code, n)
try:
self.getRealTime_DailyCheck(today, stock_code, stock)
data = self.stockStatus.analyze(stock, self.analyzed_day)
@@ -205,6 +205,7 @@ class HTS_Stocks (HTS):
time.sleep(10)
THIS_TIME = datetime.now()
self.disconnectStockDB()
self.disconnect()
return