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"); } }
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(" "); } }
//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; }
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; }