From ae43531cfba644c45c8911a7759b998ecf5936e7 Mon Sep 17 00:00:00 2001 From: dsyoon Date: Thu, 13 Apr 2023 23:40:42 +0900 Subject: [PATCH] init --- HTS_etf_long.py | 13 ++----------- HTS_etf_short.py | 12 ++---------- HTS_stocks.py | 41 +++++++++++++---------------------------- 3 files changed, 17 insertions(+), 49 deletions(-) diff --git a/HTS_etf_long.py b/HTS_etf_long.py index 6568d48..a01da20 100644 --- a/HTS_etf_long.py +++ b/HTS_etf_long.py @@ -256,19 +256,11 @@ class HTS_etf (HTS): try: # 데이터를 가지고 온다. - result = self.getRealTime(stock['stock_code'], today, LAST_DATA[stock['stock_code']]) + data = self.getRealTime(stock['stock_code'], today, LAST_DATA[stock['stock_code']]) except: print("#ERROR:", stock['stock_code'], stock['stock_name']) continue - result_5 = self.makeTickData(result, mins=5) - result_30 = self.makeTickData(result, mins=30) - if len(result_30['time']) < 100: - continue - - data = self.buySellChecker.analyze(result) - data.drop(data.index[:len(data) - analyzed_day], inplace=True) - # 현재 매수가 bs_buy_price = data["close"][len(data["close"]) - 1] @@ -280,12 +272,11 @@ class HTS_etf (HTS): if bs_buy_price > 1000: - if not self.orderChecker.exist(today, "A" + stock['stock_code'], hours=9): + if not self.orderChecker.exist(today, "A" + stock['stock_code'], hours=5): stock_type = self.getStockType(stock['stock_code'], short=False) buy_count = self.getBuyCount(bs_buy_price, kospi_type, stock_type) if buy_count > 0: - # 매수를 주문한다. orderNum = self.requestOrder(OrderType.buy, stock['stock_code'], buy_count , bs_buy_price) self.orderChecker.buy(today, "A" + stock['stock_code'], buy_count, bs_buy_price, orderNum) diff --git a/HTS_etf_short.py b/HTS_etf_short.py index 10e6d32..3784876 100644 --- a/HTS_etf_short.py +++ b/HTS_etf_short.py @@ -257,19 +257,11 @@ class HTS_etf (HTS): try: # 데이터를 가지고 온다. - result = self.getRealTime(stock['stock_code'], today, LAST_DATA[stock['stock_code']]) + data = self.getRealTime(stock['stock_code'], today, LAST_DATA[stock['stock_code']]) except: print("#ERROR:", stock['stock_code'], stock['stock_name']) continue - result_5 = self.makeTickData(result, mins=5) - result_30 = self.makeTickData(result, mins=30) - if len(result_30['time']) < 100: - continue - - data = self.buySellChecker.analyze(result) - data.drop(data.index[:len(data) - analyzed_day], inplace=True) - # 현재 매수가 bs_buy_price = data["close"][len(data["close"]) - 1] @@ -281,7 +273,7 @@ class HTS_etf (HTS): if bs_buy_price > 1000: - if not self.orderChecker.exist(today, "A" + stock['stock_code'], hours=9): + if not self.orderChecker.exist(today, "A" + stock['stock_code'], hours=5): stock_type = self.getStockType(stock['stock_code'], short=True) buy_count = self.getBuyCount(bs_buy_price, kospi_type, stock_type) diff --git a/HTS_stocks.py b/HTS_stocks.py index cc58270..2535b0b 100644 --- a/HTS_stocks.py +++ b/HTS_stocks.py @@ -280,8 +280,8 @@ class HTS_Stocks (HTS): # 분석일 데이터만 활용한다 (이전 데이터는 제거) data.drop(data.index[:len(data) - self.analyzed_day], inplace=True) - bsLine, data = self.buySellChecker.checkTransactionWithEnvelope(data, stock_code, self.analyzed_day, isRealTime=False) + bs_buy_price = data["close"][len(data["close"]) - 1] # 미체결 기록을 가져와서 10분 이상 된 매수 주문을 취소 한다. ORDER_LIST = self.requestOrderList() @@ -290,39 +290,24 @@ class HTS_Stocks (HTS): self.cancelOrderList(orderListToCancel) # 다음 조건이면 매수한다. - if len(data) > 10 and max(bsLine['buy'][len(bsLine['buy']) - 1:]) > 1000: + if bs_buy_price > 1000: - if not self.orderChecker.exist(today, "A" + stock_code, hours=9): + if not self.orderChecker.exist(today, "A" + stock_code, hours=5): + stock_type = self.getStockType(stock['stock_code'], short=False) + buy_count = self.getBuyCount(bs_buy_price, kospi_type, stock_type) - last_index = len(bsLine['buy'])-1 - if 0 < bsLine['buy'][last_index] < 200000: + if buy_count > 0: - bs_buy_price = bsLine['buy'][last_index] - bs_buy_weight = bsLine['buy_weight'][last_index] - buy_count = self.getBuyCount(stock_code, valid_company, bs_buy_price, slow_k_kospi, p_slow_k_kospi, slow_k_week_kospi, p_slow_k_week_kospi, slow_k_month_kospi, p_slow_k_month_kospi) + # 매수를 주문한다. + orderNum = self.requestOrder(OrderType.buy, stock_code, buy_count, bs_buy_price) + self.orderChecker.buy(today, "A" + stock_code, buy_count, bs_buy_price, orderNum) - if buy_count > 0: - # 매수를 주문한다. - orderNum = self.requestOrder(OrderType.buy, stock_code, buy_count, bs_buy_price) - self.orderChecker.buy(today, "A" + stock_code, buy_count, bs_buy_price, orderNum) + # slackbot에 메시지를 보냄 + self.slackBot.post_to_slack(stock_code, stock_name, "BUY", bs_buy_price, buy_count) - # slackbot에 메시지를 보냄 - self.slackBot.post_to_slack(stock_code, stock_name, "BUY", bsLine['buy'][len(bsLine['buy']) - 1], buy_count) + # 로그 출력 + print("BUY", THIS_TIME.strftime('%Y%m%d %H%M%S'), orderNum, stock_code, stock_name, bs_buy_price, buy_count) - # 로그 출력 - print("BUY", THIS_TIME.strftime('%Y%m%d %H%M%S'), orderNum, stock_code, stock_name, bs_buy_price, buy_count) - - # 다음 조건이면 매도한다. - if len(data) > 10 and max(bsLine['sell'][len(bsLine['sell']) - 1:]) > 1000: - bs_sell_price = bsLine['sell'][len(bsLine['sell']) - 1] - check = self.sellStocks(stock_code, bs_sell_price) - - if check: - # slackbot에 메시지를 보냄 - self.slackBot.post_to_slack(stock_code, stock_name, "SELL", bsLine['sell'][len(bsLine['sell']) - 1], 'ALL') - - # 로그 출력 - print("SELL", THIS_TIME.strftime('%Y%m%d %H%M%S'), stock_code, stock_name, bs_sell_price) """ elif datetime.strptime(today + " 151530", '%Y%m%d %H%M%S') < THIS_TIME < datetime.strptime(today + " 151600", '%Y%m%d %H%M%S'): # 3시 15분 30초부터 3시 16분 사이는 잔량을 매도한다.