示例#1
0
        public void criaOrdens()
        {
            if (api.saldo.saldoBRL > 0 || api.saldo.saldoBTC > 0)
            {
                TickerBitstamp bitstamp      = api.obterTickerBitstamp();
                decimal        dolar         = api.obterCotacaoDolar();
                decimal        precoBitstamp = Convert.ToDecimal(bitstamp.last);
                OrderList      orderList     = null;


                decimal precoCompra = ((precoBitstamp * api.parametros.spreadCompra / 100) + precoBitstamp) * dolar;
                if (api.saldo.saldoBRL > api.parametros.quantidadeOrdem * precoCompra)
                {
                    orderList = api.criarOrdemCompra(api.parametros.quantidadeOrdem, precoCompra);
                    foreach (Ordem ordem in orderList.oReturn)
                    {
                        api.imprimirOrdem("Nova ordem", ordem);
                        ListaOrdem.Add(ordem);
                    }
                }

                if (api.saldo.saldoBTC > api.parametros.quantidadeOrdem)
                {
                    decimal precoVenda = ((precoBitstamp * api.parametros.spreadVenda / 100) + precoBitstamp) * dolar;
                    orderList = api.criarOrdemVenda(api.parametros.quantidadeOrdem, precoVenda);
                    foreach (Ordem ordem in orderList.oReturn)
                    {
                        api.imprimirOrdem("Nova ordem", ordem);
                        ListaOrdem.Add(ordem);
                    }
                }
            }
        }
示例#2
0
        public void monitorarArbitragem()
        {
            //Se preço variar em 0.1% cancela ordens e cria outra
            TickerBitstamp bitstamp      = api.obterTickerBitstamp();
            decimal        dolar         = api.obterCotacaoDolar();
            decimal        precoBitstamp = Convert.ToDecimal(bitstamp.last);
            bool           temOC         = false;
            bool           temOV         = false;

            popularListaOrdens();
            Console.WriteLine("Inicio monitorando ordens Arbitragem: " + ListaOrdem.oReturn.Count);
            for (int i = ListaOrdem.oReturn.Count - 1; i >= 0; --i)
            {
                Ordem ordem = ListaOrdem.oReturn[i];
                api.imprimirOrdem("", ordem);
                if (ordem.action == Constantes.TIPO_ORDEM_COMPRA)
                {
                    temOC = true;
                    decimal precoCompraBRL             = obterPrecoCompraBRL();
                    decimal precoOrdemAtual            = Convert.ToDecimal(ordem.price);
                    decimal limitePrecoCompraPermitido = (precoCompraBRL * 0.1M / 100) + precoCompraBRL;

                    if (precoOrdemAtual > limitePrecoCompraPermitido)
                    {
                        deletarOrdem(ordem, i);

                        criarOrdemResidualNovoPreco(ordem, obterPrecoCompraBRL());
                    }
                }
                else if (ordem.action == Constantes.TIPO_ORDEM_VENDA)
                {
                    temOV = true;
                    decimal precoVendaBRL             = obterPrecoVendaBRL();
                    decimal precoOrdemAtual           = Convert.ToDecimal(ordem.price);
                    decimal limitePrecoVendaPermitido = precoVendaBRL - (precoVendaBRL * 0.1M / 100);
                    if (precoOrdemAtual < limitePrecoVendaPermitido)
                    {
                        deletarOrdem(ordem, i);

                        criarOrdemResidualNovoPreco(ordem, obterPrecoVendaBRL());
                    }
                }
            }

            if (!temOC)
            {
                temOC = false;
                criarOrdemCompraArbitragem();
            }
            if (!temOV)
            {
                temOV = false;
                criarOrdemVendaArbitragem();
            }

            Console.WriteLine("Fim do ciclo arbitragem, qtd ordens :" + ListaOrdem.oReturn.Count);
            System.Threading.Thread.Sleep(3000);
            monitorarArbitragem();
        }
示例#3
0
        private decimal obterPrecoVendaUSD()
        {
            TickerBitstamp bitstamp      = api.obterTickerBitstamp();
            decimal        precoBitstamp = Convert.ToDecimal(bitstamp.last);

            decimal precoVenda = ((precoBitstamp * spreadVenda / 100) + precoBitstamp);

            return(precoVenda);
        }
示例#4
0
        private decimal obterPrecoVendaBRL()
        {
            TickerBitstamp bitstamp      = api.obterTickerBitstamp();
            decimal        precoBitstamp = Convert.ToDecimal(bitstamp.last);
            decimal        dolar         = api.obterCotacaoDolar();
            decimal        precoVenda    = ((precoBitstamp * spreadVenda / 100) + precoBitstamp) * dolar;

            return(precoVenda);
        }
