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):
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)

View File

@@ -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