Пример #1
0
        /// <summary>
        /// ACCOUNT BALANCES
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Balances> FetchBalances(Dictionary <string, object> args = null)
        {
            var _result = new Balances();

            var _markets = await publicApi.LoadMarkets();

            if (_markets.success == true)
            {
                privateClient.ExchangeInfo.ApiCallWait(TradeType.Private);

                var _params = privateClient.MergeParamsAndArgs(args);

                var _json_value = await privateClient.CallApiPost1Async("/v2/balance/", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _balances = privateClient.DeserializeObject <JToken>(_json_value.Content);
                    {
                        foreach (var _currency_id in _markets.CurrencyNames)
                        {
                            if (_balances.SelectToken($"{_currency_id.Key}_available") != null)
                            {
                                var _balance = new BBalanceItem
                                {
                                    free = _balances[$"{_currency_id.Key}_available"].Value <decimal>(),
                                    used = _balances[$"{_currency_id.Key}_reserved"].Value <decimal>()
                                };

                                _balance.currency = _currency_id.Value;
                                _balance.total    = _balance.free + _balance.used;

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

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

            return(_result);
        }
Пример #2
0
        /// <summary>
        /// ACCOUNT BALANCE
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Balance> FetchBalance(string base_name, string quote_name, Dictionary <string, object> args = null)
        {
            var _result = new Balance();

            var _market = await publicApi.LoadMarket(_result.MakeMarketId(base_name, quote_name));

            if (_market.success == true)
            {
                privateClient.ExchangeInfo.ApiCallWait(TradeType.Private);

                var _params = privateClient.MergeParamsAndArgs(args);

                var _json_value = await privateClient.CallApiPost1Async($"/v2/balance/{_market.result.symbol}/", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _balances = privateClient.DeserializeObject <JToken>(_json_value.Content);
                    {
                        var _base_id = _market.result.baseId;
                        if (_balances.SelectToken($"{_base_id}_available") != null)
                        {
                            var _balance = new BBalanceItem
                            {
                                free = _balances[$"{_base_id}_available"].Value <decimal>(),
                                used = _balances[$"{_base_id}_reserved"].Value <decimal>()
                            };

                            _balance.currency = base_name;
                            _balance.total    = _balance.free + _balance.used;

                            _result.result = _balance;
                        }
                    }
                }

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

            return(_result);
        }
Пример #3
0
        /// <summary>
        /// bithumb 거래소 회원 지갑 정보
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Balances> FetchBalances(Dictionary <string, object> args = null)
        {
            var _result = new Balances();

            var _markets = await publicApi.LoadMarkets();

            if (_markets.success == true)
            {
                privateClient.ExchangeInfo.ApiCallWait(TradeType.Private);

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

                    privateClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await privateClient.CallApiPost1Async("/info/balance", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = privateClient.DeserializeObject <BBalance>(_json_value.Content);
                    if (_json_data.success == true)
                    {
                        foreach (var _coin_id in _markets.CurrencyNames)
                        {
                            var _base_id = _coin_id.Key.ToLower();
                            if (_json_data.data.SelectToken($"total_{_base_id}") == null)
                            {
                                continue;
                            }

                            var _balance = new BBalanceItem()
                            {
                                currency = _coin_id.Value,

                                free  = _json_data.data[$"available_{_base_id}"].Value <decimal>(),
                                used  = _json_data.data[$"in_use_{_base_id}"].Value <decimal>(),
                                total = _json_data.data[$"total_{_base_id}"].Value <decimal>(),

                                misu       = _json_data.data[$"misu_{_base_id}"].Value <decimal>(),
                                xcoin_last = (_base_id != "krw") ? _json_data.data[$"xcoin_last_{_base_id}"].Value <decimal>() : 0
                            };

                            _result.result.Add(_balance);
                        }
                    }
                    else
                    {
                        _json_result.SetResult(_json_data);
                    }
                }

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

            return(_result);
        }
Пример #4
0
        /// <summary>
        /// bithumb 거래소 회원 지갑 정보
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Balance> FetchBalance(string base_name, string quote_name, Dictionary <string, object> args = null)
        {
            var _result = new Balance();

            var _currency_id = await publicApi.LoadCurrencyId(base_name);

            if (_currency_id.success == true)
            {
                privateClient.ExchangeInfo.ApiCallWait(TradeType.Private);

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

                    privateClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await privateClient.CallApiPost1Async("/info/balance", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = privateClient.DeserializeObject <BBalance>(_json_value.Content);
                    if (_json_data.success == true)
                    {
                        var _base_id = _currency_id.result;

                        if (_json_data.data.SelectToken($"total_{_base_id}") != null)
                        {
                            var _balance = new BBalanceItem()
                            {
                                currency = base_name,

                                free  = _json_data.data[$"available_{_base_id}"].Value <decimal>(),
                                used  = _json_data.data[$"in_use_{_base_id}"].Value <decimal>(),
                                total = _json_data.data[$"total_{_base_id}"].Value <decimal>(),

                                misu       = _json_data.data[$"misu_{_base_id}"].Value <decimal>(),
                                xcoin_last = _json_data.data[$"xcoin_last"].Value <decimal>()
                            };

                            _result.result = _balance;
                        }
                    }
                    else
                    {
                        _json_result.SetResult(_json_data);
                    }
                }

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

            return(_result);
        }