59 lines
2.2 KiB
Python
59 lines
2.2 KiB
Python
import os
|
|
import pandas as pd
|
|
from datetime import datetime, timedelta
|
|
|
|
from OrderType import OrderType
|
|
|
|
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]
|
|
orderNum_df = orderNum_df.loc[orderNum_df["type"] == OrderType.buy.value]
|
|
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.value, "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["b"] != 3]
|
|
print(a.tail()) |