Exemplo n.º 1
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);
        }
Exemplo n.º 2
0
        private void preencherValoresSimulado(clsApiMercadoBitcon.enumTipoOrdem aEnumTipoOrdem)
        {
            clsApiOrders_operations_data vObjOperacao;

            try
            {
                Random vRandNum = new Random();
                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           = vRandNum.Next();
                this._ObjOrdemAPI.response_data.order.created_timestamp  = Convert.ToString((Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds);
                this._ObjOrdemAPI.response_data.order.executed_quantity  = clsTooUtil.converterDecimalString_US(this._QtdNegociada);
                this._ObjOrdemAPI.response_data.order.quantity           = clsTooUtil.converterDecimalString_US(this._QtdNegociada);
                this._ObjOrdemAPI.response_data.order.status             = 2;
                this._ObjOrdemAPI.response_data.order.order_type         = (aEnumTipoOrdem == clsApiMercadoBitcon.enumTipoOrdem.Compra) ? 1 : 2;
                this._ObjOrdemAPI.response_data.order.limit_price        = clsTooUtil.converterDecimalString_US(this._ValorLimite);
                this._ObjOrdemAPI.response_data.order.executed_price_avg = clsTooUtil.converterDecimalString_US(this._ValorLimite);
                this._ObjOrdemAPI.response_data.order.has_fills          = true;

                if (aEnumTipoOrdem == clsApiMercadoBitcon.enumTipoOrdem.Compra)
                {
                    this._ObjOrdemAPI.response_data.order.fee = clsTooUtil.converterDecimalString_US(this._QtdNegociada * Convert.ToDecimal(Program.Parametros.pPctTaxaCompra));
                    Program.Carteira.atualizarCarteiraSimulado(Program.Carteira.pSaldoMoeda - (Program.Carteira.pSaldoMoeda * Convert.ToDecimal(Program.Parametros.pPctDisponivelCompra)), this._QtdNegociada - clsTooUtil.converterStringDecimal_US(this._ObjOrdemAPI.response_data.order.fee));
                }
                else
                {
                    this._ObjOrdemAPI.response_data.order.fee = clsTooUtil.converterDecimalString_US((this._QtdNegociada * this._ValorLimite) * Convert.ToDecimal(Program.Parametros.pPctTaxaVenda));
                    Program.Carteira.atualizarCarteiraSimulado((this._QtdNegociada * this._ValorLimite) - clsTooUtil.converterStringDecimal_US(this._ObjOrdemAPI.response_data.order.fee), 0);
                }

                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; }
        }