This commit is contained in:
dsyoon
2023-12-19 23:57:15 +09:00
parent 66958d00e8
commit 0deb7ddc17
2 changed files with 22 additions and 23 deletions

View File

@@ -23,8 +23,6 @@ from hts.BuySellChecker import BuySellChecker
class HTS_etf(HTS): class HTS_etf(HTS):
RESOURCE_PATH = None RESOURCE_PATH = None
SELL_GAP = None SELL_GAP = None
stock_code = None
stock_name = None
buy_count = None buy_count = None
orderChecker = None orderChecker = None
buySellChecker = None buySellChecker = None
@@ -43,7 +41,6 @@ class HTS_etf(HTS):
self.RESOURCE_PATH = RESOURCE_PATH self.RESOURCE_PATH = RESOURCE_PATH
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)
@@ -53,7 +50,7 @@ class HTS_etf(HTS):
self.macd = MACD() self.macd = MACD()
self.ichimokuCloud = IchimokuCloud() self.ichimokuCloud = IchimokuCloud()
self.buySellChecker = BuySellChecker(self.RESOURCE_PATH, self.stock_code) self.buySellChecker = BuySellChecker(self.RESOURCE_PATH)
return return
@@ -84,14 +81,14 @@ 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]['평가손익']: if jangoDic[code]['평가손익'] < -0.6 or 2.0 < jangoDic[code]['평가손익']:
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:
self.requestOrder(OrderType.sell, code[1:], sell_count, jangoDic[code]['현재가']) self.requestOrder(OrderType.sell, code[1:], sell_count, jangoDic[code]['현재가'])
self.bot.sendMsg("Profit {:.2f}, {} ({})".format(jangoDic[code]['평가손익'], stock_code, stock_name)) self.bot.sendMsg("Profit {:.2f}, {} ({})".format(jangoDic[code]['평가손익'], stock_code, stock_name))
check = True check = True
else: else:
if jangoDic[code]['매도가능'] > 0: if jangoDic[code]['매도가능'] > 0:
#if jangoDic[code]['평가손익'] < -0.6 or 1.0 < jangoDic[code]['평가손익']: #if jangoDic[code]['평가손익'] < -0.6 or 1.0 < jangoDic[code]['평가손익']:
if sell_count == 0: if sell_count == 0:
@@ -441,11 +438,13 @@ class HTS_etf(HTS):
def buyRealTime(self, stock, data, data_signal, MAX_BUY_PRICE, BUY_LIST): 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]['평가손익'], # 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: if check or buy_avg == 0:
BUY_LIST['buy_avg'] = 0 BUY_LIST['buy_avg'] = 0
BUY_LIST['buy_count'] = 0 BUY_LIST['buy_count'] = 0
@@ -454,33 +453,33 @@ class HTS_etf(HTS):
time.sleep(0.1) 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: if 'sell_price' in bsLine1:
sell_price = bsLine1['sell_price'][-1] sell_price = bsLine1['sell_price'][-1]
sell_count = bsLine1['sell_count'][-1] sell_count = bsLine1['sell_count'][-1]
sell_type = bsLine1['sell_type'][-1] sell_type = bsLine1['sell_type'][-1]
if 0 < sell_price: 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: 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_avg'] = 0
BUY_LIST['buy_count'] = 0 BUY_LIST['buy_count'] = 0
BUY_LIST['buy_list'].clear() 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: if 'buy_price' in bsLine1:
buy_price = bsLine1['buy_price'][-1] buy_price = bsLine1['buy_price'][-1]
buy_count = int(bsLine1['buy_count'][-1]) buy_count = int(bsLine1['buy_count'][-1])
if buy_price > 0: if buy_price > 0:
# 매수를 요청 한다. # 매수를 요청 한다.
orderNum = self.requestOrder(OrderType.buy, self.stock_code, buy_count, buy_price) orderNum = self.requestOrder(OrderType.buy, stock['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.orderChecker.buy(datetime.today().strftime('%Y%m%d'), "A" + stock['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) self.bot.post(stock['stock_code'], stock['stock_name'], "[BUY] ", buy_price, buy_count, data['rsi'][-1], -1)
# 미체결 기록을 가져와서 10분 이상 된 매수 주문을 취소 한다. # 미체결 기록을 가져와서 10분 이상 된 매수 주문을 취소 한다.
ORDER_LIST = self.requestOrderList() 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: if len(orderListToCancel) > 0:
self.cancelOrderList(orderListToCancel) self.cancelOrderList(orderListToCancel)

View File

@@ -10,7 +10,7 @@ class BuySellChecker():
PATTERNS = None PATTERNS = None
RESOURCE_PATH = None RESOURCE_PATH = None
def __init__(self, RESOURCE_PATH, s): def __init__(self, RESOURCE_PATH):
self.RESOURCE_PATH = RESOURCE_PATH self.RESOURCE_PATH = RESOURCE_PATH
return return