コード例 #1
0
        public TradeOrderStatusInfo GetOrderStatus(string aUuid)
        {
            if (!IsCredentialsSet)
            {
                throw new Exception("No Credentials were set");
            }
            var lOrderNumber = Convert.ToInt64(aUuid);
            var lResult      = new TradeOrderStatusInfo()
            {
                ID = aUuid
            };

            using (PoloniexClient lClient = new PoloniexClient())
            {
                var lResponse = lClient.GetOrderStatus(lOrderNumber);
                if (!lResponse.Success)
                {
                    throw new Exception("Unable to retrieve order info from Poloniex");
                }
                if (Convert.ToBoolean(lResponse.Data.success) && string.IsNullOrEmpty(lResponse.Data.error))
                {
                    if (!lResponse.Data.result.TryGetValue(aUuid, out PoloniexOrderStatus lOrderSummary))
                    {
                        throw new Exception("Order info not found");
                    }
                    lResult.Rate      = lOrderSummary.rate;
                    lResult.Completed = false;
                    lResult.Cancelled = false;
                }
                else
                {
                    var lOrderTradesResponse = lClient.GetOrderTrades(lOrderNumber);
                    if (!lOrderTradesResponse.Success)
                    {
                        throw new Exception("Unable to retrieve order info from Poloniex");
                    }
                    lResult.Cancelled = !string.IsNullOrEmpty(lOrderTradesResponse.Data.error);
                    if (lResult.Completed = !lResult.Cancelled)
                    {
                        lResult.Rate = lOrderTradesResponse.Data.Average(lOrder => lOrder.rate);
                    }
                }
            }
            return(lResult);
        }