Esempio n. 1
0
        public void monitorarOrdens()
        {
            //popularListaOrdens();
            Console.WriteLine("Inicio monitorando ordens: " + ListaOrdem.oReturn.Count);
            for (int i = ListaOrdem.oReturn.Count - 1; i >= 0; --i)
            {
                Ordem ordem  = ListaOrdem.oReturn[i];
                Ordem cOrdem = api.obterOrdemPorID(ordem.id);
                api.imprimirOrdem("Monitorando: ", cOrdem);
                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.oReturn.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);
                        deletarOrdem(cOrdem, i);
                        criarOrdemInversa(cOrdem);
                        criarOrdemResidual(cOrdem);
                        ListaOrdem.oReturn.RemoveAt(i);
                    }
                    else
                    {
                        verificarPrecoDolar(ordem, i);
                    }
                }

                verificarPrecoDolar(cOrdem, i);
            }

            Console.WriteLine("Fim do ciclo, qtd ordens :" + ListaOrdem.oReturn.Count);
            System.Threading.Thread.Sleep(3000);
            monitorarOrdens();
        }
Esempio n. 2
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);
                Console.WriteLine(string.Format("ID {0}, TIPO {1}, PRECO {2}, QTD{3}", ordem.id, ordem.action, ordem.price, ordem.amount));
                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);
                    }
                }
            }

            Console.WriteLine("Fim do ciclo, qtd ordens :" + ListaOrdem.Count);
            System.Threading.Thread.Sleep(3000);
            monitorarOrdens();
        }
Esempio n. 3
0
        private void verificarOrdensDolar()
        {
            bool criarOCDolar = true;
            bool criarOVDolar = true;

            if (null != ListaOrdem.oReturn && ListaOrdem.oReturn.Count != 0)
            {
                for (int i = ListaOrdem.oReturn.Count - 1; i >= 0; --i)
                {
                    Ordem ordemAtualizada = api.obterOrdemPorID(ListaOrdem.oReturn[i].id);
                    Ordem ordemLocal      = ListaOrdem.oReturn[i];
                    if (ordemLocal.tipoRobo.Equals(Constantes.TIPO_ORDEM_DOLAR))
                    {
                        tratarOrdemDolar(ref criarOCDolar, ref criarOVDolar, ordemAtualizada, i);
                    }
                    else if (ordemLocal.tipoRobo.Equals(Constantes.TIPO_ORDEM_TRADE))
                    {
                        tratarOrdemTrade(ordemAtualizada, i);
                    }
                }
            }
            else
            {
                criarOrdemCompraDolar();
                criarOCDolar = false;
                criarOrdemVendaDolar();
                criarOVDolar = false;
            }
            if (criarOCDolar)
            {
                criarOrdemCompraDolar();
            }
            if (criarOVDolar)
            {
                criarOrdemVendaDolar();
            }
        }
Esempio n. 4
0
        private void monitorar()
        {
            bool criarOrdemCompra = true;
            bool criarOrdemVenda = true;
            OrderBook book = api.obterLivroOrdens();//TODO: ACABEI DE TIRAR DO FOR
            //verifica se tem ordem minha criada
            if (ListaOrdem != null && ListaOrdem.oReturn != null && ListaOrdem.oReturn.Count > 0)
            {

                double melhorPrecoCompra = book.bids[0][0];
                double melhorPrecoVenda = book.asks[0][0];

                for (int i = ListaOrdem.oReturn.Count - 1; i >= 0; --i)
                {

                    Ordem ordemAtualizada = api.obterOrdemPorID(ListaOrdem.oReturn[i].id);
                    ordemAtualizada.precoLimite = ListaOrdem.oReturn[i].precoLimite;
                    ordemAtualizada.ordemPai = ListaOrdem.oReturn[i].ordemPai;
                    if (ordemAtualizada.action == Constantes.TIPO_ORDEM_COMPRA)
                    {
                        criarOrdemCompra = false;
                        imprimirComparativo(ordemAtualizada, melhorPrecoCompra);
                        //TODO: TROCAR != POR < E REVER LOGICA ABAIXO
                        bool executada = verificarSeFoiExecutada(book, ordemAtualizada, i);//trata se foi executada

                        if (!executada && !melhorPrecoCompraEhMeu(book, ordemAtualizada) && !meuPrecoJaEstaNoLimite(book, ordemAtualizada))//verifica se minha OC pendente é a melhor
                        {
                            if (ordemAtualizada.ordemPai)
                            {
                                ordemAtualizada.precoLimite = (melhorPrecoVenda - api.parametros.spreadCompraVenda);
                            }
                            cancelarOrdem(ordemAtualizada, i);
                            criarOrdemCompraNova(book, ordemAtualizada);
                        }
                    }
                    else if (ordemAtualizada.action == Constantes.TIPO_ORDEM_VENDA)
                    {
                        criarOrdemVenda = false;
                        imprimirComparativo(ordemAtualizada, melhorPrecoVenda);
                        bool executada = verificarSeFoiExecutada(book, ordemAtualizada, i);//trata se foi executada

                        if (!executada && !menorPrecoVendaEhMeu(book, ordemAtualizada) && !meuPrecoJaEstaNoLimite(book, ordemAtualizada))//verifica se minha OC pendente é a melhor
                        {
                            if (ordemAtualizada.ordemPai)
                            {
                                ordemAtualizada.precoLimite = (melhorPrecoCompra + api.parametros.spreadCompraVenda);
                            }
                            cancelarOrdem(ordemAtualizada, i);
                            criarOrdemVendaNova(book, ordemAtualizada);
                        }
                    }
                }

            }
            else
            {
                criarOrdemCompra = false;
                criarOrdemVenda = false;
                inicializar();
            }

            if (criarOrdemCompra)
            {
                criarOrdemCompra = false;
                inicializarOrdemCompra(book);
            }
            if (criarOrdemVenda)
            {
                criarOrdemVenda = false;
                inicializarOrdemVenda(book);
            }
        }