Ejemplo n.º 1
0
        /// <summary>
        /// Check ETH, ETC, and KRW and BTC balances. Request or cancel BTC withdrawals.
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <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>();
                {
                    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 privateClient.CallApiGet1Async("/user/balances", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _balances = privateClient.DeserializeObject <Dictionary <string, KBalanceItem> >(_json_value.Content);

                    foreach (var _currency_id in _markets.CurrencyNames)
                    {
                        var _balance = _balances.Where(b => b.Key == _currency_id.Key).SingleOrDefault().Value;
                        if (_balance != null)
                        {
                            _balance.used     = _balance.trade_in_use + _balance.withdrawal_in_use;
                            _balance.total    = _balance.used + _balance.free;
                            _balance.currency = _currency_id.Value;

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

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

            return(_result);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Get wallet information.
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange: [walletId]</param>
        /// <returns></returns>
        public override async Task <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 _wallet_id = __wallet_id;

                var _params = new Dictionary <string, object>();
                {
                    privateClient.MergeParamsAndArgs(_params, args);

                    if (_params.ContainsKey("walletId") == true)
                    {
                        _wallet_id = _params["walletId"].ToString();
                        _params.Remove("walletId");
                    }
                }

                var _json_value = await privateClient.CallApiGet1Async($"/wallets/{_wallet_id}", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = privateClient.DeserializeObject <TWalletItem>(_json_value.Content);
                    {
                        foreach (var _currency_id in _markets.CurrencyNames)
                        {
                            var _balance = _json_data.balances.Where(b => b.currency == _currency_id.Key).FirstOrDefault();
                            if (_balance == null)
                            {
                                continue;
                            }

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

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

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

            return(_result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Get your account's margin status.
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <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.CallApiGet1Async("/api/v1/user/margin", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = privateClient.DeserializeObject <List <BBalanceItem> >(_json_value.Content);
                    {
                        foreach (var _currency_id in _markets.CurrencyNames)
                        {
                            var _balances = _json_data.Where(b => b.currency == _currency_id.Key);
                            foreach (var _balance in _balances)
                            {
                                if (_currency_id.Value == "BTC")
                                {
                                    var _multiplier = publicApi.publicClient.ExchangeInfo.GetAmountMultiplier("XBTUSD", 1.0m);

                                    _balance.free  = _balance.free / _multiplier;
                                    _balance.total = _balance.total / _multiplier;
                                }

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

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

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

            return(_result);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Get account balance
        /// </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("method", "getAccountInfo");

                    privateClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await privateClient.CallApiGet1Async($"/getAccountInfo", _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 <ZBalances>(_json_value.Content);
                    {
                        foreach (var _currency_id in _markets.CurrencyNames)
                        {
                            var _balance = _json_data.result.Where(b => b.key == _currency_id.Key).SingleOrDefault();
                            {
                                var _balanceItem = new ZBalanceItem();
                                if (_balance != null)
                                {
                                    _balance.total = _balance.free + _balance.used;
                                    _balanceItem   = _balance;
                                }

                                _balanceItem.currency = _currency_id.Value;

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

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

            return(_result);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 전체 계좌 조회
        /// </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("/1/private/balances", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = privateClient.DeserializeObject <GBalances>(_json_value.Content);
                    {
                        foreach (var _currency_id in _markets.CurrencyNames)
                        {
                            var _balance = new GBalanceItem();
                            _balance.currency = _currency_id.Value;

                            if (_json_data.success == true)
                            {
                                if (_json_data.available.ContainsKey(_currency_id.Value))
                                {
                                    _balance.free = _json_data.available[_currency_id.Value].Value <decimal>();
                                }
                                if (_json_data.locked.ContainsKey(_currency_id.Value))
                                {
                                    _balance.used = _json_data.locked[_currency_id.Value].Value <decimal>();
                                }
                                _balance.total = _balance.free + _balance.used;
                            }

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

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

            return(_result);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Get User Account Info
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Balances> FetchBalancesAsync(Dictionary <string, object> args = null)
        {
            var _result = new Balances();

            var _markets = await publicApi.LoadMarketsAsync();

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

                var _params = privateClient.MergeParamsAndArgs(args);

                var _json_value = await privateClient.CallApiPost1Async("/userinfo.do", _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 <JObject>(_json_value.Content);
                    {
                        var _balances = _json_data["info"]["funds"];

                        foreach (var _currency_id in _markets.CurrencyNames)
                        {
                            if (_balances["free"].SelectToken(_currency_id.Key) == null)
                            {
                                continue;
                            }

                            var _balance = new OBalanceItem
                            {
                                free = _balances["free"][_currency_id.Key].Value <decimal>(),
                                used = _balances["freezed"][_currency_id.Key].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);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Returns all of your balances, including available balance, balance on orders, and the estimated BTC value of your balance.
        /// By default, this call is limited to your exchange account; set the "account" POST parameter to "all" to include your margin and lending accounts.
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <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("command", "returnCompleteBalances");
                    _params.Add("account", "all");

                    privateClient.MergeParamsAndArgs(_params, args);
                }

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

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _balances = privateClient.DeserializeObject <Dictionary <string, PBalanceItem> >(_json_value.Content);
                    {
                        foreach (var _currency_id in _markets.CurrencyNames)
                        {
                            if (_balances.ContainsKey(_currency_id.Key) == false)
                            {
                                continue;
                            }

                            var _balance = _balances[_currency_id.Key];

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

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

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

            return(_result);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 전체 계좌 조회
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Balances> FetchBalancesAsync(Dictionary <string, object> args = null)
        {
            var _result = new Balances();

            var _markets = await publicApi.LoadMarketsAsync();

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

                var _params = privateClient.MergeParamsAndArgs(args);

                var _json_value = await privateClient.CallApiGet1Async("/api/accounts/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 <JObject>(_json_value.Content);
                    {
                        foreach (var _currency_id in _markets.CurrencyNames)
                        {
                            var _balance = new CBalanceItem();
                            _balance.currency = _currency_id.Value;

                            if (_json_data["success"].Value <bool>() == true)
                            {
                                if (_json_data.ContainsKey(_currency_id.Key))
                                {
                                    _balance.free = _json_data[_currency_id.Key].Value <decimal>();
                                }
                                if (_json_data.ContainsKey(_currency_id.Key))
                                {
                                    _balance.used = _json_data[$"{_currency_id.Key}_reserved"].Value <decimal>();
                                }
                                _balance.total = _balance.free + _balance.used;
                            }

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

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

            return(_result);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// This method returns the balance, available balance, daily withdrawal limit and maximum withdraw for every currency in your account.
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <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($"money/info", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = privateClient.DeserializeObject <JObject>(_json_value.Content);
                    {
                        var _balances = _json_data["data"]["Wallets"];
                        foreach (var _currency_id in _markets.CurrencyNames)
                        {
                            var _token = _balances.SelectToken(_currency_id.Key);
                            if (_token == null)
                            {
                                continue;
                            }

                            var _balance = new ABalanceItem
                            {
                                free  = _token["Available_Balance"]["value"].Value <decimal>(),
                                total = _token["Balance"]["value"].Value <decimal>()
                            };

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

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

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

            return(_result);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Get account balance
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <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("/0/private/Balance", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _balances = privateClient.DeserializeObject <KResponse <Dictionary <string, decimal> > >(_json_value.Content);
                    {
                        foreach (var _b in _balances.result)
                        {
                            // X-ISO4217-A3 standard currency codes
                            var _baseId = _b.Key;
                            if (_baseId.Substring(0, 1) == "X" || _baseId.Substring(0, 1) == "Z")
                            {
                                _baseId = _baseId.Substring(1, 3);
                            }

                            var _market    = _markets.GetMarketByBaseId(_baseId);
                            var _base_name = _market != null ? _market.baseName : _baseId;

                            _result.result.Add(new BalanceItem
                            {
                                currency = _base_name,
                                free     = _b.Value,
                                total    = _b.Value
                            });
                        }
                    }
                }

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

            return(_result);
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 전체 계좌 조회
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Balances> FetchBalancesAsync(Dictionary <string, object> args = null)
        {
            var _result = new Balances();

            var _markets = await publicApi.LoadMarketsAsync();

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

                var _params = privateClient.MergeParamsAndArgs(args);

                var _json_value = await privateClient.CallApiPost1Async("/v1/userinfo.do", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = privateClient.DeserializeObject <OBalances>(_json_value.Content);
                    {
                        foreach (var _currency_id in _markets.CurrencyNames)
                        {
                            //var _borrow = _json_data.info.funds.borrow.Where(b => b.Key == _currency_id.Key).SingleOrDefault();
                            var _free    = _json_data.info.funds.free.Where(b => b.Key == _currency_id.Key).SingleOrDefault();
                            var _freezed = _json_data.info.funds.freezed.Where(b => b.Key == _currency_id.Key).SingleOrDefault();

                            var _balance = new OBalanceItem
                            {
                                currency = _currency_id.Value,
                                free     = _free.Value,
                                used     = _freezed.Value,
                                total    = _free.Value + _freezed.Value
                            };

                            if (_balance.total > 0)
                            {
                                _result.result.Add(_balance);
                            }
                        }
                    }
                }

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

            return(_result);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Get account balance
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Balances> FetchBalancesAsync(Dictionary <string, object> args = null)
        {
            var _result = new Balances();

            var _markets = await publicApi.LoadMarketsAsync();

            if (_markets.success == true)
            {
                if (args.ContainsKey("account-id") && args["account-id"].ToString() != "")
                {
                    privateClient.ExchangeInfo.ApiCallWait(TradeType.Private);

                    var _params = privateClient.MergeParamsAndArgs(args);

                    var _json_value = await privateClient.CallApiGet1Async($"/v1/account/accounts/{args["account-id"].ToString()}/balance", _params);

#if DEBUG
                    _result.rawJson = _json_value.Content;
#endif
                    var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                    if (_json_result.success == true)
                    {
                        var _json_data = privateClient.DeserializeObject <HBalances>(_json_value.Content);
                        {
                            foreach (var _currency_id in _markets.CurrencyNames)
                            {
                                var _balances = _json_data.result.Where(b => b.currency == _currency_id.Key);
                                foreach (var _balance in _balances)
                                {
                                    _balance.currency = _currency_id.Value;
                                    _balance.total    = _balance.free + _balance.used;

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

                    _result.SetResult(_json_result);
                }
                else
                {
                    _result.SetFailure("account-id required. args[account-id]");
                }
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// ACCOUNT BALANCES
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <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 DEBUG
                _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);
        }
Ejemplo n.º 14
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <Balances> FetchBalancesAsync(Dictionary <string, object> args = null)
        {
            var _result = new Balances();

            var _markets = await publicApi.LoadMarketsAsync();

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

                var _params = privateClient.MergeParamsAndArgs(args);

                var _json_value = await privateClient.CallApiPost1Async("/v2/account/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 <Dictionary <string, JToken> >(_json_value.Content);
                    {
                        foreach (var _currency_id in _markets.CurrencyNames)
                        {
                            if (_balances.ContainsKey(_currency_id.Key) == false)
                            {
                                continue;
                            }

                            var _balance = privateClient.DeserializeObject <CBalanceItem>(_balances[_currency_id.Key].ToString());
                            if (_balance != null)
                            {
                                _balance.currency = _currency_id.Value;
                                _balance.used     = _balance.total - _balance.free;

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

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

            return(_result);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Get current account information.
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <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.CallApiGet1Async("/account", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = privateClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = privateClient.DeserializeObject <JObject>(_json_value.Content);
                    {
                        var _json_balances = privateClient.DeserializeObject <List <BBalanceItem> >(_json_data["balances"].ToString());

                        foreach (var _currency_id in _markets.CurrencyNames)
                        {
                            var _balances = _json_balances.Where(b => b.currency == _currency_id.Key);

                            foreach (var _balance in _balances)
                            {
                                _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);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Used to retrieve all balances from your account.
        /// </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("/api/v1/fund/allAccount", _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 <BBalances>(_json_value.Content);
                    {
                        foreach (var _currency_id in _markets.CurrencyNames)
                        {
                            var _balance = _balances.result.Where(b => b.currency == _currency_id.Key).SingleOrDefault();
                            if (_balance != null)
                            {
                                //_balance.total = _balance.free + _balance.used;
                                _balance.currency = _currency_id.Value;

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

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

            return(_result);
        }
Ejemplo n.º 17
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);
        }