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