Discusión sobre el artículo "Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XXX): Solicitudes comerciales pendientes - Control de los objetos de solicitudes"
Buenas tardes,
Gracias por el trabajo realizado.
Una pequeña petición: Sinceramente he repasado los artículos (principalmente para aumentar mis conocimientos), pero debido a la longitud del ciclo de artículos y la necesidad de ocuparme de otros proyectos tengo que volver atrás y revisitar artículos pasados para entender los cambios. El proyecto ha crecido y como tal - si es posible, en un futuro artículo volver atrás e ilustrar la estructura de la biblioteca resultante en la actualidad.
Saludos y gracias de antemano
Buenas tardes,
Gracias por el trabajo que has hecho
Una pequeña petición: Sinceramente he repasado los artículos (principalmente para aumentar mis conocimientos), pero debido a la longitud del ciclo de artículos y la necesidad de ocuparme de otros proyectos tengo que volver atrás y revisitar artículos anteriores para entender los cambios. El proyecto ha crecido y como tal - si es posible, en un futuro artículo volver atrás e ilustrar la estructura de la biblioteca resultante en la actualidad.
Saludos y gracias de antemano
Intentaré averiguar cómo ilustrar de algún modo una estructura bastante sencilla. Es muy simple, y al mismo tiempo - tiene un montón de enlaces entre las diferentes clases de la biblioteca.
Todo lo que se crea - todo se acumula en CEngine - de este objeto por el momento hay acceso a todas las clases de la biblioteca (y habrá otro punto de acceso - a través de la clase de funciones de usuario, pero ya para ser completado). Pero por ahora sólo hay acceso a los métodos de todas las clases creadas, que son necesarios en este momento.
Las propias clases utilizan punteros entre sí para poder utilizar los datos de una clase en otra. Y si empiezas a mostrar todas estas relaciones, puedes confundirte aún más. Y si muestras todos los objetos base, que son heredados por muchas clases y listas dentro de clases, y también muestras dónde se ejecutan todos en el temporizador - será un lío.
Es por eso que es mucho más fácil simplemente presentar la estructura de una clase, y todas las demás clases son idénticas a esta estructura. Y es muy simple, pero absolutamente insuficiente para mostrar la estructura de toda la biblioteca y sus interrelaciones.
Y una cosa más - la biblioteca se está expandiendo gradualmente, pero de nuevo en el marco del concepto de construcción de objetos de biblioteca establecido al principio. Así que basta con entender su estructura una vez, y entonces será bastante simple.
Pero, por supuesto, voy a pensar (y ya estoy pensando) cómo mostrar todo de una manera más sencilla y accesible.
Artem, buenas tardes. Tu trabajo tiene un valor incalculable. Gracias por la oportunidad de desarrollar y el tiempo que dedicas para que gente como yo pueda ahorrarlo cualitativamente.
Tengo una sugerencia: ¿deberíamos publicar un repositorio con tus libs en github? Lo que haría:
- Un sistema de control de versiones, por supuesto.
- Una oportunidad para todos de participar en el desarrollo de la librería DoEasy.
- La posibilidad de buscar rápidamente en el código y acceder a la versión más actualizada en cualquier momento.
Por ejemplo, mientras estudiaba la biblioteca, encontré y corregí varios errores y optimicé una parte del código. Y en tal caso, ahora podría enviaros una petición especial en el marco del sistema de control de versiones, mediante la cual decidiríais si aceptáis o no mis mejoras en la versión actual de la biblioteca.
Estáis haciendo un gran trabajo, y nosotros juntos (hay mucha gente como yo) podríamos invertir nuestro propio tiempo por el bien común para mejorar DoEasy. Estoy dispuesto a ayudar en la realización de lo propuesto.
Artem, buenas tardes. Tu trabajo tiene un valor incalculable. Gracias por la oportunidad de desarrollarlo y por el tiempo que dedicas a que gente como yo pueda salvarlo cualitativamente.
Tengo una sugerencia: ¿deberíamos publicar un repositorio con tus libs en github? Lo que haría:
- Un sistema de control de versiones, por supuesto.
- Oportunidad de participar en el desarrollo de la librería DoEasy para todos.
- Posibilidad de buscar rápidamente en el código y acceder a la versión más actualizada en cualquier momento.
Por ejemplo, mientras estudiaba la biblioteca encontré y corregí algunos errores y optimicé parte del código. Y en tal caso, ahora podría enviaros una petición especial en el marco del sistema de control de versiones, mediante la cual decidiríais si aceptáis o no mis mejoras en la versión actual de la biblioteca.
Estáis haciendo un gran trabajo, y nosotros juntos (hay mucha gente como yo) podríamos invertir nuestro propio tiempo por el bien común para mejorar DoEasy. Estoy dispuesto a ayudar en la realización de lo propuesto.
Hola. Gracias por tus comentarios.
Por el momento es demasiado pronto para hablar y pensar en el repositorio - la biblioteca está en desarrollo activo, y hasta que no cree y publique todo lo que he planeado, no quiero desviarme del plan. Y sus numerosas correcciones y revisiones por parte de terceros usuarios sólo distraerán al autor de seguir los planes.
Pero es mejor informar sobre los errores encontrados y las formas de su eliminación directamente en las discusiones de los artículos donde se encontraron errores - sólo ayudará al desarrollo de la biblioteca y la eliminación de los errores encontrados.
Al compilar el archivo TradingControl.mqh, se producen dos errores:
'CTrading::OpenPosition<double,d...' - no se puede acceder a la función miembro privada TradingControl.mqh 328 21
ver declaración de 'CTrading::OpenPosition<double,double>' Trading.mqh 146 24
'CTrading::PlaceOrder<double,double...' - no puede acceder a la función privada TradingControl.mqh 344 18
ver declaración de 'CTrading::PlaceOrder<double,double,double,double>' Trading.mqh 156 26
Estos métodos están en la sección privada de la clase CTrading. Los errores desaparecen si los mueves a la sección pública de esta clase. Pero en los ficheros adjuntos (y según tengo entendido, funcionan) estos métodos también están en la sección privada de la clase CTrading, y estos dos errores se producen al compilar el fichero TradingControl.mqh.
Artyom, ¿entonces cómo te funciona a ti? O aquí hay un error o yo he entendido algo mal.
P.D. He descargado los archivos adjuntos para la siguiente parte - 31, y allí también estos métodos se encuentran en la sección privada de la clase CTrading y también se producen estos dos errores al compilar.
Se producen dos errores al compilar el archivo TradingControl.mqh:
'CTrading::OpenPosition<double,d...' - no se puede acceder a la función miembro privada TradingControl.mqh 328 21
ver declaración de 'CTrading::OpenPosition<double,double>' Trading.mqh 146 24
'CTrading::PlaceOrder<double,double...' - no puede acceder a la función privada TradingControl.mqh 344 18
véase la declaración de 'CTrading::PlaceOrder<double,double,double,double>' Trading.mqh 156 26
Estos métodos están en la sección privada de la clase CTrading. Los errores desaparecen si los mueves a la sección pública de esta clase. Pero en los ficheros adjuntos (y según tengo entendido, funcionan) estos métodos también están en la sección privada de la clase CTrading, y estos dos errores se producen al compilar el fichero TradingControl.mqh.
Artem, ¿entonces cómo te funciona a ti? O hay un error aquí o he entendido algo mal.
P.D. He descargado los archivos adjuntos para la siguiente parte - 31, y allí también estos métodos se encuentran en la sección privada de la clase CTrading y también estos dos errores se producen al compilar.
Esto ocurrió después de una actualización reciente. Intenta hacerlos en una sección protegida para que no se pueda acceder a ellos desde fuera. Los públicos son demasiado malos
Esto ha pasado a ser así tras una reciente actualización. Intenta hacerlos en una sección protegida para que no se pueda acceder a ellos desde fuera. Público es muy malo
Ok, lo haré.
Una pregunta más: hay métodos en la sección pública ClosePosition, PlaceBuyStop, PlaceBuyLimit, etc. ¿No es crítico para ellos que estén en la sección pública?

