//private T GetListBoxItem<T>(ListBox lb, BitmexOrderData order) where T : OrderModel
        //{
        //    int idx = lb.Items.ContainsOrderItem<StopOrderModel>(order.OrderId);
        //    return (T)lb.Items[idx];
        //}

        public void CancelStopLimit(BitmexOrderData order)
        {
            //if (String.Compare(_trailingStopId, order.OrderId, true) == 0)
            //{
            //    //MainWnd.ChangeControl(() => btnCancelTrail.IsEnabled = false);
            //    _trailingStopId = null;
            //}
            MainWnd.RemoveOrder <StopOrderModel>(gridStops, order, lbStopOrders, () =>
            {
                MainWindow.HandleException(() =>
                {
                    if (order.IsCanceled)
                    {
                        order.Message = "Cancel";
                    }
                    if (order.IsRejected)
                    {
                        order.Message = "Filled";
                    }
                    if (order.HasTriggered)
                    {
                        order.Message   = "Triggered Stop";
                        order.OrdStatus = order.Triggered;
                    }
                    var msg = String.Format("{0} ID{1}", order.Message, order.OrderId.GetOrderId());
                    MainWnd.LogOrderEvent(msg);
                });
            });
        }
Example #2
0
        public ApiResult Save(BitmexOrderData order, BitmexUser user)
        {
            Order = order;
            User  = user;

            return(_api.UserQuery("/v1/order", HttpMethod.Post, JsonConvert.SerializeObject(this), true));
        }
        public void UpdateStopLimit(BitmexOrderData order, double bidPrice, double askPrice)
        {
            int idx = MainWnd.ContainsOrder <StopOrderModel>(gridStops, order);

            if (idx != -1)
            {
                var newModel = StopOrderModel.ToModel(order, MainWnd.Controller, bidPrice, askPrice);
                if (newModel.StopPx.HasValue)
                {
                    // TODO: ??
                    //var lbItem = GetListBoxItem<StopOrderModel>(lbStopOrders, order);
                    //lbItem.StopPx = newModel.StopPx.Value;
                }
                var model = (StopOrderModel)gridStops.Items[idx];
                MainWindow.HandleException(() =>
                {
                    var msg = model.Sync(newModel, MainWnd.Controller);
                    if (msg != null)
                    {
                        order.Message = String.Format("Update Stop{0} ID{1}", msg, order.OrderId.GetOrderId());
                        MainWnd.LogOrderEvent(order.Message);
                        MainWnd.UpdateOrder <StopOrderModel>(gridStops, order, model, idx);
                    }
                });
            }
        }
 private void ThrowIfError(BitmexOrderData result, string actionName)
 {
     if (result.HasError)
     {
         throw new InvalidOperationException(String.Format("BitMEX '{0}' when {1}: {2}", result.Text, actionName, result.Error));
     }
 }
Example #5
0
 public virtual bool OrderFilled(BitmexOrderData ord)
 {
     if (ord.IsFilled)
     {
         return(String.Compare(OrderId, ord.OrderId, true) == 0);
     }
     return(false);
 }
Example #6
0
        public override bool OrderFilled(BitmexOrderData ord)
        {
            if (!base.OrderFilled(ord))
            {
                return(false);
            }

            _order = null;
            return(true);
        }
Example #7
0
 public void CancelLimit(BitmexOrderData order)
 {
     MainWnd.RemoveOrder <ActiveOrderModel>(gridOrders, order, lbActiveOrders, () =>
     {
         MainWindow.HandleException(() =>
         {
             order.Message = "Cancel ID" + order.OrderId.GetOrderId();
             MainWnd.LogOrderEvent(order.Message);
         });
     });
 }
Example #8
0
        internal void CreateOrder(BitmexOrderData order, string text)
        {
            var model = ActiveOrderModel.ToModel(order, MainWnd.Controller);

            MainWnd.InsertOrder <ActiveOrderModel>(gridOrders, model, null, lbActiveOrders);

            MainWindow.HandleException(() =>
            {
                order.Message = String.Format("{0} ID{1}", text, order.OrderId.GetOrderId());
                MainWnd.LogOrderEvent(order.Message);
            });
        }
Example #9
0
 public void SetStopPrice(BitmexOrderData order)
 {
     if (String.Compare(order.Text, "STOPLS") == 0)
     {
         _stopPx = order.StopPx.Value;
     }
     else if (!String.IsNullOrEmpty(order.OrderId))
     {
         if (order.StopPx.HasValue)
         {
             _stopPx = order.StopPx;
         }
     }
 }
Example #10
0
        internal void UpdateLimit(BitmexOrderData order)
        {
            int idx = MainWnd.ContainsOrder <ActiveOrderModel>(gridOrders, order);

            if (idx != -1)
            {
                var model = (ActiveOrderModel)gridOrders.Items[idx];
                MainWindow.HandleException(() =>
                {
                    var msg = model.Sync(ActiveOrderModel.ToModel(order, MainWnd.Controller), MainWnd.Controller);
                    if (msg != null)
                    {
                        order.Message = String.Format("Update{0} ID{1}", msg, order.OrderId.GetOrderId());
                        MainWnd.LogOrderEvent(order.Message);
                        MainWnd.UpdateOrder <ActiveOrderModel>(gridOrders, order, model, idx, lbActiveOrders);
                    }
                });
            }
        }
        internal void CreateStopOrder(BitmexOrderData order, double bidPrice, double askPrice)
        {
            var model = StopOrderModel.ToModel(order, MainWnd.Controller, bidPrice, askPrice);

            MainWnd.InsertOrder <StopOrderModel>(gridStops, model, null, lbStopOrders);

            //if (order.PegOffsetValue.HasValue)
            //{
            //    MainWnd.ChangeControl(() => btnCancelTrail.IsEnabled = true); //!! may be send event
            //    _trailingStopId = order.OrderId;
            //}
            MainWindow.HandleException(() =>
            {
                var price     = MainWnd.Controller.ToStringPrice(order.StopPx.Value, order.Symbol);
                var orderId   = order.OrderId.GetOrderId();
                order.Message = String.Format("Stop Px={0} {1} ID{2}", price, order.Symbol, orderId);

                MainWnd.LogOrderEvent(order.Message);
            });
        }
Example #12
0
 public string SyncOrderFilled(BitmexOrderData order, MainWindowController ctrl)
 {
     var str = new StringBuilder();
     if (order.CumQty.HasValue)      // исполненная часть заявки
     {
         this.CumQty = order.CumQty.Value;
         str.AppendFormat(" CumQty={0}", order.CumQty.Value);
     }
     if (order.LeavesQty.HasValue)   // неисполненная часть заявки
     {
         this.LeavesQty = order.LeavesQty.Value;
         str.AppendFormat(" LeavesQty={0}", order.LeavesQty.Value);
     }
     if (order.AvgPx.HasValue)       // средневзвешенная цена сделок по заявке
     {
         this.AvgPrice = order.AvgPx.Value;
         str.AppendFormat(" AvgPx={0}", ctrl.ToStringPrice(order.AvgPx.Value, this.Symbol));
     }
     return str.Length == 0 ? null : str.ToString();
 }
Example #13
0
        internal void RemoveOrder <T>(DataGrid grid, BitmexOrderData order, ListBox listBox, Action action = null, bool useMarking = false) where T : OrderModel
        {
            if (useMarking && !_markAsRemovedOrders.ContainsKey(order.OrderId))
            {
                _markAsRemovedOrders.Add(order.OrderId, true);
            }

            if (listBox != null)
            {
                listBox.Items.RemoveFromCollection <T>(order.OrderId);
            }

            if (grid.Items.RemoveFromCollection <T>(order.OrderId))
            {
                if (action != null)
                {
                    action();
                }
            }
        }
Example #14
0
        public static ActiveOrderModel ToModel(BitmexOrderData data, MainWindowController wndCtrl)
        {            
            var model = new ActiveOrderModel
            {
                OrderId = data.OrderId,
                Symbol  = data.Symbol,
                Status  = data.OrdStatus,
                Type    = data.OrdType,
                Side    = data.Side,
                Time    = data.Timestamp.ToLocalTime().ToLongTimeString(),
                FullTime = data.Timestamp.ToLocalTime().ToString()
            };

            model.SetOrderQty(data.OrderQty);
            model.SetPrice(data.Price, wndCtrl);
            model.SetExecInst(data.ExecInst);

            if (data.OrderQty.HasValue && data.Price.HasValue)                
                model.OrderValue = wndCtrl.GetOrderValue(data.OrderQty.Value, data.Price.Value, model.Symbol);

            return model;
        }
Example #15
0
        public static StopOrderModel ToModel(BitmexOrderData order, MainWindowController wndCtrl, double?bidPrice = null, double?askPrice = null)
        {
            var model = new StopOrderModel
            {
                OrderId  = order.OrderId,
                Symbol   = order.Symbol,
                Side     = order.Side,
                Type     = order.OrdType,
                Status   = order.OrdStatus,
                Time     = order.Timestamp.ToLocalTime().ToLongTimeString(),
                FullTime = order.Timestamp.ToLocalTime().ToString()
            };

            model.SetPrice(order.Price, wndCtrl);
            model.SetOrderQty(order.OrderQty);
            model.SetStopPrice(order.Side, order.StopPx, wndCtrl);
            model.SetTriggeringPrice(bidPrice, askPrice, wndCtrl);
            model.SetExecInst(order.ExecInst);
            model.SetTrailValue(order.PegOffsetValue, wndCtrl);

            return(model);
        }
Example #16
0
        internal void UpdateFilled(BitmexOrderData order)
        {
            int idx = MainWnd.ContainsOrder <ActiveOrderModel>(gridOrders, order);

            if (idx != -1)
            {
                var model = (ActiveOrderModel)gridOrders.Items[idx];
                MainWindow.HandleException(() =>
                {
                    var msg = model.SyncOrderFilled(order, MainWnd.Controller);
                    if (msg != null)
                    {
                        order.Message = String.Format("{0}{1} ({2})", order.OrdStatus, msg, order.OrderId.GetOrderId());
                        MainWnd.LogOrderEvent(order.Message);
                        MainWnd.UpdateOrder <ActiveOrderModel>(gridOrders, order, model, idx, lbActiveOrders);
                    }
                    if (order.OrdStatus == "Filled")
                    {
                        MainWnd.RemoveOrder <ActiveOrderModel>(gridOrders, order, lbActiveOrders);
                    }
                });
            }
        }
Example #17
0
 internal int ContainsOrder <T>(DataGrid grid, BitmexOrderData order) where T : OrderModel
 {
     return(grid.Items.ContainsOrderItem <T>(order.OrderId));
 }
Example #18
0
 internal void UpdateOrder <T>(DataGrid grid, BitmexOrderData order, T model, int idx, ListBox listbox = null) where T : OrderModel
 {
     RemoveOrder <T>(grid, order, listbox, null, false);
     InsertOrder <T>(grid, model, idx, listbox, false);
 }
 public bool OrderFilled(BitmexOrderData ord)
 {
     return(false);
 }