예제 #1
0
        private void preencherValoresSimulado(clsModMinhasOrdens aObjOrdem)
        {
            clsApiOrders_operations_data vObjOperacao;

            try
            {
                this._ObjOrdemAPI.response_data                  = new clsApiOrders_data();
                this._ObjOrdemAPI.response_data.order            = new clsApiOrders_orders_data();
                this._ObjOrdemAPI.response_data.order.operations = new List <clsApiOrders_operations_data>();
                vObjOperacao = new clsApiOrders_operations_data();

                this._ObjOrdemAPI.response_data.order.order_id           = Convert.ToInt32(aObjOrdem.pID);
                this._ObjOrdemAPI.response_data.order.created_timestamp  = Convert.ToString((aObjOrdem.pDataCriacao.ToUniversalTime().Subtract(new DateTime(1970, 1, 1))).TotalSeconds);
                this._ObjOrdemAPI.response_data.order.executed_quantity  = clsTooUtil.converterDecimalString_US(aObjOrdem.pQtdExecutada);
                this._ObjOrdemAPI.response_data.order.quantity           = clsTooUtil.converterDecimalString_US(aObjOrdem.pQtdMoeda);
                this._ObjOrdemAPI.response_data.order.status             = 4;
                this._ObjOrdemAPI.response_data.order.order_type         = (aObjOrdem.pTipoOrdem == clsModMinhasOrdens.enumTipoOrdem.Compra) ? 1 : 2;
                this._ObjOrdemAPI.response_data.order.limit_price        = clsTooUtil.converterDecimalString_US(aObjOrdem.pVlrLimite);
                this._ObjOrdemAPI.response_data.order.executed_price_avg = clsTooUtil.converterDecimalString_US(aObjOrdem.pVlrLimite);
                this._ObjOrdemAPI.response_data.order.has_fills          = true;

                this._ObjOrdemAPI.response_data.order.fee = clsTooUtil.converterDecimalString_US(aObjOrdem.pVlrTaxa);

                vObjOperacao.operation_id       = 1;
                vObjOperacao.quantity           = this._ObjOrdemAPI.response_data.order.quantity;
                vObjOperacao.price              = this._ObjOrdemAPI.response_data.order.limit_price;
                vObjOperacao.fee_rate           = this._ObjOrdemAPI.response_data.order.fee;
                vObjOperacao.executed_timestamp = this._ObjOrdemAPI.response_data.order.created_timestamp;

                this._ObjOrdemAPI.response_data.order.operations.Add(vObjOperacao);
            }
            catch { throw; }
        }
예제 #2
0
        public void atualizar()
        {
            clsModMinhasOrdens vObjOrdenAtual;

            try
            {
                vObjOrdenAtual = new clsModMinhasOrdens();

                vObjOrdenAtual.carregarOrdemAtual();

                if (vObjOrdenAtual.pID > 0)
                {
                    if (Program.Parametros.pSimulando)
                    {
                        this.preencherValoresSimulado(vObjOrdenAtual);
                    }
                    else
                    {
                        this._ObjOrdemAPI = this._ObjAPI.buscarOrder(clsApiBaseRetornoTAPI.enumParMoedas.BRLBTC, vObjOrdenAtual.pID);
                    }

                    this.gravarOrdem(false);
                }
            }
            catch { throw; }
        }
예제 #3
0
        private void gravarOperacoes(clsModMinhasOrdens aObjMinhaOrdem)
        {
            bool vBooPossuiOperacao = false;

            clsModOperacao vObjOperacao;

            try
            {
                vBooPossuiOperacao = this._ObjOrdemAPI.response_data.order.has_fills;

                if (vBooPossuiOperacao == false)
                {
                    return;
                }

                //--Apagando as operações atuais para incluir novamente todas (isso para caso tenha surgido novas operações)
                aObjMinhaOrdem.limparOperacoes();

                //--Percorrendo as operações da ordem
                foreach (clsApiOrders_operations_data vObj in this._ObjOrdemAPI.response_data.order.operations)
                {
                    vObjOperacao = new clsModOperacao();

                    vObjOperacao.pDataOperacao = clsTooUtil.converterUnixTimeStamp(Convert.ToDecimal(vObj.executed_timestamp));
                    vObjOperacao.pID           = vObj.operation_id;
                    vObjOperacao.pOrdem        = aObjMinhaOrdem;
                    vObjOperacao.pQtdMoeda     = clsTooUtil.converterStringDecimal_US(vObj.quantity);
                    vObjOperacao.pVlrOperacao  = clsTooUtil.converterStringDecimal_US(vObj.price);
                    vObjOperacao.pVlrTaxa      = clsTooUtil.converterStringDecimal_US(vObj.fee_rate);

                    vObjOperacao.incluir();
                }
            }
            catch { throw; }
        }
