public void push(OrderCmd aCmd) { Order order; if (orders.ContainsKey(aCmd.orderInfo.orderId)) { // order alreday exist logger.Info("push:orderIdExist:" + aCmd.orderInfo.orderId); order = orders[aCmd.orderInfo.orderId]; //orderid, account, symbol, and position can not change if (aCmd.closed) { order.closingOrder("OrderCmd"); } else { updateOrder(order, aCmd); } } else { logger.Info("push:nreOrderId:" + aCmd.orderInfo.orderId); // create new order OrderTrackingInfo orderTrackingInfo = new OrderTrackingInfo(OrderState.WaitingSubmit); orderTrackingInfo.orderId = aCmd.orderInfo.orderId; order = new Order(aCmd.orderInfo, orderTrackingInfo, aCmd.orderBehaviorParameters); addOrder(order); updateOrder(order, aCmd); order.active(); order.fireOrder("NewOrderCmdRecieved"); } }
public void loadOrderFromRedis() { List <int> orderIdList = getOrderIdListFromRedisDB(); foreach (int aId in orderIdList) { OrderInfo orderInfo = new OrderInfo(); orderInfo.loadFromRedis(aId); OrderTrackingInfo orderTrackingInfo = new OrderTrackingInfo(); orderTrackingInfo.loadFromRedis(aId); OrderBehaviorParameters orderBehaviorParameters = new OrderBehaviorParameters(); orderBehaviorParameters.loadFromRedis(aId); Order order = new Order(orderInfo, orderTrackingInfo, orderBehaviorParameters); if (orderTrackingInfo.orderState == OrderState.Filled) { order.active(); order.behaviorReInit(); } addOrder(order); } }
public Order(OrderInfo aOrderInfo, OrderTrackingInfo aTracking, OrderBehaviorParameters aBehaviorPars) { orderinfo = aOrderInfo; behaviorPars = aBehaviorPars; tracking = aTracking; changeState(aTracking.orderState); orderinfo.saveOnRedis(); behaviorPars.saveOnRedis(); tracking.saveOnRedis(); daytrade = new DayTrade(this); profitTake = new ProfitTake(this); protector = new Protector(this); hardstop = new Hardstop(this); }