protected void ProcessCancelationError(ExecutionReport exReport, Order order, Wrapper wrapper) { if (!string.IsNullOrEmpty(exReport.error)) { OrderCancelRejectWrapper reject = new OrderCancelRejectWrapper(order.OrderId, wrapper.GetField(OrderFields.OrigClOrdID).ToString(), wrapper.GetField(OrderFields.ClOrdID).ToString(), OrdStatus.Rejected, order.Side, order.Price, order.OrderQty.HasValue ? order.OrderQty.Value : 0, exReport.LeavesQty.HasValue ? exReport.LeavesQty.Value : 0, DateTime.Now, CxlRejReason.UnknownOrder, exReport.error, order.SymbolPair); OnMessageRcv(reject); } }
protected CMState CancelOrderOnOrderId(string orderId, Wrapper wrapper) { try { lock (tLock) { Order order = BitMexActiveOrders.Values.Where(x => x.OrderId == orderId).FirstOrDefault(); if (order != null) { ExecutionReport exReport = RunCancelOrder(order, false); ProcessCancelationError(exReport, order, wrapper); } else { OrderCancelRejectWrapper reject = new OrderCancelRejectWrapper(orderId, wrapper.GetField(OrderFields.OrigClOrdID).ToString(), wrapper.GetField(OrderFields.ClOrdID).ToString(), OrdStatus.Rejected, Side.Unknown, null, 0, 0, DateTime.Now, CxlRejReason.UnknownOrder, string.Format("OrderId not found: {0}", orderId), wrapper.GetField(OrderFields.Symbol).ToString()); OnMessageRcv(reject); throw new Exception(string.Format("@{0}: Could not cancel order for OrderId {1} because it was not found", BitmexConfiguration.Name, orderId)); } } return(CMState.BuildSuccess()); } catch (Exception ex) { DoLog(string.Format("@{0}:Error cancelig order {1}!:{2}", BitmexConfiguration.Name, orderId, ex.Message), Main.Common.Util.Constants.MessageType.Error); return(CMState.BuildFail(ex)); } }
protected CMState CancelOrderOnClOrderId(string origClOrderId, Wrapper wrapper) { try { //New order id string clOrderId = wrapper.GetField(OrderFields.ClOrdID).ToString(); lock (tLock) { if (BitMexActiveOrders.ContainsKey(origClOrderId)) { Order order = BitMexActiveOrders[origClOrderId]; ExecutionReport exReport = RunCancelOrder(order, false); ProcessCancelationError(exReport, order, wrapper); } else { string orderId = wrapper.GetField(OrderFields.OrderId) != OrderFields.NULL ? wrapper.GetField(OrderFields.OrderId).ToString() : ""; OrderCancelRejectWrapper reject = new OrderCancelRejectWrapper(orderId, origClOrderId, clOrderId, OrdStatus.Rejected, Side.Unknown, null, 0, 0, DateTime.Now, CxlRejReason.UnknownOrder, string.Format("ClOrdId not found: {0}", origClOrderId), wrapper.GetField(OrderFields.Symbol).ToString()); OnMessageRcv(reject); throw new Exception(string.Format("@{0}: Could not cancel order for OrigClOrdId {1} because it was not found", BitmexConfiguration.Name, origClOrderId)); } } return(CMState.BuildSuccess()); } catch (Exception ex) { DoLog(string.Format("@{0}:Error cancelig order {1}!:{2}", BitmexConfiguration.Name, origClOrderId, ex.Message), Main.Common.Util.Constants.MessageType.Error); return(CMState.BuildFail(ex)); } }