public void criaOrdens() { if (api.saldo.saldoBRL > 0 || api.saldo.saldoBTC > 0) { TickerBitstamp bitstamp = api.obterTickerBitstamp(); decimal dolar = api.obterCotacaoDolar(); decimal precoBitstamp = Convert.ToDecimal(bitstamp.last); OrderList orderList = null; decimal precoCompra = ((precoBitstamp * api.parametros.spreadCompra / 100) + precoBitstamp) * dolar; if (api.saldo.saldoBRL > api.parametros.quantidadeOrdem * precoCompra) { orderList = api.criarOrdemCompra(api.parametros.quantidadeOrdem, precoCompra); foreach (Ordem ordem in orderList.oReturn) { api.imprimirOrdem("Nova ordem", ordem); ListaOrdem.Add(ordem); } } if (api.saldo.saldoBTC > api.parametros.quantidadeOrdem) { decimal precoVenda = ((precoBitstamp * api.parametros.spreadVenda / 100) + precoBitstamp) * dolar; orderList = api.criarOrdemVenda(api.parametros.quantidadeOrdem, precoVenda); foreach (Ordem ordem in orderList.oReturn) { api.imprimirOrdem("Nova ordem", ordem); ListaOrdem.Add(ordem); } } } }
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.oReturn.Count); for (int i = ListaOrdem.oReturn.Count - 1; i >= 0; --i) { Ordem ordem = ListaOrdem.oReturn[i]; api.imprimirOrdem("", ordem); if (ordem.action == Constantes.TIPO_ORDEM_COMPRA) { temOC = true; decimal precoCompraBRL = obterPrecoCompraBRL(); decimal precoOrdemAtual = Convert.ToDecimal(ordem.price); decimal limitePrecoCompraPermitido = (precoCompraBRL * 0.1M / 100) + precoCompraBRL; if (precoOrdemAtual > limitePrecoCompraPermitido) { deletarOrdem(ordem, i); criarOrdemResidualNovoPreco(ordem, obterPrecoCompraBRL()); } } else if (ordem.action == Constantes.TIPO_ORDEM_VENDA) { temOV = true; decimal precoVendaBRL = obterPrecoVendaBRL(); decimal precoOrdemAtual = Convert.ToDecimal(ordem.price); decimal limitePrecoVendaPermitido = precoVendaBRL - (precoVendaBRL * 0.1M / 100); if (precoOrdemAtual < limitePrecoVendaPermitido) { deletarOrdem(ordem, i); criarOrdemResidualNovoPreco(ordem, obterPrecoVendaBRL()); } } } if (!temOC) { temOC = false; criarOrdemCompraArbitragem(); } if (!temOV) { temOV = false; criarOrdemVendaArbitragem(); } Console.WriteLine("Fim do ciclo arbitragem, qtd ordens :" + ListaOrdem.oReturn.Count); System.Threading.Thread.Sleep(3000); monitorarArbitragem(); }
private decimal obterPrecoVendaUSD() { TickerBitstamp bitstamp = api.obterTickerBitstamp(); decimal precoBitstamp = Convert.ToDecimal(bitstamp.last); decimal precoVenda = ((precoBitstamp * spreadVenda / 100) + precoBitstamp); return(precoVenda); }
private decimal obterPrecoVendaBRL() { TickerBitstamp bitstamp = api.obterTickerBitstamp(); decimal precoBitstamp = Convert.ToDecimal(bitstamp.last); decimal dolar = api.obterCotacaoDolar(); decimal precoVenda = ((precoBitstamp * spreadVenda / 100) + precoBitstamp) * dolar; return(precoVenda); }
private decimal obterPrecoCompraBRL() { TickerBitstamp bitstamp = api.obterTickerBitstamp(); decimal precoBitstamp = Convert.ToDecimal(bitstamp.last); decimal dolar = api.obterCotacaoDolar(); decimal precoCompra = ((precoBitstamp * api.parametros.spreadCompra / 100) + precoBitstamp) * dolar; return(precoCompra); }
private decimal obterPrecoCompraUSD() { TickerBitstamp bitstamp = api.obterTickerBitstamp(); decimal precoBitstamp = Convert.ToDecimal(bitstamp.last); decimal precoCompra = ((precoBitstamp * parametros.spreadCompra / 100) + precoBitstamp); return(precoCompra); }
private void criarOrdemCompraArbitragem() { TickerBitstamp bitstamp = api.obterTickerBitstamp(); decimal dolar = api.obterCotacaoDolar(); decimal precoBitstamp = Convert.ToDecimal(bitstamp.last); decimal precoCompra = ((precoBitstamp * spreadCompra / 100) + precoBitstamp) * dolar; api.criarOrdemCompra(quantidadeOrdem, precoCompra); }
public void criaOrdensIniciais() { if (ListaOrdem.oReturn.Count < 2) { if (api.saldo.saldoBRL > 0 || api.saldo.saldoBTC > 0) { TickerBitstamp bitstamp = api.obterTickerBitstamp(); decimal dolar = api.obterCotacaoDolar(); decimal precoBitstamp = Convert.ToDecimal(bitstamp.last); OrderList orderList = null; bool criarOC = true; bool criarOV = true; if (ListaOrdem.oReturn.Count == 1) { if (ListaOrdem.oReturn[0].action == Constantes.TIPO_ORDEM_COMPRA) { criarOC = false; } if (ListaOrdem.oReturn[0].action == Constantes.TIPO_ORDEM_VENDA) { criarOV = false; } } if (criarOC) { decimal precoCompra = ((precoBitstamp * spreadCompra / 100) + precoBitstamp) * dolar; if (api.saldo.saldoBRL > quantidadeOrdem * precoCompra) { orderList = api.criarOrdemCompra(quantidadeOrdem, precoCompra); atualizarListaOrdens(orderList); } else { Console.WriteLine("Sem saldo BRL"); } } if (criarOV) { if (api.saldo.saldoBTC > quantidadeOrdem) { decimal precoVenda = ((precoBitstamp * spreadVenda / 100) + precoBitstamp) * dolar; orderList = api.criarOrdemVenda(quantidadeOrdem, precoVenda); atualizarListaOrdens(orderList); } else { Console.WriteLine("Sem saldo BTC"); } } } } }
public void criaOrdensIniciais() { //Ticker b2u = obterTickerB2U(); TickerBitstamp bitstamp = api.obterTickerBitstamp(); decimal dolar = api.obterCotacaoDolar(); decimal precoBitstamp = Convert.ToDecimal(bitstamp.last); decimal precoVenda = ((precoBitstamp * spreadVenda / 100) + precoBitstamp) * dolar; api.criarOrdemVenda(quantidadeOrdem, precoVenda); decimal precoCompra = ((precoBitstamp * spreadCompra / 100) + precoBitstamp) * dolar; api.criarOrdemCompra(quantidadeOrdem, precoCompra); }
public TickerBitstamp obterTickerBitstamp() { System.Threading.Thread.Sleep(1000); string retorno = getTickerBitstamp(); DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(TickerBitstamp)); MemoryStream ms = new MemoryStream(System.Text.ASCIIEncoding.ASCII.GetBytes(retorno)); TickerBitstamp ticker = (TickerBitstamp)js.ReadObject(ms); return(ticker); }
private void criarOrdemCompraArbitragem() { try { TickerBitstamp bitstamp = api.obterTickerBitstamp(); decimal dolar = api.obterCotacaoDolar(); decimal precoBitstamp = Convert.ToDecimal(bitstamp.last); decimal precoCompra = ((precoBitstamp * spreadCompra / 100) + precoBitstamp) * dolar; api.criarOrdemCompra(quantidadeOrdem, precoCompra); } catch (Exception ex) { Console.WriteLine(ex.Message); } }