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; } }
public override clsApiOrderbook buscarOrderBook(clsApiBaseRetornoTAPI.enumParMoedas aEnumParMoedas, bool aBooCompleto = false) { string vStrRetornoAPI = string.Empty; clsApiOrderbook vObjOrderBook = new clsApiOrderbook(); try { vStrRetornoAPI = this.chamarMetodoAPI_Dados(this.retornarTipoMoeda(aEnumParMoedas), enumTipoMetodo.orderbook); vObjOrderBook = new clsApiOrderbook(vStrRetornoAPI); this.tratarErro(vObjOrderBook.status_code, vObjOrderBook.error_message); } catch { throw; } return(vObjOrderBook); }
public override clsApiOrderbook buscarOrderBook(clsApiBaseRetornoTAPI.enumParMoedas aEnumParMoedas, bool aBooCompleto = false) { string vStrRetornoAPI = string.Empty; List <clsTooParametros> vObjParametros = new List <clsTooParametros>(); clsApiOrderbook vObjOrderBook = new clsApiOrderbook(); try { vObjParametros.Add(new clsTooParametros("tapi_method", enumTipoTapiMetodo.list_orderbook.ToString())); vObjParametros.Add(new clsTooParametros("coin_pair", aEnumParMoedas.ToString())); vObjParametros.Add(new clsTooParametros("full", aBooCompleto.ToString())); vStrRetornoAPI = this.chamarMetodoAPI_Negociacao(vObjParametros); vObjOrderBook = new clsApiOrderbook(vStrRetornoAPI); this.tratarErro(vObjOrderBook.status_code, vObjOrderBook.error_message); } catch { throw; } return(vObjOrderBook); }
//--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; } }