This commit is contained in:
dsyoon
2023-02-01 11:02:17 +09:00
parent 7f3cadd332
commit 6013cc7155
2 changed files with 38 additions and 104 deletions

View File

@@ -23,19 +23,39 @@ class HTS_Stocks (HTS):
analyzed_day = None
MAX_BUY_PRICE = None
conn = None
cursor = None
def __init__(self, RESOURCE_PATH):
super().__init__(RESOURCE_PATH)
self.slackBot = SlackBot()
self.RESOURCE_PATH = RESOURCE_PATH
self.stockStatus = StockStatus(RESOURCE_PATH)
self.buySellChecker = BuySellChecker()
self.orderChecker = OrderChecker(self.RESOURCE_PATH, "STOCK")
self.orderChecker = OrderChecker(os.path.join(self.RESOURCE_PATH, ))
self.analyzed_day = 120
self.MAX_BUY_PRICE = 100000
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 disconnect(self):
try:
self.cursor.close()
self.conn.close()
except:
return False
return True
def getSellingPrice(self, log_time, stock_code, final_price, without_loss=False):
# final_price와 diff를 받으면, 해당 가격으로 그냥 매도한다는 의미
# final_price와 diff가 None이면 장부가와 final 중 max로 팔겠다는 의미
@@ -68,30 +88,22 @@ class HTS_Stocks (HTS):
def valid_company(self):
valid_company = set()
conn = sqlite3.connect(os.path.join(self.RESOURCE_PATH, "stock.db"))
cursor = conn.cursor()
cursor.execute('select CODE, NAME, max(ymd) as ymd from fnguide where type != "E" group by 1 order by total_assets desc')
items = cursor.fetchall()
cursor.close()
conn.close()
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()
for item in items:
valid_company.add(item[0])
return valid_company
def buyRealTime(self, today, n = 200):
self.connect2DB("stock.db")
print ("START...")
THIS_TIME = datetime.now()
valid_company = self.valid_company()
stockTableName = 'stock'
conn = sqlite3.connect(os.path.join(self.RESOURCE_PATH, "stock.db"))
cursor = conn.cursor()
cursor.execute('SELECT distinct code, name FROM ' + stockTableName + ' order by code')
items = cursor.fetchall()
cursor.close()
conn.close()
self.cursor.execute('SELECT distinct code, name FROM stock order by code')
items = self.cursor.fetchall()
while datetime.strptime(today + " 070000", '%Y%m%d %H%M%S') < THIS_TIME < datetime.strptime(today + " 153100", '%Y%m%d %H%M%S'):
@@ -110,7 +122,7 @@ class HTS_Stocks (HTS):
continue
print(idx, stock_code, stock_name, ", CODE: ", stock_code, ", NAME: ", stock_name)
stock = self.stockStatus.getLastData(stock_code, n)
stock = self.stockStatus.fetchLastData(self.cursor, stock_code, n)
try:
self.getRealTime_DailyCheck(today, stock_code, stock)
data = self.stockStatus.analyze(stock, self.analyzed_day)
@@ -193,6 +205,7 @@ class HTS_Stocks (HTS):
time.sleep(10)
THIS_TIME = datetime.now()
self.disconnect()
return
def updteTodayStock(self, db_filename, stock_code, today_str):