예제 #1
0
        private void imprimirComparativo(Ordem ordem, double melhorPreco)
        {
            if (ordem.obterPreco() >= melhorPreco &&
               ordem.status.ToUpper().Trim() == Constantes.STATUS_ORDEM_PENDENTE &&
               ordem.action == Constantes.TIPO_ORDEM_COMPRA)
            {
                Console.WriteLine("Meu preço OC: " + ordem.obterPreco() + " Melhor " + melhorPreco + " - OK, tenho o melhor preço de compra");
            }
            else if (ordem.obterPreco() <= melhorPreco &&
               ordem.status.ToUpper().Trim() == Constantes.STATUS_ORDEM_PENDENTE &&
               ordem.action == Constantes.TIPO_ORDEM_VENDA)
            {
                Console.WriteLine("Meu preço OV: " + ordem.obterPreco() + " Melhor " + melhorPreco + " - OK, tenho o melhor preço de venda");
            }

        }
예제 #2
0
        private void criarOrdemInversa(OrderBook book, Ordem ordemExecutada)
        {
            try
            {
                Console.WriteLine("Criando ordem inversa");
                OrderList orderList = null;
                double precoLimite = 0;
                ordemExecutada.definirQuantidade(ordemExecutada.obterQuantidadeExecutada());
                if (ordemExecutada.action == Constantes.TIPO_ORDEM_COMPRA)
                {
                    ordemExecutada.precoLimite = ordemExecutada.obterPreco() + api.parametros.minimoLucroBRL;
                    criarOrdemVendaNova(book, ordemExecutada);
                }
                else if (ordemExecutada.action == Constantes.TIPO_ORDEM_VENDA)
                {
                    ordemExecutada.precoLimite = Convert.ToDouble(ordemExecutada.price) - api.parametros.minimoLucroBRL;
                    criarOrdemCompraNova(book, ordemExecutada);
                }

                //atualizarListaOrdens(orderList, precoLimite);
            }
            catch (Exception ex)
            {

                Console.WriteLine("Erro ao criar ordem inversa " + ex.Message);
                Console.WriteLine(" ");
            }
        }
예제 #3
0
        //private bool melhorPrecoCompraEhMeu(OrderBook book, Ordem ordem)
        //{
        //    double melhorPrecoCompra = book.bids[0][0];
        //    if (melhorPrecoCompra > ordem.precoLimite)
        //    {
        //        double somaQuantidade = 0;
        //        for (int i = 0; i < book.bids.Count; i++)
        //        {
        //            double quantidadeOrdemBook = book.bids[i][1];
        //            somaQuantidade = somaQuantidade + quantidadeOrdemBook;//somo as qtds até chegar em 0.001
        //            if (somaQuantidade >= 0.001)//percorre até a soma das qtd for maior que 0.001
        //            {
        //                double precoOrdemBook = book.bids[i][0];
        //                if (precoOrdemBook <= ordem.precoLimite)
        //                {
        //                    melhorPrecoCompra = precoOrdemBook;
        //                    break;
        //                }
        //            }
        //        }
        //    }

        //    foreach (Ordem cOrdem in ListaOrdem.oReturn)
        //    {
        //        if (cOrdem.action == Constantes.TIPO_ORDEM_COMPRA &&
        //            cOrdem.obterPreco() >= melhorPrecoCompra &&
        //            cOrdem.status.ToUpper().Trim() == Constantes.STATUS_ORDEM_PENDENTE)
        //        {
        //            return true;
        //        }
        //    }

        //    return false;
        //}

        private bool meuPrecoJaEstaNoLimite(OrderBook book, Ordem ordem)
        {

            if (ordem.obterPreco() == ordem.precoLimite)
            {
                return true;//nao fazer nada
            }

            return false;
        }
예제 #4
0
        private bool menorPrecoVendaEhMeu(OrderBook book, Ordem ordemAtualizada)
        {
            double melhorPrecoVenda = book.asks[0][0];

            if (ordemAtualizada.obterPreco() <= melhorPrecoVenda)
            {
                return true;
            }
            else//verificar se as ordens menores são minhas também
            {
                double somaQuantidade = 0;
                for (int i = 0; i < book.asks.Count; i++)
                {
                    double quantidadeOrdemBook = book.asks[i][1];
                    somaQuantidade = somaQuantidade + quantidadeOrdemBook;//somo as qtds até chegar em 0.001
                    if (somaQuantidade >= 0.001)//percorre até a soma das qtd for maior que 0.001
                    {
                        double precoOrderBook = book.asks[i][0];

                        bool ehMinhaOrdem = false;
                        foreach (Ordem minhaOrdem in ListaOrdem.oReturn)//verifica se é outra ordem minha
                        {
                            if (precoOrderBook == minhaOrdem.obterPreco())
                            {
                                ehMinhaOrdem = true;
                                return true;
                            }
                        }

                        if (!ehMinhaOrdem &&
                            ordemAtualizada.precoLimite < precoOrderBook)
                        {
                            return false;
                        }

                    }
                }
            }

            return false;
            
        }