- 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 XXX): Solicitudes comerciales pendientes - Control de los objetos de solicitudes:
En el anterior artículo, creamos las clases de los objetos de solicitudes pendientes que se corresponden con el concepto general de los objetos de la biblioteca. En el presente artículo, nos ocuparemos de la clase que permite controlar los objetos de solicitudes pendientes.
Inicialmente, queríamos crear una clase independiente para controlar las solicitudes pendientes, en la que se concentraran todos los métodos para trabajar con ellas. Pero, finalmente, ha resultado que la clase comercial principal CTrading de la biblioteca y la nueva clase creada para la gestión de solicitudes pendientes están tan estrechamente relacionadas, que es más sencillo crear una nueva clase para controlar los objetos de solicitudes pendientes a través de un heredero de la comercial principal.
Todo el trabajo en cuanto al control de los objetos de solicitudes pendientes se implementa en el temporizador de la clase, por eso, haremos virtual el temporizador de la clase comercial principal, y, por consiguiente, también será virtual el temporizador de la clase de control de solicitudes pendientes. Entonces, escribiremos todo lo relacionado con el temporizador de la clase comercial principal en su temporizador, mientras que todo lo que debe funcionar en la clase de control de los objetos de solicitudes pendientes se escribirá en el temporizador de su clase.
Aparte de la clase de control de objetos de solicitudes pendientes, vamos a crear una pequeña clase para organizar la pausa, para no utilizar en el futuro la función Sleep(), que detiene la ejecución de un programa durante el tiempo de retraso. El objeto de pausa nos permitirá no depender de los ticks, para que también sea posible simular el código que requiere de algún tipo de espera. La pausa se controlará desde el temporizador.
Autor: Artyom Trishkin