import os import pandas as pd from datetime import datetime, timedelta from OrderItem import OrderItem class OrderChecker: order_df = None # 매수/매도구분, orderNum, 금액, 시각 saveFileName = None def __init__(self): self.saveFileName = "./order/"+datetime.today().strftime("%Y%m%d")+".csv" self.read(self.saveFileName) return def read(self, fileName): if os.path.isfile(fileName): self.order_df = pd.read_csv(fileName) else: self.order_df = None def add(self, type, orderNum, count, price, orderList): orderListToCancel = [] if self.order_df is None: self.order_df = pd.DataFrame() else: # 두 시간 전 before_two_hour = datetime.now() - timedelta(hours=2) # 두 시간 전 주문을 찾는다. if len(orderList) > 0: # 만약 두시간 전 주문을 찾는다. orderNum_df = self.order_df.loc[self.order_df["datetime"] <= before_two_hour] orderNumSet = set(list(orderNum_df["orderNum"])) for item in orderList: if item.orderNum in orderNumSet: orderListToCancel.append(item) # 해당 orderNum 제외하기 self.order_df = self.order_df.loc[self.order_df["orderNum"] != item.orderNum] self.order_df = self.order_df.append({"type": type, "orderNum": orderNum, "count": count, "price": price, "datetime": datetime.now()}, ignore_index=True) self.order_df.to_csv(self.saveFileName) return orderListToCancel if __name__ == "__main__": orderChecker = OrderChecker() a = pd.DataFrame(columns=["a", "b", "c", "d", "e"]) a = a.append({"a": 0, "b": 1, "c": 3, "d": 7, "e": 8}, ignore_index=True) a = a.append({"a": 1, "b": 3, "c": 0, "d": 6, "e": 6}, ignore_index=True) a = a.append({"a": 2, "b": 3, "c": 0, "d": 3, "e": 9}, ignore_index=True) a = a.append({"a": 3, "b": 9, "c": 9, "d": 8, "e": 4}, ignore_index=True) a = a.loc[a["c"] != 9] print(a.tail())