/// <summary> /// Function returning the portfolio of the user /// </summary> /// <returns> /// A <see cref="Portfolio"/> object representing the portfolio of the user on Bittrex /// </returns> override public Portfolio GetFolio() { Portfolio myFolio = new Portfolio(); Balance oneBalance; MainCryptos ccyBase; MainCryptos ccyPair; string currency; IEnumerable <BittrexSharp.Domain.CurrencyBalance> one_balance = this.my_bittrex.GetBalances().Result.Result; this.my_balances.Clear(); foreach (var row in one_balance) { if ((double)row.Available > 0) { this.my_balances.Add(row.Currency, (double)row.Available); } } foreach (KeyValuePair <string, double> row in this.my_balances) { currency = row.Key; if (row.Value != 0.00) { ccyBase = (MainCryptos)Enum.Parse(typeof(MainCryptos), currency); ccyPair = (MainCryptos)Enum.Parse(typeof(MainCryptos), currency); oneBalance = new Balance(ccyBase, ccyPair, row.Value); myFolio.AddBalance(oneBalance); } } return(myFolio); }
/// <summary> /// Function returning the portfolio of the user /// </summary> /// <returns> /// A <see cref="Portfolio"/> object representing the portfolio of the user on CexIO /// </returns> override public Portfolio GetFolio() { Portfolio myFolio = new Portfolio(); Balance oneBalance; MainCryptos ccyBase; MainCryptos ccyPair; string queryJson; string stringResponse; Dictionary <dynamic, dynamic> dicoResults = new Dictionary <dynamic, dynamic>(); Price BTCPrice = this.GetPrice(MainCryptos.BTC.ToString()); double BTCSpot = BTCPrice.price; string currency; this.endpoint = "balance/"; this.nonce = DateTimeOffset.Now.ToUnixTimeSeconds(); this.bodyRequest.Clear(); this.hexHash = this.getSignature(this.nonce); this.bodyRequest.Clear(); this.bodyRequest.Add("key", this.apiKey); this.bodyRequest.Add("signature", this.hexHash); this.bodyRequest.Add("nonce", this.nonce.ToString()); queryJson = Newtonsoft.Json.JsonConvert.SerializeObject(this.bodyRequest); this.httpRequest = new System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Post, this.api + this.endpoint); this.httpRequest.Content = new System.Net.Http.StringContent(queryJson, System.Text.Encoding.UTF8, "application/json"); this.httpRequest.Content.Headers.Add("key", this.apiKey); this.httpRequest.Content.Headers.Add("signature", this.hexHash); this.httpRequest.Content.Headers.Add("nonce", this.nonce.ToString()); this.httpResponse = this.httpClient.SendAsync(this.httpRequest).Result; stringResponse = this.httpResponse.Content.ReadAsStringAsync().Result; this.responseRequest = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <dynamic, dynamic> >(stringResponse); foreach (KeyValuePair <dynamic, dynamic> row in this.responseRequest) { if (System.Linq.Enumerable.Contains(Enum.GetNames(typeof(MainCryptos)), row.Key)) { currency = row.Key.ToUpper(); Dictionary <dynamic, dynamic> dicoRow = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <dynamic, dynamic> >(row.Value.ToString()); if (Double.Parse(dicoRow["available"], System.Globalization.CultureInfo.InvariantCulture) != 0.00) { ccyBase = (MainCryptos)Enum.Parse(typeof(MainCryptos), currency); ccyPair = (MainCryptos)Enum.Parse(typeof(MainCryptos), currency); oneBalance = new Balance(ccyBase, ccyPair, Double.Parse(dicoRow["available"], System.Globalization.CultureInfo.InvariantCulture)); myFolio.AddBalance(oneBalance); } } } return(myFolio); }
/// <summary> /// Function returning the portfolio of the user /// </summary> /// <returns> /// A <see cref="Portfolio"/> object representing the portfolio of the user on Bitfinex /// </returns> override public Portfolio GetFolio() { Portfolio myFolio = new Portfolio(); Balance oneBalance; MainCryptos ccyBase; MainCryptos ccyPair; this.endpoint = "balances"; string completeUrl = this.apiV1 + this.endpoint; this.nonce = DateTimeOffset.Now.ToUnixTimeSeconds().ToString(); this.request = new HttpRequestMessage(HttpMethod.Post, completeUrl); this.body.Clear(); this.body.Add("request", "/v1/" + this.endpoint); this.body.Add("nonce", nonce.ToString()); this.setRequestHeaders(this.body); this.response = this.client.SendAsync(this.request).Result; this.jStringResponse = this.response.Content.ReadAsStringAsync().Result; try { this.listDico = JsonConvert.DeserializeObject <List <Dictionary <dynamic, dynamic> > >(this.jStringResponse); this.requestResponse.Clear(); foreach (Dictionary <dynamic, dynamic> row in this.listDico) { string currency = row["currency"].ToUpper(); if (Double.Parse(row["available"], System.Globalization.CultureInfo.InvariantCulture) != 0.00) { ccyBase = (MainCryptos)Enum.Parse(typeof(MainCryptos), currency); ccyPair = (MainCryptos)Enum.Parse(typeof(MainCryptos), currency); oneBalance = new Balance(ccyBase, ccyPair, Double.Parse(row["available"], System.Globalization.CultureInfo.InvariantCulture)); myFolio.AddBalance(oneBalance); } } } catch (Exception e) { Console.WriteLine(e.Message); this.requestResponse = new Dictionary <dynamic, dynamic>() { { "ERROR", "ERROR" } }; } return(myFolio); }
/// <summary> /// Function returning the portfolio of the user /// </summary> /// <returns> /// A <see cref="Portfolio"/> object representing the portfolio of the user on Coinbase /// </returns> override public Portfolio GetFolio() { Portfolio myFolio = new Portfolio(); Balance oneBalance; MainCryptos ccyBase; MainCryptos ccyPair; string currency; string api = "https://api.coinbase.com/v2/accounts"; Price BTCPrice = this.GetPrice(MainCryptos.BTC.ToString()); double BTCSpot = BTCPrice.price; this.dicoResponse = new Dictionary <dynamic, dynamic>(); Dictionary <dynamic, dynamic> dicoOneBalance = new Dictionary <dynamic, dynamic>(); this.response = this.coinbase.SendRequest(api, "", RestSharp.Method.GET); try { this.requestResponse = JsonConvert.DeserializeObject <List <Dictionary <dynamic, dynamic> > >(this.response.Data.ToString()); foreach (Dictionary <dynamic, dynamic> row in this.requestResponse) { Dictionary <string, double> dico1Crypto = new Dictionary <string, double>(); currency = row["currency"].ToUpper(); dicoOneBalance = JsonConvert.DeserializeObject <Dictionary <dynamic, dynamic> >(row["balance"].ToString()); if (Double.Parse(dicoOneBalance["amount"], System.Globalization.CultureInfo.InvariantCulture) != 0.00) //if (Double.Parse(row["available"], System.Globalization.CultureInfo.InvariantCulture) != 0.00) { ccyBase = (MainCryptos)Enum.Parse(typeof(MainCryptos), currency); ccyPair = (MainCryptos)Enum.Parse(typeof(MainCryptos), currency); oneBalance = new Balance(ccyBase, ccyPair, Double.Parse(dicoOneBalance["amount"], System.Globalization.CultureInfo.InvariantCulture)); myFolio.AddBalance(oneBalance); } } } catch (Exception e) { Console.WriteLine(e.Message); dicoResponse = new Dictionary <dynamic, dynamic>() { { "ERROR", "ERROR" } }; } return(myFolio); }
/// <summary> /// Function returning the portfolio of the user /// </summary> /// <returns> /// A <see cref="Portfolio"/> object representing the portfolio of the user on Binance /// </returns> override public Portfolio GetFolio() { Portfolio myFolio = new Portfolio(); Balance oneBalance; MainCryptos ccyBase; MainCryptos ccyPair; string stringResponse = ""; string currency; Dictionary <dynamic, dynamic> dicoPortfolio = new Dictionary <dynamic, dynamic>(); this.endpoint = "api/v3/account"; this.queryString = ""; this.bodyRequest.Clear(); this.bodyRequest.Add("recvWindow", 1000000.ToString()); this.bodyRequest.Add("timestamp", (DateTimeOffset.Now.ToUnixTimeMilliseconds()).ToString()); foreach (KeyValuePair <string, string> row in this.bodyRequest) { this.queryString += row.Key + "=" + row.Value + "&"; } this.queryString = this.queryString.Substring(0, this.queryString.Length - 1); this.hexHash = Tools.byteToString(hasher.ComputeHash(System.Text.Encoding.UTF8.GetBytes(queryString))).ToLower(); this.queryString += "&signature=" + this.hexHash; this.httpRequest = new System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Get, this.api + this.endpoint + "?" + this.queryString); this.httpRequest.Headers.Add("X-MBX-APIKEY", this.api_key); this.httpResponse = this.httpClient.SendAsync(this.httpRequest).Result; stringResponse = this.httpResponse.Content.ReadAsStringAsync().Result; this.responseRequest = JsonConvert.DeserializeObject <Dictionary <dynamic, dynamic> >(stringResponse); if (this.responseRequest.ContainsKey("balances")) { this.listDico = JsonConvert.DeserializeObject <List <Dictionary <dynamic, dynamic> > >(this.responseRequest["balances"].ToString()); } else { this.listDico = new List <Dictionary <dynamic, dynamic> >(); } foreach (Dictionary <dynamic, dynamic> row in this.listDico) { Dictionary <string, double> dico1Crypto = new Dictionary <string, double>(); currency = row["asset"].ToUpper(); if (Double.Parse(row["free"], System.Globalization.CultureInfo.InvariantCulture) != 0.00) { ccyBase = (MainCryptos)Enum.Parse(typeof(MainCryptos), currency); ccyPair = (MainCryptos)Enum.Parse(typeof(MainCryptos), currency); oneBalance = new Balance(ccyBase, ccyPair, Double.Parse(row["free"], System.Globalization.CultureInfo.InvariantCulture)); myFolio.AddBalance(oneBalance); } } return(myFolio); }