Discusión sobre el artículo "Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XXVII): Trabajando con las solicitudes comerciales - Colocación de órdenes pendientes" - página 2

 
Реter Konow:

Casi 4 megabytes de código, y el esquema de la biblioteca y los métodos personalizados no se proporcionan... ¿Estás escribiendo para ti mismo?

Mira a través de los ojos de tus usuarios. Cómo es para ellos entender todo esto sin puntos de referencia.

Unos buenos puntos de referencia autosuficientes son los propios artículos. No sólo tienen directrices, sino que también se mastican a fondo - si usted era demasiado perezoso para leerlos.

El esquema estará al final de la creación de la biblioteca. Así como los métodos de caso de usuario para acceder rápidamente a todas las funciones de la biblioteca.

 
Реter Konow:

Concretamente en este artículo no se dice por qué se decide enviar una orden pendiente inmediatamente después de la conexión a Internet, sin volver a preguntar al usuario.

Hay una advertencia de que las órdenes pendientes presentadas en el artículo no se pueden utilizar en el comercio real. Es decir, todo son pruebas de concepto y nada más.

No hay ninguna explicación para establecer una orden después de volver a conectarse a Internet sin preguntar al usuario.

¿Y realmente se necesitan varios artículos para probar un mecanismo sencillo de una solicitud de operación pendiente? Además, es más fácil y correcto sondear de nuevo al usuario y ya está.

Veo enseguida que no has escrito funciones de trading y que no entiendes muy bien de qué estamos hablando.

Voy a tratar de decirle de nuevo (que estaba en el último artículo): hay algunos errores del servidor de comercio que requieren un cierto retraso antes de volver a enviar una solicitud de comercio al servidor.
Normalmente se sugiere hacer este retraso con la ayuda de Sleep(). Pero detiene la ejecución del programa. Por lo tanto, todo el programa esperará a que la pausa dentro del método trade se complete antes de reenviar la solicitud de operación al servidor.
¿Es esto bueno? En el caso general y más simple, está bien.
Pero un Asesor Experto puede ser multidivisa. Y durante el tiempo de espera no hará nada más que este tiempo de espera.
¿Es bueno? Creo que no - el Asesor Experto debe seguir vigilando el entorno de todos sus símbolos de trabajo. Esto es exactamente lo que le proporcionan las peticiones pendientes: cuando recibe un error del servidor que requiere espera, crea una petición pendiente con el número requerido de intentos y el tiempo de espera requerido entre ellos, y sigue haciendo su trabajo. A continuación, la propia clase de negociación enviará a tiempo al servidor la solicitud de negociación necesaria. Al mismo tiempo, primero comprobará "si el tiempo para la ejecución de todos los intentos asignados para la solicitud de comercio ha terminado". Por lo tanto, el Asesor Experto no enviará órdenes obsoletas al servidor después de ciento cincuenta horas.

Y si tanto le gusta comunicarse con el programa, las "solicitudes de operación pendientes" que he propuesto permiten al usuario establecer una condición para el envío de una orden de operación. Usted establece la condición y se dedica a sus asuntos: en cuanto se produzca la condición, se activará la solicitud. Este es uno de los muchos métodos para crear una lógica de negociación para los Asesores Expertos. Y cuando la biblioteca estará disponible para construir un shell gráfico para sus programas, entonces será fácil crear herramientas para la creación de la lógica de negociación - introduzca los valores necesarios, especifique el tipo de solicitud y cuando tiene que trabajar, y eso es todo ....

Esto es lo primero que se me ocurre para explicar y responder a tu pregunta "por qué es necesario todo esto" - todo se hace no "aquí y ahora", sino ladrillo a ladrillo, gradualmente.

 
Artyom Trishkin:

Es inmediatamente obvio que no has escrito funciones de comercio, y no sabes realmente de lo que estás hablando.

