Example #1
0
        public void monitorarOrdens()
        {
            popularListaOrdens();
            Console.WriteLine("Inicio monitorando ordens: " + ListaOrdem.Count);
            for (int i = ListaOrdem.Count - 1; i >= 0; --i)
            {
                Ordem ordem = ListaOrdem[i];


                Ordem cOrdem = api.obterOrdemPorID(ordem.id);
                api.imprimirOrdem("Monitorando", ordem);
                if (cOrdem.status.ToUpper().Trim() == Constantes.STATUS_ORDEM_EXECUTADA)
                {
                    Console.Beep(); Console.Beep(); Console.Beep();
                    Console.WriteLine("Ordem executada :" + cOrdem.id);
                    ordem.status = Constantes.STATUS_ORDEM_EXECUTADA;

                    criarOrdemInversa(cOrdem);

                    ListaOrdem.RemoveAt(i);
                }
                else if (cOrdem.status.ToUpper().Trim() == Constantes.STATUS_ORDEM_PENDENTE)
                {
                    if (Convert.ToDecimal(cOrdem.executedAmount) > 0)
                    {
                        Console.Beep();
                        Console.WriteLine("Ordem parcialmente executada :" + cOrdem.id);
                        api.cancelarOrdem(cOrdem);
                        criarOrdemInversa(cOrdem);
                        criarOrdemResidual(cOrdem);
                        ListaOrdem.RemoveAt(i);
                    }
                }
            }

            //criaOrdens();
            Console.WriteLine("*********************************** Fim do ciclo, qtd ordens :" + ListaOrdem.Count + "***********************************");
            System.Threading.Thread.Sleep(3000);
            monitorarOrdens();
        }
Example #2
0
 private void deletarOrdem(Ordem ordem, int i)
 {
     api.cancelarOrdem(ordem);
     ListaOrdem.oReturn.RemoveAt(i);
     atualizarListaOrdens(ListaOrdem);
 }
Example #3
0
 private void cancelarOrdem(Ordem ordem, int i)
 {
     api.cancelarOrdem(ordem);
     ListaOrdem.oReturn.RemoveAt(i);
     api.armazenarOrderList(this.ListaOrdem);
 }
Example #4
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.Count);
            for (int i = ListaOrdem.Count - 1; i >= 0; --i)
            {
                Ordem ordem = ListaOrdem[i];
                api.imprimirOrdem("", ordem);
                if (ordem.action == "buy")
                {
                    temOC = true;
                    decimal precoCompraBRL             = obterPrecoCompraBRL();
                    decimal precoOrdemAtual            = Convert.ToDecimal(ordem.price);
                    decimal limitePrecoCompraPermitido = (precoCompraBRL * 0.1M / 100) + precoCompraBRL;

                    if (precoOrdemAtual > limitePrecoCompraPermitido)
                    {
                        api.cancelarOrdem(ordem);
                        ListaOrdem.RemoveAt(i);

                        criarOrdemResidualNovoPreco(ordem, obterPrecoCompraBRL());
                    }
                }
                else if (ordem.action == "sell")
                {
                    temOV = true;
                    decimal precoVendaBRL             = obterPrecoVendaBRL();
                    decimal precoOrdemAtual           = Convert.ToDecimal(ordem.price);
                    decimal limitePrecoVendaPermitido = precoVendaBRL - (precoVendaBRL * 0.1M / 100);
                    if (precoOrdemAtual < limitePrecoVendaPermitido)
                    {
                        api.cancelarOrdem(ordem);
                        ListaOrdem.RemoveAt(i);

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

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

            Console.WriteLine("Fim do ciclo arbitragem, qtd ordens :" + ListaOrdem.Count);
            System.Threading.Thread.Sleep(3000);
            monitorarArbitragem();
        }