public IEnumerable <Order> OpenedOrders(Market market)
        {
            // todo: test it
            var result  = new List <Order>();
            var apiKeys = market.ApiKeys(ApiKeyRole.Trade);

            var parameters = new Tuple <string, string> [2];

            parameters[0] = Tuple.Create(EndPoints.CommandTag, EndPoints.GetBalances);
            parameters[1] = Tuple.Create("currencyPair", "all");

            var query = Connection.PrivateGetQuery <Dictionary <string, List <PoloniexOpenedOrdersDataType> > >(
                EndPoints.GetOpenedOrders, apiKeys, PostParameters(apiKeys.PublicKey, parameters));

            foreach (var key in query.Keys)
            {
                Pair pair;
                if (!PoloniexPairs.TryParsePair(key, out pair))
                {
                    continue;
                }

                var orders = query[key];
                result.AddRange(orders.Select(order => order.ToOrder(market, pair)));
            }

            return(result);
        }
예제 #2
0
        public Tick Tick(Pair pair)
        {
            var parameters = new Tuple <string, string> [1];

            parameters[0] = new Tuple <string, string>(EndPoints.CommandTag, EndPoints.GetTicker);

            var query = Connection.PublicGetQuery <Dictionary <string, PoloniexTickerDataType> >(EndPoints.Public, parameters);
            var key   = PoloniexPairs.AsString(pair);

            return(query.ContainsKey(key) ? query[key].ToTick() : null);
        }
예제 #3
0
        public static Pair24HoursStatistic ToPairsStatistic(this PoloniexTickerDataType tickerDataType, string pairName)
        {
            Pair pair;

            if (!PoloniexPairs.TryParsePair(pairName, out pair))
            {
                return(null);
            }

            var summary = new Pair24HoursStatistic(pair, tickerDataType.High24Hr, tickerDataType.Low24Hr,
                                                   tickerDataType.BaseVolume, tickerDataType.QuoteVolume,
                                                   tickerDataType.Last, tickerDataType.DailyChange);

            return(summary);
        }
예제 #4
0
        public IEnumerable <HistoryPrice> MarketHistoryData(Pair pair, TimeframeType timeframe, TimeRange timeRange)
        {
            var start  = _timeCorrector.ToMarketTime(timeRange.Start);
            var finish = _timeCorrector.ToMarketTime(timeRange.Finish);

            var parameters = new Tuple <string, string> [5];

            parameters[0] = new Tuple <string, string>(EndPoints.CommandTag, EndPoints.GetHistoryData);
            parameters[1] = new Tuple <string, string>("currencyPair", PoloniexPairs.AsString(pair));
            parameters[2] = new Tuple <string, string>("start", PoloniexTools.DateTimeToUnixTimeStamp(start).ToString());
            parameters[3] = new Tuple <string, string>("end", PoloniexTools.DateTimeToUnixTimeStamp(finish).ToString());
            parameters[4] = new Tuple <string, string>("period", PoloniexTools.TimeFrameToSeconds(timeframe).ToString());

            var query = Connection.PublicGetQuery <List <PoloniexHistoryDataType> >(EndPoints.Public, parameters);

            return(query.Select(item => item.ToHistory(pair)));
        }
        public IEnumerable <Order> OpenedOrders(Market market, Pair pair)
        {
            // todo: test it
            var result  = new List <Order>();
            var apiKeys = market.ApiKeys(ApiKeyRole.Trade);

            var parameters = new Tuple <string, string> [2];

            parameters[0] = Tuple.Create(EndPoints.CommandTag, EndPoints.GetBalances);
            parameters[1] = Tuple.Create("currencyPair", PoloniexPairs.AsString(pair));

            var query = Connection.PrivateGetQuery <List <PoloniexOpenedOrdersDataType> >(
                EndPoints.GetOpenedOrders, apiKeys, PostParameters(apiKeys.PublicKey, parameters));

            result.AddRange(query.Select(order => order.ToOrder(market, pair)));

            return(result);
        }
예제 #6
0
        public IEnumerable <MarketHistory> MarketTradeHistory(Pair pair, TimeRange timeRange)
        {
            var paramsCount = timeRange != null ? 4 : 2;
            var parameters  = new Tuple <string, string> [paramsCount];

            parameters[0] = new Tuple <string, string>(EndPoints.CommandTag, EndPoints.GetMarketHistory);
            parameters[1] = new Tuple <string, string>("currencyPair", PoloniexPairs.AsString(pair));
            if (timeRange != null)
            {
                var start  = _timeCorrector.ToMarketTime(timeRange.Start);
                var finish = _timeCorrector.ToMarketTime(timeRange.Finish);
                parameters[2] = new Tuple <string, string>("start", PoloniexTools.DateTimeToUnixTimeStamp(start).ToString());
                parameters[3] = new Tuple <string, string>("end", PoloniexTools.DateTimeToUnixTimeStamp(finish).ToString());
            }

            var query = Connection.PublicGetQuery <List <PoloniexTradeHistoryDataType> >(EndPoints.Public, parameters);

            return(query.Select(item => item.ToHistory(pair)));
        }
예제 #7
0
        public OrderBook OrderBook(Pair pair, int depth, OrderBookType orderBookType)
        {
            var parameters = new Tuple <string, string> [3];

            parameters[0] = new Tuple <string, string>(EndPoints.CommandTag, EndPoints.GetOrderBook);
            parameters[1] = new Tuple <string, string>("currencyPair", PoloniexPairs.AsString(pair));
            parameters[2] = new Tuple <string, string>("depth", depth.ToString());

            var query  = Connection.PublicGetQuery <PoloniexOrderBookDataType>(EndPoints.Public, parameters);
            var result = query.ToOrderBook(pair);

            if (orderBookType == OrderBookType.Buy)
            {
                result.ReplaceBids(null);
            }

            if (orderBookType == OrderBookType.Sell)
            {
                result.ReplaceAsk(null);
            }

            return(result);
        }
예제 #8
0
        public static PairOfMarket ToPair(this PoloniexTickerDataType pairDataType, string pairName, Market market)
        {
            Pair pair;

            return(PoloniexPairs.TryParsePair(pairName, out pair) ? new PairOfMarket(pair, market, !pairDataType.IsFrozen) : null);
        }