Errores, fallos, preguntas - página 2107

 
Vladislav Andruschenko:

Estoy de acuerdo. Tenemos que cambiarlo.

Hay una rama en esta regla.

Организация цикла перебора ордеров
Организация цикла перебора ордеров
  • 2017.09.16
  • www.mql5.com
MQL4 и MetaTrader 4: Организация цикла перебора ордеров
 
fxsaber:

Hay una rama en esta regla.


sí he leído fragmentos sobre la función de acceso al historial sólo cuando se cambia el entorno, y he visto sus enlaces en otros hilos.

al grano, el error apareció después de leer su opción.

 
fxsaber:

Esta es una lógica incorrecta. Después de que OrderSend falle y OrderSend tenga éxito, el entorno comercial actual debe leerse completamente de nuevo. Esta norma debería estar siempre en vigor.

Sobre los códigos de devolución. No los analizo en mis EAs. Creo que la lógica del comercio no debería depender de ellos.

Teóricamente, puede producirse un timeout durante una pérdida de conexión con el servidor del broker.

En este caso, es mejor no hacer nada hasta que se restablezca y el entorno comercial esté totalmente sincronizado con el servidor.

¿Cómo se puede evitar llegar a esa situación sin analizar el código de retorno?

 

Error de compilación.


Archivo Test.mqh.

int Tmp = 1;


Código principal

#include "Test.mqh"

void OnStart()
{
  Print(Tmp);
  Print(Tmp2); // 'Tmp2' - undeclared identifier
}

#define  Tmp Tmp2
#include "Test.mqh"


Resulta que las inlusiones repetidas se ignoran. ¡Pero es un error en esta situación!

Necesitamos una construcción de este tipo para el siguiente propósito. Un Asesor Experto está contenido en un archivo .mqh. Pero necesito poder ejecutarlo en una cuenta real (primer incloud) y en mi tester (segundo incloud).

 
Andrey Khatimlianskii:

Teóricamente, un timeout puede ocurrir durante una pérdida de comunicación con el servidor del broker.

En este caso, es mejor no hacer nada hasta que se restablezca y el entorno comercial esté totalmente sincronizado con el servidor.

¿Cómo se puede evitar llegar a esa situación sin analizar el código de retorno?

Hemos enviado un OrderSend y no hemos esperado respuesta del servidor, obteniendo un timeout en el log y _LastError. Ignoramos _LastError y recibimos sólo false.

Después, si tenemos una conexión, volvemos a montar el entorno comercial y tomamos una decisión.

Por supuesto, siempre es conveniente comprobar el entorno seleccionado antes de recoger la información.

 
fxsaber:

Envió OrderSend y no esperó una respuesta del servidor, obteniendo un timeout en el log y _LastError. Ignoramos _LastError y recibimos sólo false.

Después, si tenemos una conexión, volvemos a montar el entorno comercial y tomamos una decisión.

Por supuesto, siempre es conveniente comprobar el entorno seleccionado antes de recoger la información.

Esto es posible si trabajamos con OnTick. ¿Y si no?

¿Cómo comprobar la conexión?

 
Andrey Khatimlianskii:

Esto funcionará si se trabaja en OnTick. ¿Y si no?

¿Cómo se comprueba la conexión?

TerminalInfoInteger(TERMINAL_CONNECTED);
 
fxsaber:
TerminalInfoInteger(TERMINAL_CONNECTED);

Históricamente, no me fío. Tendré que probarlo en 5...

 

El problema de los tiempos de espera no es que no haya conexión, sino que la petición ha recibido un tiempo de espera.

Por un lado, lo veo así: hay una señal para abrir una operación, hacemos una solicitud, obtenemos un tiempo de espera, pero la operación se abre.

aunque el Asesor Experto haya recibido un error.

comprobar el entorno comercial: vemos un acuerdo abierto.

¿pero cómo entender que la operación fue abierta por esta señal? si hubo, por ejemplo, 10 señales?

es decir, comprobar si ha aparecido una nueva operación en el historial (en el terminal).


todavía no he entendido la idea

@A100

¿qué solución ve usted?

 
fxsaber:

Resulta que la reincorporación se ignora. ¡Pero esto es un error en esta situación!

Necesito una construcción de este tipo para la siguiente. Un Asesor Experto está contenido en un archivo mqh. Pero necesito poder ejecutarlo en una cuenta real (primer incloud) y en mi tester (segundo incloud).

Todo es correcto y se ignora adecuadamente.

Los hacks de Cish no pasan.

Razón de la queja: