示例#1
0
        public override void InitializeOrdersPool(IList <Order> orders)
        {
            _list = orders;

            // Rerender HTML observer
            OrdersUpdate?.Invoke(GetAllOrders());
        }
示例#2
0
        public async Task <IActionResult> PutOrders(long id, OrderDTO orderDTO)
        {
            var orderUpdate = new OrdersUpdate
            {
                Id       = id,
                OrderDTO = orderDTO
            };

            return(await orderUpdate.Excute());
        }
示例#3
0
        /// <summary>
        /// Orders subscription handler
        /// </summary>
        /// <param name="jt"></param>
        private void ProcessOrdersMessage(JToken jt)
        {
            var payload = jt["result"]["data"]["value"]["payload"];

            if (jt["result"]["data"]["value"].Value <string>("type") == "snapshot")
            {
                foreach (var item in payload.Children())
                {
                    var          order = item.First();
                    OrdersUpdate t     = new OrdersUpdate
                    {
                        InstrumentId  = order.Value <int>("instrument"),
                        AccountId     = order.Value <long>("accountId"),
                        OrderId       = order.Value <long>("id"),
                        Status        = order.Value <string>("status"),
                        Side          = order.Value <string>("side") == "BUY" ? Side.BUY : Side.SELL,
                        OrderType     = order.Value <string>("type") == "LIMIT" ? OrderType.LIMIT : OrderType.POST_ONLY,
                        TimeInForce   = order.Value <string>("timeInForce") == "GTC" ? TimeInForce.GTC : order.Value <string>("timeInForce") == "IOC" ? TimeInForce.IOC : TimeInForce.FOK,
                        InitialSize   = order.Value <decimal>("initialSize"),
                        RemainingSize = order.Value <decimal>("remainingSize"),
                        Price         = GetDecimal(order["price"]),
                        CreationTime  = GetTimeUTC(order["creationTime"]),
                        UpdateTime    = GetTimeUTC(order["updateTime"]),
                        IsSnapshot    = true,
                    };
                    Orders?.Invoke(this, t);
                }
            }
            else
            {
                var          order = payload;
                OrdersUpdate t     = new OrdersUpdate
                {
                    InstrumentId  = order.Value <int>("instrument"),
                    AccountId     = order.Value <long>("accountId"),
                    OrderId       = order.Value <long>("id"),
                    Status        = order.Value <string>("status"),
                    Side          = order.Value <string>("side") == "BUY" ? Side.BUY : Side.SELL,
                    OrderType     = order.Value <string>("type") == "LIMIT" ? OrderType.LIMIT : OrderType.POST_ONLY,
                    TimeInForce   = order.Value <string>("timeInForce") == "GTC" ? TimeInForce.GTC : order.Value <string>("timeInForce") == "IOC" ? TimeInForce.IOC : TimeInForce.FOK,
                    InitialSize   = order.Value <decimal>("initialSize"),
                    RemainingSize = order.Value <decimal>("remainingSize"),
                    Price         = GetDecimal(order["price"]),
                    CreationTime  = GetTimeUTC(order["creationTime"]),
                    UpdateTime    = GetTimeUTC(order["updateTime"]),
                    IsSnapshot    = false
                };
                Orders?.Invoke(this, t);
            }
        }
示例#4
0
        public override void AddOrder(string jsonPayload)
        {
            Console.WriteLine($"OrderService -> AddOrder : {jsonPayload}");

            var orderToCreate = JsonConvert.DeserializeObject <Order>(jsonPayload);

            // Call Data Layer and store the order into database
            if (!_list.Contains(orderToCreate))
            {
                _list.Add(orderToCreate);
            }

            // Rerender HTML observer
            OrdersUpdate?.Invoke(GetAllOrders());
        }