예제 #4
0
        private void gravarOrdem(bool aBooNovo)
        {
            clsModMinhasOrdens vObjMinhaOrdem;

            try
            {
                vObjMinhaOrdem = new clsModMinhasOrdens();

                vObjMinhaOrdem.pID                = this._ObjOrdemAPI.response_data.order.order_id;
                vObjMinhaOrdem.pConsulta          = this.pConsulta;
                vObjMinhaOrdem.pDataCriacao       = clsTooUtil.converterUnixTimeStamp(Convert.ToDecimal(this._ObjOrdemAPI.response_data.order.created_timestamp));
                vObjMinhaOrdem.pQtdExecutada      = clsTooUtil.converterStringDecimal_US(this._ObjOrdemAPI.response_data.order.executed_quantity);
                vObjMinhaOrdem.pQtdMoeda          = clsTooUtil.converterStringDecimal_US(this._ObjOrdemAPI.response_data.order.quantity);
                vObjMinhaOrdem.pStatus            = vObjMinhaOrdem.definirTipoStatus(this._ObjOrdemAPI.response_data.order.status);
                vObjMinhaOrdem.pTipoOrdem         = vObjMinhaOrdem.definirTipoOrdem(this._ObjOrdemAPI.response_data.order.order_type);
                vObjMinhaOrdem.pVlrLimite         = this._ValorLimite;
                vObjMinhaOrdem.pVlrMedioExecutado = clsTooUtil.converterStringDecimal_US(this._ObjOrdemAPI.response_data.order.executed_price_avg);
                vObjMinhaOrdem.pVlrTaxa           = clsTooUtil.converterStringDecimal_US(this._ObjOrdemAPI.response_data.order.fee);
                vObjMinhaOrdem.pAguardar          = this._AguardarAposCompra;

                if (aBooNovo)
                {
                    vObjMinhaOrdem.incluir();
                }
                else
                {
                    vObjMinhaOrdem.atualizar();
                }

                this.gravarOperacoes(vObjMinhaOrdem);
            }
            catch { throw; }
        }
예제 #5
0
        //--Método para verificar a situação do movimento. Se existe venda pendente ou se começa um ciclo novo
        //--Caso tenha venda pendente, retorna a cotação comprada.
        public void buscarAcaoAtual()
        {
            clsModMinhasOrdens vObjOrdens;
            enumAcao           vEnumAcao = enumAcao.Coletando;

            try
            {
                if (this.pAtivaNegociacao)
                {
                    vObjOrdens = new clsModMinhasOrdens();

                    vObjOrdens.carregarOrdemAtual();

                    if (vObjOrdens.pID == 0)
                    {
                        vEnumAcao = (Program.Carteira.pSaldoBitcoins != 0) ? enumAcao.MonitorandoVenda : enumAcao.MonitorandoCompra;
                    }
                    else
                    {
                        //--Verificando em que situação está a movimentação (se está comprando ou em vendendo)
                        switch (vObjOrdens.pStatus)
                        {
                        case clsModMinhasOrdens.enumTipoStatus.Aberta:
                            vEnumAcao = (vObjOrdens.pTipoOrdem == clsModMinhasOrdens.enumTipoOrdem.Compra) ? enumAcao.Comprando : enumAcao.Vendendo;
                            break;

                        case clsModMinhasOrdens.enumTipoStatus.Finalizada:
                            vEnumAcao = (vObjOrdens.pTipoOrdem == clsModMinhasOrdens.enumTipoOrdem.Compra) ? enumAcao.MonitorandoVenda : enumAcao.MonitorandoCompra;
                            break;

                        default:
                            vEnumAcao = enumAcao.MonitorandoCompra;
                            break;
                        }
                    }
                }

                //--Se teve alteração de ação, chama função para atualizar carteira.
                if (vEnumAcao != this.pAcaoAtual)
                {
                    System.Threading.Thread.Sleep(20000);
                    Program.Carteira.atualizarCarteira();
                    System.Threading.Thread.Sleep(10000);
                }
                this.pAcaoAtual = vEnumAcao;
            }
            catch
            {
                throw;
            }
        }
예제 #6
0
        public DataTable listarOperacoes(DateTime aDatInicio, DateTime aDatFim)
        {
            clsModMinhasOrdens vObjOrdens;

            try
            {
                vObjOrdens = new clsModMinhasOrdens();
                return(vObjOrdens.listarOrdens(aDatInicio, aDatFim));
            }
            catch
            {
                throw;
            }
        }
예제 #7
0
 public clsCtrResultado()
 {
     this._ObjMinhasOrdens = new clsModMinhasOrdens();
 }