Пример #1
0
        public MarketHistory(int id, DateTime timeStamp, double quantity, double price, double total, string fillType, string orderType)
        {
            Id        = id;
            TimeStamp = timeStamp;
            Quantity  = quantity;
            Price     = price;
            Total     = total;
            FillType  = fillType;

            if (orderType == "SELL")
            {
                OrderType = Order.Type.sell;
            }
            else
            {
                OrderType = Order.Type.buy;
            }

            _marketHistoryList.Add(Id);
            _marketHistoryList.Add(TimeStamp);
            _marketHistoryList.Add(Quantity);
            _marketHistoryList.Add(Price);
            _marketHistoryList.Add(Total);
            _marketHistoryList.Add(FillType);
            _marketHistoryList.Add(OrderType);
        }
Пример #2
0
        public void CreateOrder(Order.Type type, decimal amount, decimal price = 0)
        {
            Order newOrder = new Order(type, amount, price);

            if (newOrder != null)
            {
                playerOrders.Add(newOrder);
            }
        }
Пример #3
0
 public OrderBook(List <Order> order, Order.Type orderType)
 {
     if (orderType == Order.Type.buy)
     {
         Buys = order;
     }
     else if (orderType == Order.Type.sell)
     {
         Sells = order;
     }
 }
        /// <summary>
        /// Place Order Async
        /// </summary>
        /// <param name="symbol">trade symbol</param>
        /// <param name="type">type</param>
        /// <param name="amount">buy/sell amout, when use market price, this is amout to sell, or amout used to by</param>
        /// <param name="price">price, -1 to use market price</param>
        /// <param name="retryNum">retry if failed</param>
        /// <param name="callback">order if suc</param>
        public void PlaceOrder(string symbol, Order.Type type, float amount, float price = -1, int retryNum = 0, System.Action <System.Nullable <Order> > callback = null)
        {
            if (accountId != "")
            {
                var request = new Huobi.SDK.Model.Request.Order.PlaceOrderRequest()
                {
                    AccountId = accountId,
                    amount    = amount,//.ToString("0.0000"),
                    source    = "spot-api",
                    price     = price < 0 ? /*"0"*/ 0 : price /*.ToString("0.0000")*/,
                    symbol    = symbol,
                    type      = type.ToString() + (price < 0 ? "-market" : "-limit")
                };

                System.Action <int> task = null;
                task = (remain) =>
                {
                    orderClient.PlaceOrderAsync(request,
                                                (id, ec, em) =>
                    {
                        if (ec == null && em == null)
                        {
                            Order order = new Order(this, long.Parse(id))
                            {
                                amount = amount,
                                price  = price,
                                symbol = symbol,
                                type   = type,
                            };

                            callback?.Invoke(order);
                        }
                        else if (remain-- > 0)
                        {
                            UnityEngine.Debug.Log(ec + "\n" + em + "\nretry: " + remain);
                            task(remain);
                        }
                        else
                        {
                            UnityEngine.Debug.Log(ec + "\n" + em);
                            callback?.Invoke(null);
                        }
                    });
                };
                task(retryNum);
            }
            else
            {
                UnityEngine.Debug.Log("connection is invalid, try later");
                callback?.Invoke(null);
            }
        }
Пример #5
0
    public void DropdownChanged(int value)
    {
        type = (Order.Type)value;

        //Updating visuals
        float width = transform.parent.GetComponent <RectTransform>().sizeDelta.x;

        if (value < 2) //the first two orders need a value Assigned
        {
            //showing the input field
            dropdown.GetComponent <RectTransform>().sizeDelta = new Vector2(width / 2, 30);
            inputField.gameObject.SetActive(true);
        }
        else
        {
            //hiding the input field
            dropdown.GetComponent <RectTransform>().sizeDelta = new Vector2(width, 30);
            inputField.gameObject.SetActive(false);
        }

        checkValues();
    }
Пример #6
0
        /// <summary>
        /// Used to get retrieve the orderbook for a given market
        /// </summary>
        /// <param name="market">requires a string literal for the market (ex: BTC-LTC)</param>
        /// <param name="orderType">requires a Order.Type enum to pick the type of order (e.g buy, sell or both)</param>
        /// <returns>The order book for the specified market</returns>
        public static OrderBook GetOrderBook(string market, Order.Type orderType)
        {
            dynamic response = JsonConvert.DeserializeObject(HTTPMethods.HttpGet(Constants.baseUrl + "/public/getorderbook?market=" + market + "&type=" + orderType.ToString()));

            if (response.success == false)
            {
                throw new Exception("Unable to get data from API: " + response.message.ToString());
            }

            if (response.message == "INVALID_MARKET")
            {
                throw new ArgumentException("This is not a valid market. Use GetMarkets() to get a list of valid markets.");
            }

            List <Order> buyList  = new List <Order>();
            List <Order> sellList = new List <Order>();

            if (orderType == Order.Type.buy)
            {
                foreach (var item in response.result)
                {
                    Order order = new Order(Convert.ToDouble(item.Quantity), Convert.ToDouble(item.Rate));

                    buyList.Add(order);
                }

                OrderBook orderBook = new OrderBook(buyList, orderType);
                return(orderBook);
            }
            else if (orderType == Order.Type.sell)
            {
                foreach (var item in response.result)
                {
                    Order order = new Order(Convert.ToDouble(item.Quantity), Convert.ToDouble(item.Rate));

                    sellList.Add(order);
                }

                OrderBook orderBook = new OrderBook(sellList, orderType);
                return(orderBook);
            }
            else //else the order type will be 'both'
            {
                foreach (var item in response.result.buy)
                {
                    Order order = new Order(Convert.ToDouble(item.Quantity), Convert.ToDouble(item.Rate));

                    buyList.Add(order);
                }
                foreach (var item in response.result.sell)
                {
                    Order order = new Order(Convert.ToDouble(item.Quantity), Convert.ToDouble(item.Rate));

                    sellList.Add(order);
                }

                //Sort by descending order
                buyList.Reverse();

                OrderBook orderBook = new OrderBook(buyList, sellList);
                return(orderBook);
            }

            throw new Exception("Error: Should not have got to this point");
        }