Esempio n. 1
0
        /// <summary>
        /// Fetch price change statistics
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Tickers> FetchTickers(Dictionary <string, object> args = null)
        {
            var _result = new Tickers();

            var _markets = await this.LoadMarkets();

            if (_markets.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _params = publicClient.MergeParamsAndArgs(args);

                var _json_value = await publicClient.CallApiGet1Async("/ticker/ALL", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject <BTickers>(_json_value.Content);
                    if (_json_data.statusCode == 0)
                    {
                        var _timestamp = _json_data.result["date"].Value <long>();

                        foreach (var _t in _json_data.result)
                        {
                            if (_t.Value.GetType() == typeof(JValue))
                            {
                                continue;
                            }

                            var _ticker = publicClient.DeserializeObject <BTickerItem>(_t.Value.ToString());
                            {
                                _ticker.symbol    = _t.Key;
                                _ticker.timestamp = _timestamp;

                                _result.result.Add(_ticker);
                            }
                        }
                    }
                    else
                    {
                        var _message = publicClient.GetErrorMessage(_json_data.statusCode);
                        _json_result.SetFailure(
                            _message,
                            ErrorCode.ResponseDataError
                            );
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 2
0
        /// <summary>
        /// Fetch price change statistics
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <Tickers> FetchTickers(Dictionary <string, object> args = null)
        {
            var _result = new Tickers();

            var _markets = await this.LoadMarkets();

            if (_markets.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("command", "returnTicker");

                    if (args != null)
                    {
                        foreach (var _a in args)
                        {
                            if (_params.ContainsKey(_a.Key) == true)
                            {
                                _params.Remove(_a.Key);
                            }

                            _params.Add(_a.Key, _a.Value);
                        }
                    }
                }

                var _json_value = await publicClient.CallApiGet1Async("", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _tickers = publicClient.DeserializeObject <Dictionary <string, JToken> >(_json_value.Content);
                    {
                        foreach (var _t in _tickers)
                        {
                            var _ticker = publicClient.DeserializeObject <PTickerItem>(_t.Value.ToString());

                            _ticker.symbol    = _t.Key;
                            _ticker.timestamp = CUnixTime.NowMilli;

                            _result.result.Add(_ticker);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 3
0
        /// <summary>
        /// Fetch price change statistics
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Tickers> FetchTickersAsync(Dictionary <string, object> args = null)
        {
            var _result = new Tickers();

            var _markets = await this.LoadMarketsAsync();

            if (_markets.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                //var _asset_pairs = new StringBuilder();
                //{
                //    foreach (var _market in _markets.result)
                //        _asset_pairs.Append($"{_market.Value.symbol},");
                //    _asset_pairs.Length--;
                //}

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("pair", String.Join(",", _markets.result.Select(m => m.Value.symbol)));

                    publicClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await publicClient.CallApiGet1Async("/0/public/Ticker", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject <JObject>(_json_value.Content);
                    {
                        var _tickers = publicClient.DeserializeObject <Dictionary <string, JToken> >(_json_data["result"].ToString());

                        foreach (var _t in _tickers)
                        {
                            var _ticker = publicClient.DeserializeObject <KTickerItem>(_t.Value.ToString());

                            _ticker.symbol    = _t.Key;
                            _ticker.timestamp = CUnixTime.NowMilli;

                            _result.result.Add(_ticker);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 4
0
        /// <summary>
        /// Fetch price change statistics
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <Tickers> FetchTickers(Dictionary <string, object> args = null)
        {
            var _result = new Tickers();

            var _markets = await this.LoadMarkets();

            if (_markets.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _params = publicClient.MergeParamsAndArgs(args);

                var _currency_pairs = "";
                foreach (var _market in _markets.result.GroupBy(m => m.Value.quoteName))
                {
                    if (String.IsNullOrEmpty(_currency_pairs) == false)
                    {
                        _currency_pairs += "/";
                    }
                    _currency_pairs += _market.Key;
                }

                var _json_value = await publicClient.CallApiGet1Async($"/tickers/{_currency_pairs}", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject <CTickers>(_json_value.Content);
                    if (_json_data.success == true)
                    {
                        foreach (var _ticker in _json_data.result)
                        {
                            _ticker.symbol = _ticker.symbol.Replace(':', '/');

                            _result.result.Add(_ticker);
                        }
                    }
                    else
                    {
                        _json_result.SetFailure(_json_data.message);
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 5
0
        /// <summary>
        /// Fetch price change statistics
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <Tickers> FetchTickers(Dictionary <string, object> args = null)
        {
            var _result = new Tickers();

            var _markets = await this.LoadMarkets();

            if (_markets.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("currency", "all");

                    publicClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await publicClient.CallApiGet1Async("/ticker", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _tickers = publicClient.DeserializeObject <Dictionary <string, JToken> >(_json_value.Content);
                    {
                        var _timestamp = _tickers["timestamp"].Value <long>() * 1000;

                        foreach (var _t in _tickers)
                        {
                            if (_t.Value.GetType() == typeof(JValue))
                            {
                                continue;
                            }

                            var _ticker = publicClient.DeserializeObject <CTickerItem>(_t.Value.ToString());

                            _ticker.symbol    = _t.Key;
                            _ticker.timestamp = _timestamp;

                            _result.result.Add(_ticker);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 6
0
        /// <summary>
        /// Fetch price change statistics
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <Tickers> FetchTickers(Dictionary <string, object> args = null)
        {
            var _result = new Tickers();

            var _markets = await this.LoadMarkets();

            if (_markets.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                //var _asset_pairs = new StringBuilder();
                //{
                //    foreach (var _market in _markets.result)
                //        _asset_pairs.Append($"{_market.Value.symbol},");
                //    _asset_pairs.Length--;
                //}

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("extraCcyPairs", String.Join(",", _markets.result.Select(m => m.Value.symbol)));

                    publicClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await publicClient.CallApiGet1Async("money/ticker", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = publicClient.DeserializeObject <ATickers>(_json_value.Content);
                    {
                        foreach (var _t in _json_data.result)
                        {
                            var _ticker = _t.Value;
                            _ticker.symbol = _t.Key;

                            _result.result.Add(_ticker);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 7
0
        /// <summary>
        /// Fetch price change statistics
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Tickers> FetchTickers(Dictionary <string, object> args = null)
        {
            var _result = new Tickers();

            var _markets = await this.LoadMarkets();

            if (_markets.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _params = publicClient.MergeParamsAndArgs(args);

                var _json_value = await publicClient.CallApiGet1Async("/1/tickers", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _tickers = publicClient.DeserializeObject <Dictionary <string, GTickerItem> >(_json_value.Content);
                    {
                        foreach (var _t in _tickers)
                        {
                            var _ticker = _t.Value;

                            _ticker.symbol = _t.Key;
                            // openPrice 제공안함
                            _ticker.average   = (_ticker.lastPrice + _ticker.openPrice) / 2;
                            _ticker.timestamp = CUnixTime.NowMilli;
                            if (_ticker.baseVolume != 0)
                            {
                                _ticker.vwap = _ticker.quoteVolume / _ticker.baseVolume;
                            }

                            _result.result.Add(_ticker);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 8
0
        /// <summary>
        /// Fetch price change statistics
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Tickers> FetchTickersAsync(Dictionary <string, object> args = null)
        {
            var _result = new Tickers();

            var _markets = await this.LoadMarketsAsync();

            if (_markets.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _params = publicClient.MergeParamsAndArgs(args);

                var _json_value = await publicClient.CallApiGet1Async("/market/tickers", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _tickers = publicClient.DeserializeObject <HTickers>(_json_value.Content);
                    {
                        foreach (var _ticker in _tickers.result)
                        {
                            if (_markets.result.Where(m => m.Value.symbol == _ticker.symbol).SingleOrDefault().Key == null)
                            {
                                continue;
                            }
                            _ticker.average     = (_ticker.lastPrice + _ticker.openPrice) / 2;
                            _ticker.changePrice = _ticker.lastPrice - _ticker.openPrice;
                            _ticker.timestamp   = CUnixTime.NowMilli;

                            _result.result.Add(_ticker);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 9
0
        /// <summary>
        /// Fetch price change statistics
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <Tickers> FetchTickers(Dictionary <string, object> args = null)
        {
            var _result = new Tickers();

            var _markets = await this.LoadMarkets();

            if (_markets.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _params = publicClient.MergeParamsAndArgs(args);

                var _json_value = await publicClient.CallApiGet1Async("/ticker/24hr", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _tickers = publicClient.DeserializeObject <List <BTickerItem> >(_json_value.Content);
                    {
                        foreach (var _ticker in _tickers)
                        {
                            if (_ticker.symbol == "123456")     // "123456" is a "test symbol/market"
                            {
                                continue;
                            }

                            _result.result.Add(_ticker);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 10
0
        /// <summary>
        /// Fetch price change statistics
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <Tickers> FetchTickers(Dictionary <string, object> args = null)
        {
            var _result = new Tickers();

            var _markets = await this.LoadMarkets();

            if (_markets.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _params = publicClient.MergeParamsAndArgs(args);

                var _json_value = await publicClient.CallApiGet1Async("/v1/allTicker", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _tickers = publicClient.DeserializeObject <Dictionary <string, ZTickerItem> >(_json_value.Content);
                    {
                        foreach (var _ticker in _tickers)
                        {
                            var _symbol = _markets.result.Where(m => m.Value.symbol.Replace("_", "") == _ticker.Key).SingleOrDefault();
                            _ticker.Value.symbol    = _symbol.Value.symbol;
                            _ticker.Value.timestamp = CUnixTime.NowMilli;

                            _result.result.Add(_ticker.Value);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 11
0
        /// <summary>
        /// Fetch price change statistics
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Tickers> FetchTickersAsync(Dictionary <string, object> args = null)
        {
            var _result = new Tickers();

            var _markets = await this.LoadMarketsAsync();

            if (_markets.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _params = publicClient.MergeParamsAndArgs(args);

                var _json_value = await publicClient.CallApiGet1Async("/products", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _tickers = publicClient.DeserializeObject <List <QTickerItem> >(_json_value.Content);
                    {
                        var _timestamp = CUnixTime.NowMilli;

                        foreach (var _ticker in _tickers)
                        {
                            _ticker.timestamp = _timestamp;
                            _result.result.Add(_ticker);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 12
0
        /// <summary>
        /// Fetch price change statistics
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Tickers> FetchTickersAsync(Dictionary <string, object> args = null)
        {
            var _result = new Tickers();

            var _markets = await this.LoadMarketsAsync();

            if (_markets.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _params = publicClient.MergeParamsAndArgs(args);

                var _json_value = await publicClient.CallApiGet1Async("/v1/tickers", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _tickers = publicClient.DeserializeObject <List <BTickerItem> >(_json_value.Content);
                    {
                        foreach (var _ticker in _tickers)
                        {
                            _ticker.symbol = _ticker.symbol.ToLower();         // bitfinex markets의 symbol은 lowercase 입니다.

                            _result.result.Add(_ticker);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 13
0
        /// <summary>
        /// Fetch price change statistics
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Tickers> FetchTickers(Dictionary <string, object> args = null)
        {
            var _result = new Tickers();

            var _markets = await this.LoadMarkets();

            if (_markets.success == true)
            {
                okexapiClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _params = publicClient.MergeParamsAndArgs(args);

                var _json_value = await okexapiClient.CallApiGet1Async("/tickers.do", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = okexapiClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = okexapiClient.DeserializeObject <OTickers>(_json_value.Content);
                    {
                        foreach (var _ticker in _json_data.result)
                        {
                            _ticker.timestamp = _json_data.timestamp * 1000;
                            _result.result.Add(_ticker);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 14
0
        /// <summary>
        /// Fetch price change statistics
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Tickers> FetchTickers(Dictionary <string, object> args = null)
        {
            var _result = new Tickers();

            var _markets = await this.LoadMarkets();

            if (_markets.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                var _params = publicClient.MergeParamsAndArgs(args);

                var _json_value = await publicClient.CallApiGet1Async("/v1.1/public/getmarketsummaries", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _tickers = publicClient.DeserializeObject <BTickerItems>(_json_value.Content);
                    {
                        foreach (var _ticker in _tickers.result)
                        {
                            _result.result.Add(_ticker);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 15
0
        /// <summary>
        /// Fetch price change statistics
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Tickers> FetchTickersAsync(Dictionary <string, object> args = null)
        {
            var _result = new Tickers();

            var _markets = await this.LoadMarketsAsync();

            if (_markets.success == true)
            {
                publicClient.ExchangeInfo.ApiCallWait(TradeType.Public);

                //var _symbols = new StringBuilder();
                //{
                //    foreach (var _market in _markets.result)
                //        _symbols.Append(_market.Value.symbol + ",");

                //    if (_symbols.Length > 0)
                //        _symbols.Length--;
                //}

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("markets", String.Join(",", _markets.result.Select(m => m.Value.symbol)));

                    publicClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await publicClient.CallApiGet1Async("/ticker", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = publicClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _tickers = publicClient.DeserializeObject <List <UTickerItem> >(_json_value.Content);
                    {
                        foreach (var _ticker in _tickers)
                        {
                            _ticker.askPrice    = _ticker.closePrice;
                            _ticker.askQuantity = _ticker.closeVolume;
                            _ticker.bidPrice    = _ticker.closePrice;
                            _ticker.bidQuantity = _ticker.closeVolume;

                            _ticker.baseVolume = _ticker.totalQuantity24h;
                            _ticker.average    = (_ticker.lastPrice + _ticker.openPrice) / 2;
                            _ticker.percentage = (_ticker.changePrice / _ticker.openPrice) * 100;

                            _result.result.Add(_ticker);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }