From 4cd5487e6a075695b0d13cb00f9eb533ac5f1f2c Mon Sep 17 00:00:00 2001 From: dsyoon Date: Wed, 11 Oct 2023 20:38:24 +0900 Subject: [PATCH] init --- HTS_etf_122630.py | 33 +++++++++++++++++++-------------- HTS_etf_252670.py | 31 ++++++++++++++++++------------- hts/BuySellChecker.py | 19 +++++-------------- 3 files changed, 42 insertions(+), 41 deletions(-) diff --git a/HTS_etf_122630.py b/HTS_etf_122630.py index 3a6738d..bef8269 100644 --- a/HTS_etf_122630.py +++ b/HTS_etf_122630.py @@ -43,22 +43,27 @@ class HTS_etf(HTS): if jangoDic and len(jangoDic.keys()) > 0: for code in jangoDic: if stock_code is not None: - if code == "A" + stock_code and bs_sell_price is not None: - if jangoDic[code]['매도가능'] > 0: - if jangoDic[code]['평가손익'] < -1.5 or 2 < jangoDic[code]['평가손익']: - # 1.5% 손해 혹은 2% 이상 시 수익 매도 - self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], bs_sell_price) - self.slackBot.post_to_slack(code, jangoDic[code]['종목명'], "SELL", bs_sell_price, jangoDic[code]['매도가능']) - check = True - else: - continue + if code == "A" + stock_code: + if bs_sell_price is not None: + if jangoDic[code]['매도가능'] > 0: + if jangoDic[code]['평가손익'] < -1.5 or 3 < jangoDic[code]['평가손익']: + # 1.5% 손해 혹은 2% 이상 시 수익 매도 + self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], bs_sell_price) + self.slackBot.post_to_slack(code, jangoDic[code]['종목명'], "SELL", bs_sell_price, jangoDic[code]['매도가능']) + check = True + else: + if jangoDic[code]['매도가능'] > 0: + if jangoDic[code]['평가손익'] < -1.5 or 3 < jangoDic[code]['평가손익']: + # 1.5% 손해 혹은 2% 이상 시 수익 매도 + self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가']) + self.slackBot.post_to_slack(code, jangoDic[code]['종목명'], "SELL", jangoDic[code]['현재가'], jangoDic[code]['매도가능']) + check = True else: if jangoDic[code]['매도가능'] > 0: - if jangoDic[code]['평가손익'] < -1.5 or 2 < jangoDic[code]['평가손익']: + if jangoDic[code]['평가손익'] < -1.5 or 3 < jangoDic[code]['평가손익']: # 1.5% 손해 혹은 2% 이상 시 수익 매도 - currentStock = self.currentStock(code[1:]) - self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], currentStock['close']) - self.slackBot.post_to_slack(code, jangoDic[code]['종목명'], "SELL", currentStock['close'], jangoDic[code]['매도가능']) + self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가']) + self.slackBot.post_to_slack(code, jangoDic[code]['종목명'], "SELL", jangoDic[code]['현재가'], jangoDic[code]['매도가능']) check = True return check @@ -120,7 +125,7 @@ class HTS_etf(HTS): if datetime.strptime(today + " 090000", '%Y%m%d %H%M%S') < THIS_TIME < datetime.strptime(today + " 151500", '%Y%m%d %H%M%S'): # 매도를 체크한다. - self.sellStocks() + self.sellStocks(stock_code) time.sleep(0.1) diff --git a/HTS_etf_252670.py b/HTS_etf_252670.py index 7a91186..008001c 100644 --- a/HTS_etf_252670.py +++ b/HTS_etf_252670.py @@ -44,22 +44,27 @@ class HTS_etf(HTS): if jangoDic and len(jangoDic.keys()) > 0: for code in jangoDic: if stock_code is not None: - if code == "A" + stock_code and bs_sell_price is not None: - if jangoDic[code]['매도가능'] > 0: - if jangoDic[code]['평가손익'] < -1.5 or 3 < jangoDic[code]['평가손익']: - # 1.5% 손해 혹은 2% 이상 시 수익 매도 - self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], bs_sell_price) - self.slackBot.post_to_slack(code, jangoDic[code]['종목명'], "SELL", bs_sell_price, jangoDic[code]['매도가능']) - check = True - else: - continue + if code == "A" + stock_code: + if bs_sell_price is not None: + if jangoDic[code]['매도가능'] > 0: + if jangoDic[code]['평가손익'] < -1.5 or 3 < jangoDic[code]['평가손익']: + # 1.5% 손해 혹은 2% 이상 시 수익 매도 + self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], bs_sell_price) + self.slackBot.post_to_slack(code, jangoDic[code]['종목명'], "SELL", bs_sell_price, jangoDic[code]['매도가능']) + check = True + else: + if jangoDic[code]['매도가능'] > 0: + if jangoDic[code]['평가손익'] < -1.5 or 3 < jangoDic[code]['평가손익']: + # 1.5% 손해 혹은 2% 이상 시 수익 매도 + self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가']) + self.slackBot.post_to_slack(code, jangoDic[code]['종목명'], "SELL", jangoDic[code]['현재가'], jangoDic[code]['매도가능']) + check = True else: if jangoDic[code]['매도가능'] > 0: if jangoDic[code]['평가손익'] < -1.5 or 3 < jangoDic[code]['평가손익']: # 1.5% 손해 혹은 2% 이상 시 수익 매도 - currentStock = self.currentStock(code[1:]) - self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], currentStock['close']) - self.slackBot.post_to_slack(code, jangoDic[code]['종목명'], "SELL", currentStock['close'], jangoDic[code]['매도가능']) + self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가']) + self.slackBot.post_to_slack(code, jangoDic[code]['종목명'], "SELL", jangoDic[code]['현재가'], jangoDic[code]['매도가능']) check = True return check @@ -121,7 +126,7 @@ class HTS_etf(HTS): if datetime.strptime(today + " 090000", '%Y%m%d %H%M%S') < THIS_TIME < datetime.strptime(today + " 151500", '%Y%m%d %H%M%S'): # 매도를 체크한다. - self.sellStocks() + self.sellStocks(stock_code) time.sleep(0.1) diff --git a/hts/BuySellChecker.py b/hts/BuySellChecker.py index 7ff449b..5acbed8 100644 --- a/hts/BuySellChecker.py +++ b/hts/BuySellChecker.py @@ -339,7 +339,7 @@ class BuySellChecker: def checkTransaction(self, stock_code, data, data_5=None, data_30=None, isRealTime=True): # 어제 오늘 데이터로 분석 - bsLine = {stock_code: {}} + bsLine = {} size = len(data["close"]) @@ -367,19 +367,10 @@ class BuySellChecker: if 'last' in bsLine and bsLine['last'] != 'buy': sell, weight = -1, -1 - bsLine['buy'][last_index] = buy - bsLine['buy_weight'][last_index] = buy_weight - bsLine['sell'][last_index] = sell - bsLine['sell_weight'][last_index] = sell_weight - - if buy > 0: - bsLine['last'] = 'buy' - bsLine['last_buy'] = buy - bsLine['buy_count'] += 1 - if sell > 0: - bsLine['last'] = 'sell' - bsLine['last_buy'] = -1 - bsLine['buy_count'] = 0 + bsLine['buy'] = [buy] + bsLine['buy_weight'] = [buy_weight] + bsLine['sell'] = [sell] + bsLine['sell_weight'] = [sell_weight] else: # Type=False, 시뮬레이션 적용