From 0deb7ddc173dca4a04f32d8d9cbaaafb21ff0ffa Mon Sep 17 00:00:00 2001 From: dsyoon Date: Tue, 19 Dec 2023 23:57:15 +0900 Subject: [PATCH] init --- HTS_etf.py | 43 +++++++++++++++++++++---------------------- hts/BuySellChecker.py | 2 +- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/HTS_etf.py b/HTS_etf.py index 1bfb1b0..c267afb 100644 --- a/HTS_etf.py +++ b/HTS_etf.py @@ -23,8 +23,6 @@ from hts.BuySellChecker import BuySellChecker class HTS_etf(HTS): RESOURCE_PATH = None SELL_GAP = None - stock_code = None - stock_name = None buy_count = None orderChecker = None buySellChecker = None @@ -43,7 +41,6 @@ class HTS_etf(HTS): self.RESOURCE_PATH = RESOURCE_PATH - self.orderChecker = OrderChecker(self.RESOURCE_PATH, self.stock_code) self.bot = TelegramBot() self.stockStatus = StockStatus(RESOURCE_PATH) @@ -53,7 +50,7 @@ class HTS_etf(HTS): self.macd = MACD() self.ichimokuCloud = IchimokuCloud() - self.buySellChecker = BuySellChecker(self.RESOURCE_PATH, self.stock_code) + self.buySellChecker = BuySellChecker(self.RESOURCE_PATH) return @@ -84,14 +81,14 @@ class HTS_etf(HTS): check = True else: if jangoDic[code]['매도가능'] > 0: - #if jangoDic[code]['평가손익'] < -0.6 or 1.0 < jangoDic[code]['평가손익']: - if sell_count == 0: - self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가']) - else: - self.requestOrder(OrderType.sell, code[1:], sell_count, jangoDic[code]['현재가']) - self.bot.sendMsg("Profit {:.2f}, {} ({})".format(jangoDic[code]['평가손익'], stock_code, stock_name)) - check = True - else: + if jangoDic[code]['평가손익'] < -0.6 or 2.0 < jangoDic[code]['평가손익']: + if sell_count == 0: + self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가']) + else: + self.requestOrder(OrderType.sell, code[1:], sell_count, jangoDic[code]['현재가']) + self.bot.sendMsg("Profit {:.2f}, {} ({})".format(jangoDic[code]['평가손익'], stock_code, stock_name)) + check = True + else: if jangoDic[code]['매도가능'] > 0: #if jangoDic[code]['평가손익'] < -0.6 or 1.0 < jangoDic[code]['평가손익']: if sell_count == 0: @@ -441,11 +438,13 @@ class HTS_etf(HTS): def buyRealTime(self, stock, data, data_signal, MAX_BUY_PRICE, BUY_LIST): + self.orderChecker = OrderChecker(self.RESOURCE_PATH, stock['stock_code']) + # 매도를 체크한다. - check = self.sellStocks(stock_code=self.stock_code) + check = self.sellStocks(stock_code=stock['stock_code'], stock_name=stock['stock_name']) # jangoDic[code]['장부가'], jangoDic[code]['평가금액'], jangoDic[code]['평가손익'], - buy_avg, amount, profit = self.getBallance(self.stock_code) + buy_avg, amount, profit = self.getBallance(stock['stock_code']) if check or buy_avg == 0: BUY_LIST['buy_avg'] = 0 BUY_LIST['buy_count'] = 0 @@ -454,33 +453,33 @@ class HTS_etf(HTS): time.sleep(0.1) # 사야 할 시점과 팔아야 할 시점을 체크한다. - bsLine1 = self.buySellChecker.checkTransaction1(self.stock_code, MAX_BUY_PRICE, data, data_signal, BUY_LIST, isRealTime=True) + bsLine1 = self.buySellChecker.checkTransaction1(stock['stock_code'], MAX_BUY_PRICE, data, data_signal, BUY_LIST, isRealTime=True) if 'sell_price' in bsLine1: sell_price = bsLine1['sell_price'][-1] sell_count = bsLine1['sell_count'][-1] sell_type = bsLine1['sell_type'][-1] if 0 < sell_price: - check = self.sellStocks(stock_code=self.stock_code, bs_sell_price=sell_price) + check = self.sellStocks(stock_code=stock['stock_code'], stock_name=stock['stock_name'], bs_sell_price=sell_price) if check: - self.orderChecker.sell(datetime.today().strftime('%Y%m%d'), self.stock_code) + self.orderChecker.sell(datetime.today().strftime('%Y%m%d'), stock['stock_code']) BUY_LIST['buy_avg'] = 0 BUY_LIST['buy_count'] = 0 BUY_LIST['buy_list'].clear() - self.bot.sendMsg("Profit {:.2f}, {} ({})".format(profit, self.stock_code, self.stock_name)) + self.bot.sendMsg("Profit {:.2f}, {} ({})".format(profit, stock['stock_code'], stock['stock_name'])) if 'buy_price' in bsLine1: buy_price = bsLine1['buy_price'][-1] buy_count = int(bsLine1['buy_count'][-1]) if buy_price > 0: # 매수를 요청 한다. - orderNum = self.requestOrder(OrderType.buy, self.stock_code, buy_count, buy_price) - self.orderChecker.buy(datetime.today().strftime('%Y%m%d'), "A" + self.stock_code, buy_count, buy_price, orderNum) - self.bot.post(self.stock_code, self.stock_name, "[BUY] ", buy_price, buy_count, data['rsi'][-1], -1) + orderNum = self.requestOrder(OrderType.buy, stock['stock_code'], buy_count, buy_price) + self.orderChecker.buy(datetime.today().strftime('%Y%m%d'), "A" + stock['stock_code'], buy_count, buy_price, orderNum) + self.bot.post(stock['stock_code'], stock['stock_name'], "[BUY] ", buy_price, buy_count, data['rsi'][-1], -1) # 미체결 기록을 가져와서 10분 이상 된 매수 주문을 취소 한다. ORDER_LIST = self.requestOrderList() - orderListToCancel = self.orderChecker.cancel(datetime.today().strftime('%Y%m%d'), "A" + self.stock_code, ORDER_LIST, mins=3) + orderListToCancel = self.orderChecker.cancel(datetime.today().strftime('%Y%m%d'), "A" + stock['stock_code'], ORDER_LIST, mins=3) if len(orderListToCancel) > 0: self.cancelOrderList(orderListToCancel) diff --git a/hts/BuySellChecker.py b/hts/BuySellChecker.py index c56724b..7903d65 100644 --- a/hts/BuySellChecker.py +++ b/hts/BuySellChecker.py @@ -10,7 +10,7 @@ class BuySellChecker(): PATTERNS = None RESOURCE_PATH = None - def __init__(self, RESOURCE_PATH, s): + def __init__(self, RESOURCE_PATH): self.RESOURCE_PATH = RESOURCE_PATH return