/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }