Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        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));
            }
        }