This commit is contained in:
dsyoon
2023-12-19 23:46:54 +09:00
parent b065e11349
commit 006f4ae5ea
3 changed files with 51 additions and 59 deletions

View File

@@ -38,14 +38,11 @@ class HTS_etf(HTS):
ichimokuCloud = None ichimokuCloud = None
def __init__(self, RESOURCE_PATH, stock_code, stock_name, SELL_GAP): def __init__(self, RESOURCE_PATH):
super().__init__(RESOURCE_PATH) super().__init__(RESOURCE_PATH)
self.RESOURCE_PATH = RESOURCE_PATH self.RESOURCE_PATH = RESOURCE_PATH
self.SELL_GAP = SELL_GAP
self.stock_code = stock_code
self.stock_name = stock_name
self.orderChecker = OrderChecker(self.RESOURCE_PATH, self.stock_code) self.orderChecker = OrderChecker(self.RESOURCE_PATH, self.stock_code)
self.bot = TelegramBot() self.bot = TelegramBot()
self.stockStatus = StockStatus(RESOURCE_PATH) self.stockStatus = StockStatus(RESOURCE_PATH)
@@ -78,8 +75,7 @@ class HTS_etf(HTS):
if code == "A" + stock_code: if code == "A" + stock_code:
if bs_sell_price is not None: if bs_sell_price is not None:
if jangoDic[code]['매도가능'] > 0: if jangoDic[code]['매도가능'] > 0:
if jangoDic[code]['평가손익'] < -0.6 or 1.0 < jangoDic[code]['평가손익'] or self.SELL_GAP < jangoDic[code]['평가금액']-jangoDic[code]['매입금액']: #if jangoDic[code]['평가손익'] < -0.6 or 1.0 < jangoDic[code]['평가손익']:
# 1.5% 손해 혹은 2% 이상 시 수익 매도
if sell_count == 0: if sell_count == 0:
self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], bs_sell_price) self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], bs_sell_price)
else: else:
@@ -88,8 +84,7 @@ class HTS_etf(HTS):
check = True check = True
else: else:
if jangoDic[code]['매도가능'] > 0: if jangoDic[code]['매도가능'] > 0:
if jangoDic[code]['평가손익'] < -0.6 or 1.0 < jangoDic[code]['평가손익'] or self.SELL_GAP < jangoDic[code]['평가금액']-jangoDic[code]['매입금액']: #if jangoDic[code]['평가손익'] < -0.6 or 1.0 < jangoDic[code]['평가손익']:
# 1.5% 손해 혹은 2% 이상 시 수익 매도
if sell_count == 0: if sell_count == 0:
self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가']) self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가'])
else: else:
@@ -98,8 +93,7 @@ class HTS_etf(HTS):
check = True check = True
else: else:
if jangoDic[code]['매도가능'] > 0: if jangoDic[code]['매도가능'] > 0:
if jangoDic[code]['평가손익'] < -0.6 or 1.0 < jangoDic[code]['평가손익'] or self.SELL_GAP < jangoDic[code]['평가금액']-jangoDic[code]['매입금액']: #if jangoDic[code]['평가손익'] < -0.6 or 1.0 < jangoDic[code]['평가손익']:
# 1.5% 손해 혹은 2% 이상 시 수익 매도
if sell_count == 0: if sell_count == 0:
self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가']) self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가'])
else: else:
@@ -391,10 +385,10 @@ class HTS_etf(HTS):
return result return result
def getDisparityLimit(self, ticker, RESOURCE_PATH): def getDisparityLimit(self, ticker, RESOURCE_PATH):
conn = sqlite3.connect(os.path.join(RESOURCE_PATH, 'coins.db')) conn = sqlite3.connect(os.path.join(RESOURCE_PATH, 'hts.db'))
cursor = conn.cursor() cursor = conn.cursor()
cursor.execute('SELECT disparity_avg5, disparity_avg20, disparity_avg60, disparity_avg120, disparity_avg240, disparity_avg480, disparity_avg1500 FROM minutely WHERE (CODE=? or CODE=?) order by ymd, hms', (ticker['stock_code'], ticker['stock_code'].replace('KRW-', ''),)) cursor.execute('SELECT disparity_avg5, disparity_avg20, disparity_avg60, disparity_avg120, disparity_avg240, disparity_avg480, disparity_avg1500 FROM hts WHERE CODE=? order by ymd, hms', (ticker['stock_code'],))
disparity = { disparity = {
'avg': {}, 'avg': {},

View File

@@ -26,8 +26,8 @@ if __name__ == "__main__":
os.mkdir(os.path.join(RESOURCE_PATH, "log")) os.mkdir(os.path.join(RESOURCE_PATH, "log"))
print("START...") print("START...")
while datetime.strptime(today + " 060000", '%Y%m%d %H%M%S') < datetime.now() < datetime.strptime(today + " 153100", '%Y%m%d %H%M%S'): #while datetime.strptime(today + " 060000", '%Y%m%d %H%M%S') < datetime.now() < datetime.strptime(today + " 153100", '%Y%m%d %H%M%S'):
if datetime.strptime(today + " 090000", '%Y%m%d %H%M%S') < datetime.now() < datetime.strptime(today + " 151500", '%Y%m%d %H%M%S'): #if datetime.strptime(today + " 090000", '%Y%m%d %H%M%S') < datetime.now() < datetime.strptime(today + " 151500", '%Y%m%d %H%M%S'):
THIS_TIME = datetime.now() THIS_TIME = datetime.now()
for stock in stocks: for stock in stocks:
with open("config.json", "r", encoding="utf-8") as f: with open("config.json", "r", encoding="utf-8") as f:

View File

@@ -574,7 +574,7 @@ class HTS:
def getDBData(self, stock_code, day, result): def getDBData(self, stock_code, day, result):
self.cursor.execute('SELECT ymd, hms, open, high, low, close, volume, label FROM hts WHERE CODE=? and ymd=? order by ymd, hms', (stock_code, day, )) self.cursor.execute('SELECT ymd, hms, open, high, low, close, volume FROM hts WHERE CODE=? and ymd=? order by ymd, hms', (stock_code, day, ))
db_result = self.cursor.fetchall() db_result = self.cursor.fetchall()
for rows in db_result: for rows in db_result:
ymd = rows[0] # hts.날짜 ymd = rows[0] # hts.날짜
@@ -584,7 +584,6 @@ class HTS:
low = rows[4] # hts.저가 low = rows[4] # hts.저가
close = rows[5] # hts.종가 close = rows[5] # hts.종가
volume = rows[6] # hts.거래량 volume = rows[6] # hts.거래량
label = 0 if rows[7] is None else rows[7] # hts.매매구분
temp = datetime.strptime(str(ymd) + " " + str(hms).zfill(4) + "00", '%Y%m%d %H%M%S') temp = datetime.strptime(str(ymd) + " " + str(hms).zfill(4) + "00", '%Y%m%d %H%M%S')
@@ -594,7 +593,6 @@ class HTS:
result["high"].append(int(high)) result["high"].append(int(high))
result["low"].append(int(low)) result["low"].append(int(low))
result["volume"].append(int(volume)) result["volume"].append(int(volume))
result["label"].append(int(label))
return return