init
This commit is contained in:
@@ -6,59 +6,81 @@ 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)
|
||||
def __init__(self, stock_code):
|
||||
self.saveFileName = "./order/"+stock_code+"_"+datetime.today().strftime("%Y%m%d")+".csv"
|
||||
return
|
||||
|
||||
def read(self, fileName):
|
||||
if os.path.isfile(fileName):
|
||||
self.order_df = pd.read_csv(fileName)
|
||||
def read(self):
|
||||
if os.path.isfile(self.saveFileName):
|
||||
order_df = pd.read_csv(self.saveFileName)
|
||||
else:
|
||||
self.order_df = pd.DataFrame(columns=["type", "orderNum", "count", "price", "datetime"])
|
||||
order_df = pd.DataFrame(columns=["stock_code", "type", "orderNum", "count", "price", "datetime"])
|
||||
|
||||
self.order_df = self.order_df.astype({"type": str, "orderNum": int, "count": int, "price": int})
|
||||
self.order_df['datetime'] = pd.to_datetime(self.order_df['datetime'])
|
||||
return
|
||||
order_df = order_df.astype({"stock_code": str, "type": str, "orderNum": int, "count": int, "price": int})
|
||||
order_df['datetime'] = pd.to_datetime(order_df['datetime'])
|
||||
return order_df
|
||||
|
||||
def add(self, type, orderNum, count, price, orderList):
|
||||
def add(self, stock_code, type, orderNum, count, price, orderList):
|
||||
orderListToCancel = []
|
||||
# 매수 요청인 경우만 두 시간 전 주문을 찾아서 제외한다.
|
||||
if type == OrderType.buy:
|
||||
return orderListToCancel
|
||||
|
||||
# 두 시간 전
|
||||
before_two_hour = datetime.now() - timedelta(hours=2)
|
||||
order_df = self.read()
|
||||
|
||||
# 두 시간 전 주문을 찾는다.
|
||||
if orderList is not None and 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]
|
||||
# 1) 종목 코드를 찾는다.
|
||||
stock_df = order_df.loc[order_df["stock_code"] == stock_code]
|
||||
|
||||
# 2) 2 시간 전 계산
|
||||
before_two_hour = datetime.now() - timedelta(hours=2)
|
||||
|
||||
# 3) 만약 2 시간 전 주문을 찾는다.
|
||||
stock_twohour_df = stock_df.loc[stock_df["datetime"] <= before_two_hour]
|
||||
|
||||
# 4) 2 시간 전 주문 중에서 매수 데이터만 찾는다.
|
||||
orderNum_df = stock_twohour_df.loc[stock_twohour_df["type"] == OrderType.buy.value]
|
||||
|
||||
# 5) 2시간 전 매수 항목을 별도로 추출한다.
|
||||
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)
|
||||
# 6) 추출된 항목을 제외시킨다.
|
||||
order_df = order_df.loc[order_df["orderNum"] != item.orderNum]
|
||||
|
||||
# 7) 새로운 주문을 추가한다.
|
||||
order_df = order_df.append({"stock_code": stock_code, "type": type.value, "orderNum": orderNum, "count": count, "price": price, "datetime": datetime.now()}, ignore_index=True)
|
||||
|
||||
# 8) 파일로 기록한다.
|
||||
order_df.to_csv(self.saveFileName)
|
||||
|
||||
return orderListToCancel
|
||||
|
||||
def remove(self, type, orderList):
|
||||
def remove(self, stock_code, type, orderList):
|
||||
order_df = self.read()
|
||||
orderListToCancel = []
|
||||
|
||||
if orderList is not None and len(orderList) > 0:
|
||||
orderNum_df = self.order_df.loc[self.order_df["type"] == type.value]
|
||||
# 1) 종목 코드를 찾는다.
|
||||
stock_df = order_df.loc[order_df["stock_code"] == stock_code]
|
||||
|
||||
# 2) 매도 주문을 찾는다.
|
||||
orderNum_df = stock_df.loc[stock_df["type"] == type.value]
|
||||
|
||||
# 3) 매도 주문 중에서 항목을 별도로 추출한다.
|
||||
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.to_csv(self.saveFileName)
|
||||
|
||||
# 4) 해당 orderNum 제외하기
|
||||
order_df = order_df.loc[order_df["orderNum"] != item.orderNum]
|
||||
order_df.to_csv(self.saveFileName)
|
||||
|
||||
return orderListToCancel
|
||||
|
||||
|
||||
Reference in New Issue
Block a user