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