public IEnumerable <OrdemMoedaEntidade> ListarHistoricoOrdem() { List <OrdemMoedaEntidade> lista = new List <OrdemMoedaEntidade>(); List <HistoricoOrdemBitfinex> historico = new List <HistoricoOrdemBitfinex>(); historico.AddRange(ObterHistoricoOrdem("ETHBTC", "ETH")); historico.AddRange(ObterHistoricoOrdem("IOTBTC", "IOT")); foreach (var ordem in historico) { if (!lista.Any(q => q.Moeda != null && q.Moeda.Sigla == ordem.SiglaCrypto)) { lista.Add(new OrdemMoedaEntidade() { Moeda = TipoCrypto.ObterPorSigla(ordem.SiglaCrypto), Exchange = TipoExchange.Bitfinex }); } if (ordem.TipoOrdem == TipoOrdem.Compra) { double precoPorUnidade = Convert.ToDouble(ordem.price, CultureInfo.CreateSpecificCulture("en-US")); double unidades = Convert.ToDouble(ordem.amount, CultureInfo.CreateSpecificCulture("en-US")); lista.FirstOrDefault(q => q.Moeda != null && q.Moeda.Sigla == ordem.SiglaCrypto) .QuantidadeInvestida += (unidades * precoPorUnidade); lista.FirstOrDefault(q => q.Moeda != null && q.Moeda.Sigla == ordem.SiglaCrypto) .QuantidadeMoeda += unidades; } } return(lista); }
public IEnumerable <OrdemMoedaEntidade> ListarHistoricoOrdem() { var historico = ObterHistoricoOrdem(); List <OrdemMoedaEntidade> retorno = new List <OrdemMoedaEntidade>(); foreach (var ordem in historico) { string siglaCrypto = ObterSigla(ordem.pair); string tipoOrdem = ObterTipoOrdem(ordem); if (!retorno.Any(q => q.Moeda != null && q.Moeda.Sigla == siglaCrypto)) { retorno.Add(new OrdemMoedaEntidade() { Moeda = TipoCrypto.ObterPorSigla(siglaCrypto), Exchange = TipoExchange.Kraken }); } if (tipoOrdem == TipoOrdem.Compra) { retorno.FirstOrDefault(q => q.Moeda != null && q.Moeda.Sigla == siglaCrypto) .QuantidadeInvestida += Convert.ToDouble(ordem.cost, CultureInfo.CreateSpecificCulture("en-US")); retorno.FirstOrDefault(q => q.Moeda != null && q.Moeda.Sigla == siglaCrypto) .QuantidadeMoeda += Convert.ToDouble(ordem.vol, CultureInfo.CreateSpecificCulture("en-US")); } } return(retorno); }
private IEnumerable <OrdemMoedaEntidade> CriarRegistroOrdem(string nome, HistoricoOrdemPoloniex[] historicos) { List <OrdemMoedaEntidade> lista = new List <OrdemMoedaEntidade>(); if (historicos == null) { return(lista); } TipoCrypto tipoCrypto = TipoCrypto.ObterPorSigla(nome.Split('_')[1]); foreach (var ordem in historicos) { string tipoOrdem = ordem.TipoOrdem; if (tipoOrdem == TipoOrdem.Compra) { if (!lista.Any()) { lista.Add(new OrdemMoedaEntidade() { Moeda = tipoCrypto, Exchange = TipoExchange.Poloniex, QuantidadeInvestida = 0, QuantidadeMoeda = 0 }); } lista.FirstOrDefault().QuantidadeInvestida += (ordem.total); lista.FirstOrDefault().QuantidadeMoeda += (ordem.amount); } } return(lista); }
public IEnumerable <OrdemMoedaEntidade> ListarHistoricoOrdem() { var historico = ObterHistoricoBittrex(); List <OrdemMoedaEntidade> retorno = new List <OrdemMoedaEntidade>(); historico.result = historico.result.Where(r => r.Exchange.StartsWith("BTC-")).ToArray(); foreach (var ordem in historico.result) { string siglaCrypto = ordem.Exchange.Split('-')[1]; string tipoOrdem = ObterTipoOrdem(ordem); if (!retorno.Any(q => q.Moeda != null && q.Moeda.Sigla == siglaCrypto)) { retorno.Add(new OrdemMoedaEntidade() { Moeda = TipoCrypto.ObterPorSigla(siglaCrypto), Exchange = TipoExchange.Bittrex }); } if (tipoOrdem == TipoOrdem.Compra) { retorno.FirstOrDefault(q => q.Moeda != null && q.Moeda.Sigla == siglaCrypto).QuantidadeInvestida += (ordem.Price); retorno.FirstOrDefault(q => q.Moeda != null && q.Moeda.Sigla == siglaCrypto).QuantidadeMoeda += (ordem.Quantity - ordem.QuantityRemaining); } } return(retorno); }
private BalancoMoedaEntidade CriarRegistroRetornoBalanco(string sigla, double valor) { return(new BalancoMoedaEntidade() { Exchange = TipoExchange.Bitfinex, Moeda = TipoCrypto.ObterPorSigla(sigla), Quantidade = valor }); }
private BalancoMoedaEntidade CriarRegistroRetornoBalanco(string currency, double balance) { return(new BalancoMoedaEntidade() { Exchange = TipoExchange.Kraken, Moeda = TipoCrypto.ObterPorSigla(currency == "XBT" ? "BTC" : currency), Quantidade = balance }); }
private BalancoMoedaEntidade CriarRegistroRetornoBalanco(string nome, PoloniexQuantidadeEntidade.PoloniexQuantidadeEntidadeMoeda valor) { if (valor != null) { double valorDisponivel = Convert.ToDouble(valor.available, CultureInfo.CreateSpecificCulture("en-US")); double valorEmOrdens = Convert.ToDouble(valor.onOrders, CultureInfo.CreateSpecificCulture("en-US")); double quantidadeUnidadesAtual = valorEmOrdens + valorDisponivel; return(new BalancoMoedaEntidade() { Exchange = TipoExchange.Poloniex, Moeda = TipoCrypto.ObterPorSigla(nome), Quantidade = quantidadeUnidadesAtual }); } return(null); }
public ConsultaExchangesEntidade ConsultarExchanges(PoloniexEntradaApiEntidade entradaPoloniex, BittrexEntradaApiEntidade entradaBittrex, KrakenEntradaApiEntidade entradaKraken, BitfinexEntradaApiEntidade entradaBitfinex, List <MoedaEmCarteiraEntidade> listaBalancoColdWallet) { ConsultaExchangesEntidade retorno = new ConsultaExchangesEntidade(); retorno.ListaCotacoes = new List <CotacaoMoedaEntidade>(); retorno.ListaQuantidades = new List <CryptoQuantidadeEntidade>(); retorno.ListaResultadosOperacoesExchanges = new List <ResultadoOperacaoEntidade>(); var listaBalanco = new List <BalancoMoedaEntidade>(); long nonce = DateTime.Now.Ticks; var resultadoConsulta = new List <ResultadoConsultaExchangeEntidade>(); if (entradaPoloniex != null) { resultadoConsulta.Add(ConsultarExchange(entradaPoloniex, new ApiPoloniex(entradaPoloniex.ApiKey, entradaPoloniex.ApiSecret, nonce))); } if (entradaBittrex != null) { resultadoConsulta.Add(ConsultarExchange(entradaBittrex, new ApiBittrex(entradaBittrex.ApiKey, entradaBittrex.ApiSecret, nonce))); } if (entradaKraken != null) { resultadoConsulta.Add(ConsultarExchange(entradaKraken, new ApiKraken(entradaKraken.ApiKey, entradaKraken.ApiSecret, nonce))); } if (entradaBitfinex != null) { resultadoConsulta.Add(ConsultarExchange(entradaBitfinex, new ApiBitfinex(entradaBitfinex.ApiKey, entradaBitfinex.ApiSecret, nonce))); } listaBalanco.AddRange(resultadoConsulta.SelectMany(r => r.Balanco)); retorno.ListaCotacoes.AddRange(resultadoConsulta.SelectMany(r => r.Cotacao)); retorno.ListaResultadosOperacoesExchanges.AddRange(resultadoConsulta.Select(r => r.ResultadoOperacoes)); foreach (var balanco in listaBalanco) { if (!retorno.ListaQuantidades.Any(q => q != null && q.Tipo != null && q.Tipo.Sigla == balanco.Moeda.Sigla)) { retorno.ListaQuantidades.Add(new CryptoQuantidadeEntidade(balanco.Moeda)); } retorno.ListaQuantidades.First(q => q != null && q.Tipo != null && q.Tipo.Sigla == balanco.Moeda.Sigla).ListaBalancos.Add(balanco); } if (listaBalancoColdWallet != null) { foreach (var moedaColdWallet in listaBalancoColdWallet) { TipoCrypto moeda = TipoCrypto.ObterPorSigla(moedaColdWallet.SiglaMoeda); if (!retorno.ListaQuantidades.Any(q => q != null && q.Tipo != null && q.Tipo.Sigla == moeda.Sigla)) { retorno.ListaQuantidades.Add(new CryptoQuantidadeEntidade(moeda)); } retorno.ListaQuantidades.First(q => q != null && q.Tipo != null && q.Tipo.Sigla == moeda.Sigla).ListaBalancos.Add( new BalancoMoedaEntidade() { Exchange = TipoExchange.Obter(Convert.ToInt32(moedaColdWallet.ExchangeCotacao)), Moeda = moeda, Quantidade = moedaColdWallet.QuantidadeMoeda, ColdWallet = true }); } } return(retorno); }