예제 #1
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);
            }
        }