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); api.imprimirOrdem("Monitorando", ordem); 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); } } } //criaOrdens(); Console.WriteLine("*********************************** Fim do ciclo, qtd ordens :" + ListaOrdem.Count + "***********************************"); System.Threading.Thread.Sleep(3000); monitorarOrdens(); }
private void deletarOrdem(Ordem ordem, int i) { api.cancelarOrdem(ordem); ListaOrdem.oReturn.RemoveAt(i); atualizarListaOrdens(ListaOrdem); }
private void cancelarOrdem(Ordem ordem, int i) { api.cancelarOrdem(ordem); ListaOrdem.oReturn.RemoveAt(i); api.armazenarOrderList(this.ListaOrdem); }
public void monitorarArbitragem() { //Se preço variar em 0.1% cancela ordens e cria outra TickerBitstamp bitstamp = api.obterTickerBitstamp(); decimal dolar = api.obterCotacaoDolar(); decimal precoBitstamp = Convert.ToDecimal(bitstamp.last); bool temOC = false; bool temOV = false; popularListaOrdens(); Console.WriteLine("Inicio monitorando ordens Arbitragem: " + ListaOrdem.Count); for (int i = ListaOrdem.Count - 1; i >= 0; --i) { Ordem ordem = ListaOrdem[i]; api.imprimirOrdem("", ordem); if (ordem.action == "buy") { temOC = true; decimal precoCompraBRL = obterPrecoCompraBRL(); decimal precoOrdemAtual = Convert.ToDecimal(ordem.price); decimal limitePrecoCompraPermitido = (precoCompraBRL * 0.1M / 100) + precoCompraBRL; if (precoOrdemAtual > limitePrecoCompraPermitido) { api.cancelarOrdem(ordem); ListaOrdem.RemoveAt(i); criarOrdemResidualNovoPreco(ordem, obterPrecoCompraBRL()); } } else if (ordem.action == "sell") { temOV = true; decimal precoVendaBRL = obterPrecoVendaBRL(); decimal precoOrdemAtual = Convert.ToDecimal(ordem.price); decimal limitePrecoVendaPermitido = precoVendaBRL - (precoVendaBRL * 0.1M / 100); if (precoOrdemAtual < limitePrecoVendaPermitido) { api.cancelarOrdem(ordem); ListaOrdem.RemoveAt(i); criarOrdemResidualNovoPreco(ordem, obterPrecoVendaBRL()); } } } if (!temOC) { temOC = false; criarOrdemCompraArbitragem(); } if (!temOV) { temOV = false; criarOrdemVendaArbitragem(); } Console.WriteLine("Fim do ciclo arbitragem, qtd ordens :" + ListaOrdem.Count); System.Threading.Thread.Sleep(3000); monitorarArbitragem(); }