Intentaré decírtelo de nuevo (estaba en el último artículo): hay algunos errores del servidor de comercio que requieren cierto retraso antes de reenviar una petición de comercio al servidor.
Normalmente se sugiere hacer este retraso con la ayuda de Sleep(). Pero detiene la ejecución del programa. Por lo tanto, todo el programa esperará a que la pausa dentro del método trade se complete antes de reenviar la solicitud de operación al servidor.
¿Es esto bueno? En el caso general y más simple, está bien.
Pero un Asesor Experto puede ser multidivisa. Y durante el tiempo de espera no hará nada más que este tiempo de espera.
¿Es bueno? Creo que no - el Asesor Experto debe seguir vigilando el entorno de todos sus símbolos de trabajo. Esto es exactamente lo que le proporcionan las peticiones pendientes: cuando recibe un error del servidor que requiere espera, crea una petición pendiente con el número requerido de intentos y el tiempo de espera requerido entre ellos, y sigue haciendo su trabajo. A continuación, la propia clase de negociación enviará a tiempo al servidor la solicitud de negociación necesaria. Al mismo tiempo, primero comprobará "si el tiempo para la ejecución de todos los intentos asignados para la solicitud de comercio ha terminado". Por lo tanto, el Asesor Experto no enviará órdenes obsoletas al servidor después de ciento cincuenta horas.

Y si tanto le gusta comunicarse con el programa, las "solicitudes de operación pendientes" que he propuesto permiten al usuario establecer una condición para el envío de una orden de operación. Usted establece la condición y se dedica a sus asuntos: en cuanto se produzca la condición, se activará la solicitud. Este es uno de los muchos métodos para crear una lógica de negociación para los Asesores Expertos. Y cuando la biblioteca estará disponible para construir un shell gráfico para sus programas, entonces será fácil crear herramientas para la creación de la lógica de negociación - introduzca los valores necesarios, especifique el tipo de solicitud y cuando tiene que trabajar, y eso es todo....

Esto es lo primero que se me ocurre para explicar y responder a su pregunta "¿por qué es necesario todo esto?" - todo se hace no "aquí y ahora", sino ladrillo a ladrillo, gradualmente.

Si la conexión con el servidor se interrumpe, todos los cálculos en el Asesor Experto se detienen, porque el motor principal de los cálculos es el precio.
Sin Internet - sin ticks - nada que calcular en un Asesor Experto multidivisa. Tiene que esperar a que se restablezca la conexión. Después de que la conexión se restablece, es necesario preguntar sobre el envío de las órdenes fallidas, y antes de eso, usted puede sentarse en el ciclo de espera para la conexión - no hay nada que hacer de todos modos.
 
Реter Konow:
Si la conexión con el servidor se interrumpe, todos los cálculos en el Asesor Experto se detienen, porque el motor principal de los cálculos es el precio.
Sin Internet - sin ticks - nada que calcular en un Asesor Experto multidivisa. Es necesario esperar a la conexión. Después de que se restablezca la conexión, usted necesita preguntar sobre el envío de las órdenes fallidas, y antes de eso, usted puede sentarse en el ciclo de espera para la conexión - no hay nada que hacer de todos modos.
Pyotr, el fallo de conexión no es el único error que requiere esperar antes de repetir. Sólo te estás aferrando a un error artificial para hacer pruebas...
No habrá Sleep-waiting en la biblioteca.
 
Artyom Trishkin:
Peter, el fallo de conexión no es el único error que requiere esperar antes de repetir. Te estás aferrando a un error artificial para probar.....
No habrá Sleep-waiting en la biblioteca.

Es imposible rastrear todas las llamadas del EA al servidor.


  • Usted puede rastrear las órdenes enviadas al servidor SÓLO a través de los métodos de su librería. ¿Y si las órdenes se envían a través de sus propias funciones?
  • ¿Cómo va a realizar el seguimiento y qué puede hacer en caso de fallo de conexión/conexión si el EA utiliza sus propios métodos para comunicarse con el servidor?
