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