예제 #1
0
        /// <summary>
        /// Cancels the order.
        /// </summary>
        /// <param name="cancelOrder">The cancel order.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">cancelOrder</exception>
        public static void CancelOrder(OsEngine.Entity.Order order)
        {
            List<string> transactions = new List<string>();
            transactions.Add(order.NumberMarket);

            CancelOrderCommand canselOrder = new CancelOrderCommand(_token.Token, transactions);

            clientTwo.CancelOrder(canselOrder);
        }
예제 #2
0
        /// <summary>
        /// Adds the order.
        /// </summary>
        /// <param name="addOrderCommand">The add order message.</param>
        /// <returns></returns>
        public static void AddOrder(OsEngine.Entity.Order order)
        {
            Side type = Side.Buy;

            if(order.Side == OsEngine.Entity.Side.Buy)
            {
                type = Side.Buy;
            }
            if (order.Side == OsEngine.Entity.Side.Sell)
            {
                type = Side.Sell;
            }

            decimal volume = order.Volume;

            Sec security = Securities.Find(s => s.NameInRest == order.SecurityNameCode);

            AddOrderCommand newCommand = new AddOrderCommand(_token.Token,OrderType.Limit, type, security.NameInSocket, volume);

            newCommand.Price = order.Price;
            newCommand.Userref = order.NumberUser.ToString();

            clientTwo.AddOrder(newCommand);
        }
예제 #3
0
        private static void Client_OpenOrdersReceived(object sender, Events.KrakenPrivateEventArgs<OpenOrdersMessage> e)
        {
            //OrdersUpdateEvent

            List<Order> orders = e.PrivateMessage.Orders.ToList();

            for (int i = 0; i < orders.Count; i++)
            {
                Order o = orders[i];

                int numberUser = 0;

                if (o.UserRef == 0)
                {
                    OrdersRef myRef = _ordersRefs.Find(ord => ord.MarketRef == o.OrderId);
                    if(myRef == null)
                    {
                        continue;
                    }
                    else
                    {
                        numberUser = myRef.UserRef;
                    }
                }
                else if(_ordersRefs.Find(ord => ord.UserRef == o.UserRef) == null)
                {
                    OrdersRef newRef = new OrdersRef();
                    newRef.MarketRef = o.OrderId;
                    newRef.UserRef = Convert.ToInt32(o.UserRef);
                    _ordersRefs.Add(newRef);

                    numberUser = Convert.ToInt32(o.UserRef);
                }

                OsEngine.Entity.Order orderOsEngine = new OsEngine.Entity.Order();

                orderOsEngine.NumberMarket = o.OrderId;
                orderOsEngine.NumberUser = numberUser;

                DateTime time = new DateTime(1970, 1, 1).AddSeconds(Convert.ToDouble(o.OpenTimestamp));

                orderOsEngine.TimeCallBack = time;

                if (o.Status == "canceled" ||
                    o.Status == "expired")
                {
                    orderOsEngine.State = OsEngine.Entity.OrderStateType.Cancel;
                }

                else if (o.Status == "closed" ||
                    o.Status == "canceled" ||
                    o.Status == "expired")
                {
                    orderOsEngine.State = OsEngine.Entity.OrderStateType.Done;
                }

                else
                {
                    orderOsEngine.State = OsEngine.Entity.OrderStateType.Activ;
                }

                if (OrdersUpdateEvent != null)
                {
                    OrdersUpdateEvent(orderOsEngine);
                }
            }


            // = (sender, e) => Console.WriteLine($"OpenOrders received");
        }