From 29eac27ba48cd04be6dee23d58641395aa969152 Mon Sep 17 00:00:00 2001 From: dsyoon Date: Sat, 28 Jan 2023 20:18:25 +0900 Subject: [PATCH] init --- Bithumb_minute.py | 49 ++++++++++++++++++----------------------------- 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/Bithumb_minute.py b/Bithumb_minute.py index ee1a5c8..562dbdd 100644 --- a/Bithumb_minute.py +++ b/Bithumb_minute.py @@ -524,8 +524,12 @@ class Bithumb_minute(HTS): return df def cancel_order(self, log_df, log_filename, min=5): + now = datetime.now() - timedelta(minutes=min) + # min 분 이상 된 시간인 내용을 가지고 옴 df = log_df.loc[(log_df.index <= now) ] + # 취소가 되지 않은 것만 가지고 옴 (0: 취소 되지 않음, 1: 취소함) + df = df.loc[(log_df["canceled"] == 0)] df.reset_index() if df is not None: @@ -535,28 +539,23 @@ class Bithumb_minute(HTS): # slackbot에 메시지를 보냄 self.slackBot.post_to_slack(ticker, self.stock_code[ticker], "CANCEL", -1, -1) - log_df = log_df.loc[(log_df.index > now)] - if len(log_df) == 0: - log_df["datetime"] = "" - else: - log_df["datetime"] = log_df.index + for row in df.rows: + row['canceled'] = 1 + log_df.to_csv(log_filename, index=False) return log_df - def check_buy_history(self, log_df, log_filename, min=10): + def check_buy_history(self, log_df, min=10): + # min 분 이상 된 시간인 내용을 가지고 옴 now = datetime.now() - timedelta(minutes=min) - + # 취소가 되지 않은 것만 가지고 옴 (0: 취소 되지 않음, 1: 취소함) log_df = log_df.loc[(now < log_df.index)] - if len(log_df) == 0: - log_df["datetime"] = "" - buy_history = False - else: - log_df["datetime"] = log_df.index - buy_history = True - log_df.to_csv(log_filename, index=False) - return buy_history, log_df + if len(log_df) == 0: + return False + + return True def getStock(self, ticker, analyzed_day, minute=5): stock = {"CODE": ticker, "NAME": ticker, "PRICE": []} @@ -607,29 +606,19 @@ class Bithumb_minute(HTS): order_log_filename = os.path.join(RESOURCE_PATH, 'order', "bithumb"+"_"+self.TODAY + '.log') if os.path.exists(order_log_filename): order_log_df = pd.read_csv(order_log_filename) - order_log_df.columns = ["type", "order0", "order1", "order2", "order3", "slow_k_30", "slow_k_5", "price", "count", "datetime"] + order_log_df.columns = ["type", "order0", "order1", "order2", "order3", "canceled", "slow_k_30", "slow_k_5", "price", "count", "datetime"] order_log_df["datetime"] = pd.to_datetime(order_log_df["datetime"], format='%Y-%m-%d %H:%M:%S') else: - order_log_df = pd.DataFrame(columns=["type", "datetime", "order0", "order1", "order2", "order3", "slow_k_30", "slow_k_5", "price", "count"]) + order_log_df = pd.DataFrame(columns=["type", "datetime", "order0", "order1", "order2", "order3", "canceled", "slow_k_30", "slow_k_5", "price", "count"]) order_log_df['datetime'] = pd.to_datetime(order_log_df['datetime'], unit='s') order_log_df.set_index('datetime', inplace=True) - # 한번 매수 후 n시간 이후 매수하기 위함 - buy_history_filename = os.path.join(RESOURCE_PATH, 'order', "bithumb_buy_" + "_" + self.TODAY + '.log') - if os.path.exists(buy_history_filename): - buy_history_df = pd.read_csv(buy_history_filename) - buy_history_df.columns = ["type", "order0", "order1", "order2", "order3", "slow_k_30", "slow_k_5", "price", "count", "datetime"] - buy_history_df["datetime"] = pd.to_datetime(buy_history_df["datetime"], format='%Y-%m-%d %H:%M:%S') - else: - buy_history_df = pd.DataFrame(columns=["type", "datetime", "order0", "order1", "order2", "order3", "slow_k_30", "slow_k_5", "price", "count"]) - buy_history_df['datetime'] = pd.to_datetime(buy_history_df['datetime'], unit='s') - buy_history_df.set_index('datetime', inplace=True) - # 10분이 지난 미체결은 취소한다. order_log_df = self.cancel_order(order_log_df, order_log_filename, min=10) # 한번 매수 후 n분 이후 매수하기 위함 - buy_history, buy_history_df = self.check_buy_history(buy_history_df, buy_history_filename, min=30) - if isRealTime and not buy_history: + check_buy_history = self.check_buy_history(order_log_df, min=30) + + if isRealTime and not check_buy_history: if max(bsLine['buy'][len(bsLine['buy']) - 2:]) > 100: tmp = self.bithumb.get_balance(ticker) balance = tmp[2]