Discusión sobre el artículo "Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XXVIII): Solicitudes comerciales pendientes - Cierre, eliminación y modificación"
Hola Artyom, ¿hay alguna razón en particular por la que asignes memoria dinámica a un puntero para realizar el trabajo de abajo?
int CTrading::GetIndexPendingRequestByOrder(const ulong ticket) { CPendingReq *req=new CPendingReq(); if(req==NULL) return WRONG_VALUE; req.SetOrder(ticket); this.m_list_request.Sort(SORT_BY_PEND_REQ_TICKET); int index=this.m_list_request.Search(req); delete req; return index; }
En mi humilde opinión, creo que el uso de una simple variable local simplificaría el método y eliminaría el código superfluo de gestión de punteros.
int CTrading::GetIndexPendingRequestByOrder(const ulong ticket) { CPendingReq req; req.SetOrder(ticket); this.m_list_request.Sort(SORT_BY_PEND_REQ_TICKET); int index=this.m_list_request.Search(req); return index; }
Tengo curiosidad por entender tu razonamiento para elegir el primer enfoque... ¿quizás me estoy perdiendo alguna buena práctica?
/dima
Hola Artyom, ¿hay alguna razón en particular por la que asignes memoria dinámica a un puntero para realizar el trabajo que se indica a continuación?
En mi humilde opinión, creo que utilizar una simple variable local simplificaría el método y eliminaría el código superfluo de manejo de punteros.
Tengo curiosidad por entender su razonamiento para elegir el primer enfoque ... tal vez me estoy perdiendo alguna de las mejores prácticas?
/dima
El método Search() funciona con un puntero a un objeto:
int Search( CObject* element // muestra ) const
Ah vale... ¿pero no podrías invocar el método y pasar el puntero de la variable local en su lugar?
int index=this.m_list_request.Search(GetPointer(req));
Ah vale... ¿pero no podrías invocar el método y pasar el puntero de la variable local en su lugar?
Se puede hacer de diferentes maneras ... Yo lo he hecho así ... :)
Se puede hacer de diferentes maneras ... He hecho esto ... :)
Genial, gracias - era sólo para confirmar mi comprensión ya que todavía estoy leyendo los artículos y estudiando el código ;-)
CEventsCollection*GetObject(void) { return &this;

- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XXVIII): Solicitudes comerciales pendientes - Cierre, eliminación y modificación:
Este es el tercer artíclo sobre el concepto de las solicitudes pendientes. En él, terminaremos con la puesta a punto del trabajo con solicitudes comerciales pendientes, creando los métodos para cerrar posiciones, eliminar órdenes pendientes y modificar los parámetros de las posiciones y las órdenes pendientes.
Este es el tercer artíclo sobre el concepto de las solicitudes pendientes. En él, terminaremos con la puesta a punto del concepto propuesto, creando métodos de trabajo con solicitudes pendientes para cerrar posiciones, eliminar órdenes pendientes y modificar órdenes stop, así como cambiar los parámetros de las órdenes pendientes que sean susceptibles de ello.
Asimismo, haremos ciertas adiciones a la clase de orden abstracta. Por algún motivo que desconocemos, hemos omitido el retorno de los valores de dos propiedades de las órdenes y posiciones: el tipo de rellenado de la orden y su tipo de expiración. Así que vamos a añadirlas. El código de todos los métodos comerciales del objeto comercial multiplataforma básico ha sido ligeramente optimizado. No vamos a describir con detalle los cambios, nos limitaremos a exponer un ejemplo sobre alguno de los métodos modificados.Autor: Artyom Trishkin