public void registrar(clsModConsulta aObjConsulta, clsApiOrderbook aObjOrderBook) { try { this._ObjDados.pConsulta = aObjConsulta; this._ObjDados.pIDUltimaOrdemNegociada = aObjOrderBook.response_data.orderbook.latest_order_id; //--incluindo a lista de compras (bids) foreach (clsApiOrderbook_bids_asks_data obj in aObjOrderBook.response_data.orderbook.bids) { this._ObjDados.pIDOrdem = obj.order_id; this._ObjDados.pTipoOrdem = clsModLivroOrdens.enumTipoOrdem.Compra; this._ObjDados.pProprietario = obj.is_owner; this._ObjDados.pQtdNegociada = Convert.ToDouble(clsTooUtil.converterStringDecimal_US(obj.quantity)); this._ObjDados.pVlrLimite = clsTooUtil.converterStringDecimal_US(obj.limit_price); this._ObjDados.incluir(); } //--incluindo a lista de vendas(asks) foreach (clsApiOrderbook_bids_asks_data obj in aObjOrderBook.response_data.orderbook.asks) { this._ObjDados.pIDOrdem = obj.order_id; this._ObjDados.pTipoOrdem = clsModLivroOrdens.enumTipoOrdem.Venda; this._ObjDados.pProprietario = obj.is_owner; this._ObjDados.pQtdNegociada = Convert.ToDouble(clsTooUtil.converterStringDecimal_US(obj.quantity)); this._ObjDados.pVlrLimite = clsTooUtil.converterStringDecimal_US(obj.limit_price); this._ObjDados.incluir(); } } catch { throw; } }
private bool executarOperacao(clsApiMercadoBitcon.enumTipoOrdem aEnumTipoOrdem) { try { //--Quem define se será feito a operação é o método analisarOperacao chamada dentro de cada método de operação (Comprar/Vender) if (this._Operar) { System.Threading.Thread.Sleep(10000); if (Program.Parametros.pSimulando) { this.preencherValoresSimulado(aEnumTipoOrdem); } else { this._ObjOrdemAPI = _ObjAPI.enviarOrder(clsApiBaseRetornoTAPI.enumParMoedas.BRLBTC, aEnumTipoOrdem, this._QtdNegociada, this._ValorLimite); } //--Gravando no BD a operação this.gravarOrdem(true); } } catch { throw; } finally { this._QtdNegociada = 0; this._ValorLimite = 0; this.pConsulta = null; } return(true); }
private void carregarHistorico() { try { clsModConsulta vObjConsulta = new clsModConsulta(); //--Recuperando o histórico this.pObjHistorico = vObjConsulta.listarConsultasPorHora(this._DataInicio, this._DataFim); } catch { throw; } }
private void negociar(clsModConsulta aObjConsulta) { clsCtrOperacao vObjOperacao;; try { vObjOperacao = new clsCtrOperacao(); vObjOperacao.pConsulta = aObjConsulta; switch (this.pAcaoAtual) { case enumAcao.MonitorandoCompra: //--Compra bitcoins if (this.validarNegociacao()) { vObjOperacao.comprar(this._OperacaoForcada); } break; case enumAcao.MonitorandoVenda: //--Vende bitcoins if (this.validarNegociacao()) { vObjOperacao.vender(this._OperacaoForcada); } break; case enumAcao.Comprando: //--Aguardando execução da ordem de compra System.Threading.Thread.Sleep(10000); vObjOperacao.atualizar(); System.Threading.Thread.Sleep(10000); break; case enumAcao.Vendendo: System.Threading.Thread.Sleep(10000); vObjOperacao.atualizar(); //--Aguardando execução da ordem de venda System.Threading.Thread.Sleep(10000); break; default: //nada fazer break; } } catch { throw; } finally { this._OperacaoForcada = false; } }
public void buscarMaxMinPeriodo() { try { clsModConsulta vObjConsulta = new clsModConsulta(); clsModConsultaBitstamp vObjConsultaBitstamp = new clsModConsultaBitstamp(); //--Recuperando o Máximo e mínimo dentro o período informado vObjConsulta.verMaxMinPeriodo(this.pPeriodoMaxMin * -1); vObjConsultaBitstamp.verMaxMinPeriodo(this.pPeriodoMaxMin * -1); this.pObjTickerMaxMin.ticker.low = vObjConsulta.pMinimo; this.pObjTickerMaxMin.ticker.high = vObjConsulta.pMaximo; this.pObjTickerMaxMinBS.ticker.low = vObjConsultaBitstamp.pMinimo; this.pObjTickerMaxMinBS.ticker.high = vObjConsultaBitstamp.pMaximo; } catch { throw; } }
public clsCtrOperacao() { this._ObjAPI = new clsApiMercadoBitcon(); this._ObjOrdemAPI = new clsApiOrders(); this.pConsulta = null; }
//--Método que consulta no MercadoBitcoin e grava os dados retornados no repositório de consultas private void consultarBitCoin() { clsModConsulta vObjConsulta; //clsCtrLivroOrdens vObjLivro; clsApiTicker vObjTicker; try { //--Se o usuário optou por forçar a operação não faz consulta do ticker, vai direto para a negociação utilizando o último ticker consultado. if (this._OperacaoForcada == false) { System.Threading.Thread.Sleep(15000); //--Buscando as cotações; vObjTicker = this._API.buscarTicker(clsApiMercadoBitcon.enumTipoMoeda.BTC); //--Se tanto a compra quanto a venda estiverem zeradas, significa que o MercadoBitcoin não respondeu nossa consulta. if (vObjTicker.ticker.buy == 0 && vObjTicker.ticker.sell == 0) { return; } //--Lógica incluída para minimizar problemas conhecidos do serviço do MercadoBitcoin: if (this.pObjTickerAtual != null) { //--Se o valor de mínimo está zerado, pega o mínimo da consulta anterior (erro do MercadoBitcoin) if (vObjTicker.ticker.low == 0) { vObjTicker.ticker.low = this.pObjTickerAtual.ticker.low; } //--Retornar os mesmos dados em requisições diferentes ou retornar valor 1 na cotação if (this.pObjTickerAtual.ticker.verDataHora() == vObjTicker.ticker.verDataHora() || vObjTicker.ticker.sell == 1 || vObjTicker.ticker.buy == 1) { return; } } //--Buscando o livro de ordens: this.pObjOrderBookAtual = this._API.buscarOrderBook(clsApiBaseRetornoTAPI.enumParMoedas.BRLBTC); //--Gravando no Banco de Dados a consulta e o livro de ordens vObjConsulta = new clsModConsulta(vObjTicker); vObjConsulta.incluir(); //vObjLivro = new clsCtrLivroOrdens(); //vObjLivro.registrar(vObjConsulta, this.pObjOrderBookAtual); this.pObjTickerAtual = vObjTicker; //--Consultando bitstamp this.consultarBitstamp(); } else { vObjConsulta = new clsModConsulta(); vObjConsulta.buscarUltimaConsulta(); } //--Chamando função que irá verificar se negocia ou não com a cotação consultada if (this.pAtivaNegociacao) { this.negociar(vObjConsulta); } } catch { throw; } }
public DataTable consultarVendas(clsModConsulta aObjConsulta) { return(this._ObjDados.listarOrdens(aObjConsulta, clsModLivroOrdens.enumTipoOrdem.Venda)); }