Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 private BalancoMoedaEntidade CriarRegistroRetornoBalanco(string sigla, double valor)
 {
     return(new BalancoMoedaEntidade()
     {
         Exchange = TipoExchange.Bitfinex,
         Moeda = TipoCrypto.ObterPorSigla(sigla),
         Quantidade = valor
     });
 }
Esempio n. 6
0
 private BalancoMoedaEntidade CriarRegistroRetornoBalanco(string currency, double balance)
 {
     return(new BalancoMoedaEntidade()
     {
         Exchange = TipoExchange.Kraken,
         Moeda = TipoCrypto.ObterPorSigla(currency == "XBT" ? "BTC" : currency),
         Quantidade = balance
     });
 }
Esempio n. 7
0
 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);
        }