De ahí la pregunta:
  • ¿Qué más puedes sugerir como solución a los problemas de comunicación con el servidor que no sea reenviar las órdenes fallidas?


Lo pregunto porque la solución al problema de reenviar órdenes fallidas (obviamente) no requiere complicación y se resuelve de forma sencilla.

 
Artyom Trishkin:

...

Permítanme tratar de decirlo de nuevo (que estaba en el último artículo): hay algunos errores del servidor de comercio que requieren un cierto retraso antes de volver a enviar la solicitud de comercio al servidor.
Normalmente se sugiere hacer este retraso usando Sleep(). Pero esto detiene la ejecución del programa. Por lo tanto, todo el programa esperará a que se complete la pausa dentro del método trade antes de enviar una nueva solicitud al servidor.
...

Necesidad de una lista específica de tales errores, y una explicación - LO QUE la biblioteca ofrece como solución.

Necesidad de los usuarios para que apliquen las funciones de la biblioteca en lugar de las suyas propias.

¿Cuáles son estos errores y cuáles son sus soluciones en términos generales?

 
Реter Konow:

...

Lo pregunto porque la solución al problema del reenvío de órdenes fallidas (obviamente) no requiere complicación y se resuelve de forma sencilla.

He mirado el último artículo. Allí es sólo sobre el fracaso de enviar una orden debido a la falta de disponibilidad del servidor. La forma de la solución es mucho más complicada de lo que podía imaginar. Pero, la esencia de la solución no se complica.

No hay solución para otros tipos de peticiones repetidas.

 
Реter Konow:

He mirado el último artículo. Sólo habla del fallo en el envío de un pedido debido a la indisponibilidad del servidor. La forma de la solución es mucho más complicada de lo que podía imaginar. Pero la esencia de la solución no se complica.

No hay solución para otros tipos de peticiones repetidas.

Compruébelo :)
Cómo no darse cuenta de que para probar el tratamiento de las consultas pendientes he emulado a propósito sólo uno de los posibles errores... En el siguiente artículo he simplificado esta emulación - hay una reacción al botón de auto-negociación en el terminal.
Y la lista de errores está en el código. No quiero explicarlo otra vez para los que no lo leen.
 
Artyom Trishkin:
Y lo pruebas :)
Cómo no darse cuenta de que para probar el procesamiento de las solicitudes pendientes, emulé especialmente sólo uno de los posibles errores.... En el próximo artículo he simplificado esta emulación - hay una reacción al botón de auto-negociación en el terminal.
Y la lista de errores está en el código. No quiero explicarlo de nuevo para aquellos que no lo leen.

Esto no es una respuesta.

Usted no quiere comunicarse sobre el tema, y mostrar lo que las solicitudes pendientes de la biblioteca puede manejar.

Cada petición pendiente (no orden) necesita su propia solución, - su propia magia, sus propias propiedades, sus propios métodos y así sucesivamente. ¿Y dónde está?

 
Реter Konow:

Eso no es una respuesta.

Usted no quiere comunicar sobre el tema, y mostrar lo que las solicitudes pendientes de la biblioteca puede manejar.

Cada petición pendiente (no orden) necesita su propia solución - su propio magik, sus propias propiedades, sus propios métodos y así sucesivamente. ¿Y dónde está?

No soy yo quien no quiere comunicar sobre el tema, sino que tu no entiendes la esencia de este tema.
En tres artículos estamos probando un nuevo concepto de comercio - el comercio con las solicitudes pendientes. Poco a poco se añaden nuevos objetos-peticiones en cada artículo. Además, esto es sólo una prueba del concepto en unaclase creada temporalmente. En el cuarto artículo de este tema, se crearán clases completas de tales objetos. Y no son muchas, pero son suficientes para cubrir todas las necesidades del concepto.
Sólo, para no hacértelo contar todo de nuevo, por favor, intenta entender por qué lo necesitas y qué posibilidades puede darte. Sólo he puesto un par de ejemplos, lo que me ha venido inmediatamente a la cabeza.