示例#5
0
        private decimal obterPrecoCompraBRL()
        {
            TickerBitstamp bitstamp      = api.obterTickerBitstamp();
            decimal        precoBitstamp = Convert.ToDecimal(bitstamp.last);
            decimal        dolar         = api.obterCotacaoDolar();
            decimal        precoCompra   = ((precoBitstamp * api.parametros.spreadCompra / 100) + precoBitstamp) * dolar;

            return(precoCompra);
        }
示例#6
0
        private decimal obterPrecoCompraUSD()
        {
            TickerBitstamp bitstamp      = api.obterTickerBitstamp();
            decimal        precoBitstamp = Convert.ToDecimal(bitstamp.last);

            decimal precoCompra = ((precoBitstamp * parametros.spreadCompra / 100) + precoBitstamp);

            return(precoCompra);
        }
示例#7
0
        private void criarOrdemCompraArbitragem()
        {
            TickerBitstamp bitstamp      = api.obterTickerBitstamp();
            decimal        dolar         = api.obterCotacaoDolar();
            decimal        precoBitstamp = Convert.ToDecimal(bitstamp.last);
            decimal        precoCompra   = ((precoBitstamp * spreadCompra / 100) + precoBitstamp) * dolar;

            api.criarOrdemCompra(quantidadeOrdem, precoCompra);
        }
示例#8
0
        public void criaOrdensIniciais()
        {
            if (ListaOrdem.oReturn.Count < 2)
            {
                if (api.saldo.saldoBRL > 0 || api.saldo.saldoBTC > 0)
                {
                    TickerBitstamp bitstamp      = api.obterTickerBitstamp();
                    decimal        dolar         = api.obterCotacaoDolar();
                    decimal        precoBitstamp = Convert.ToDecimal(bitstamp.last);
                    OrderList      orderList     = null;

                    bool criarOC = true;
                    bool criarOV = true;
                    if (ListaOrdem.oReturn.Count == 1)
                    {
                        if (ListaOrdem.oReturn[0].action == Constantes.TIPO_ORDEM_COMPRA)
                        {
                            criarOC = false;
                        }
                        if (ListaOrdem.oReturn[0].action == Constantes.TIPO_ORDEM_VENDA)
                        {
                            criarOV = false;
                        }
                    }

                    if (criarOC)
                    {
                        decimal precoCompra = ((precoBitstamp * spreadCompra / 100) + precoBitstamp) * dolar;
                        if (api.saldo.saldoBRL > quantidadeOrdem * precoCompra)
                        {
                            orderList = api.criarOrdemCompra(quantidadeOrdem, precoCompra);
                            atualizarListaOrdens(orderList);
                        }
                        else
                        {
                            Console.WriteLine("Sem saldo BRL");
                        }
                    }

                    if (criarOV)
                    {
                        if (api.saldo.saldoBTC > quantidadeOrdem)
                        {
                            decimal precoVenda = ((precoBitstamp * spreadVenda / 100) + precoBitstamp) * dolar;
                            orderList = api.criarOrdemVenda(quantidadeOrdem, precoVenda);
                            atualizarListaOrdens(orderList);
                        }
                        else
                        {
                            Console.WriteLine("Sem saldo BTC");
                        }
                    }
                }
            }
        }
示例#9
0
        public void criaOrdensIniciais()
        {
            //Ticker b2u = obterTickerB2U();
            TickerBitstamp bitstamp      = api.obterTickerBitstamp();
            decimal        dolar         = api.obterCotacaoDolar();
            decimal        precoBitstamp = Convert.ToDecimal(bitstamp.last);
            decimal        precoVenda    = ((precoBitstamp * spreadVenda / 100) + precoBitstamp) * dolar;

            api.criarOrdemVenda(quantidadeOrdem, precoVenda);
            decimal precoCompra = ((precoBitstamp * spreadCompra / 100) + precoBitstamp) * dolar;

            api.criarOrdemCompra(quantidadeOrdem, precoCompra);
        }
示例#10
0
        public TickerBitstamp obterTickerBitstamp()
        {
            System.Threading.Thread.Sleep(1000);
            string retorno = getTickerBitstamp();

            DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(TickerBitstamp));
            MemoryStream ms = new MemoryStream(System.Text.ASCIIEncoding.ASCII.GetBytes(retorno));


            TickerBitstamp ticker = (TickerBitstamp)js.ReadObject(ms);

            return(ticker);
        }
示例#11
0
 private void criarOrdemCompraArbitragem()
 {
     try
     {
         TickerBitstamp bitstamp      = api.obterTickerBitstamp();
         decimal        dolar         = api.obterCotacaoDolar();
         decimal        precoBitstamp = Convert.ToDecimal(bitstamp.last);
         decimal        precoCompra   = ((precoBitstamp * spreadCompra / 100) + precoBitstamp) * dolar;
         api.criarOrdemCompra(quantidadeOrdem, precoCompra);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }