예제 #1
0
        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;
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        private void carregarHistorico()
        {
            try
            {
                clsModConsulta vObjConsulta = new clsModConsulta();

                //--Recuperando o histórico
                this.pObjHistorico = vObjConsulta.listarConsultasPorHora(this._DataInicio, this._DataFim);
            }
            catch
            {
                throw;
            }
        }
예제 #4
0
        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;
            }
        }
예제 #5
0
        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; }
        }
예제 #6
0
 public clsCtrOperacao()
 {
     this._ObjAPI      = new clsApiMercadoBitcon();
     this._ObjOrdemAPI = new clsApiOrders();
     this.pConsulta    = null;
 }
예제 #7
0
        //--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;
            }
        }
예제 #8
0
 public DataTable consultarVendas(clsModConsulta aObjConsulta)
 {
     return(this._ObjDados.listarOrdens(aObjConsulta, clsModLivroOrdens.enumTipoOrdem.Venda));
 }