Errores, fallos, preguntas - página 1490

 
Vladislav Andruschenko:

en general, los resultados son ambiguos, la prueba es tosca..:

el script simplemente muestra la hora y el precio en el probador:

..................

¿está la memoria virtual en uso? intente desactivarla. (sólo si Windows está en SSD)

En Windows 7 haga clic con el botón derecho en "Mi PC", luego en "Propiedades", después en la lista de la izquierda "Propiedades avanzadas del sistema" y de izquierda a derecha en secuencia:

Estoy en HDD, por lo que se utiliza la memoria virtual

 
todo está apagado
 
Vladislav Andruschenko:
todo está apagado.
Un agente es comprensible. Las tareas más complejas del mundo son resueltas por agentes.
 
Señores, administradores y usuarios experimentados de Metatrader4, por favor ayúdenme una vez más.
Un suscriptor de mi señal se quejó de que una de sus operaciones estaba duplicada, mientras que sólo había una en mi cuenta. ¿Qué debería hacer en su terminal para evitar un escenario así en el futuro?
 
Artem Prischepa:
Señores, administradores y usuarios experimentados de Metatrader4, por favor ayúdenme una vez más.
Un suscriptor de mi señal se quejó de que una de sus operaciones estaba duplicada, mientras que sólo había una en mi cuenta. ¿Qué debo ajustar en mi terminal para evitar este tipo de situaciones en el futuro?
En el lado del abonado, la apertura de dos terminales provoca la duplicación de la señal recibida.
 
lilita bogachkova:
En el lado del abonado, la apertura de dos terminales provoca una duplicación de la señal recibida.
Si es posible, explique esto con más detalle. Si sólo hay un terminal suscrito a la señal, ¿cómo puede duplicar la apertura de una posición un segundo terminal abierto?
 
Maxim Khrolenko:
Me gustaría saber más al respecto. Si sólo hay un terminal suscrito a la señal, ¿cómo puede la presencia de un segundo terminal abierto duplicar la apertura de una posición?

Había alguna señal gratuita, me inscribí. Dejé mi ordenador en marcha y abrí un terminal en otro ordenador para probar estrategias (misma cuenta), ambos terminales funcionan con portátiles. Miré en la cuenta que se abrió una operación, luego otra, luego otra, y el lado de la señal está a medias. Cerré un terminal y las operaciones dejaron de duplicarse.

 

MT4. Quiero llamar la atención sobre la diferencia en el orden de inicialización de las variables globales y las variables externas. No se menciona en la documentación.

La variable externa se encuentra en el ámbito global y por el tipo de variable (global o local) se refiere a la global, como está escrito en la documentación y en el tutorial de Kovalev.

Como la documentación no dice nada sobre el orden de inicialización de extern, es lógico concluir que el orden de inicialización de extern es el mismo que el de la propia variable global.

De hecho, las diferencias son significativas. Las variables globales a y b se inicializan una vez antes de que se ejecute la primera función init; conservan sus valores iniciales (o modificados en el código), si el marco temporal o el símbolo del gráfico han cambiado.

La variable extern int c no guarda el valor cambiado en el código y, si se ha cambiado el marco temporal o el instrumento en el gráfico, toma el valor inicial especificado. El código siguiente lo muestra.

Esto es importante saberlo para entender por qué, en igualdad de condiciones, los resultados del código que se ejecuta desde la ventana "Propiedades" o la recompilación difieren de los resultados del código que se ejecuta cambiando de marco temporal o de símbolo.

A continuación se muestra el código que muestra esto. Cambiando el marco temporal o el instrumento varias veces podemos ver que a y b crecen, mientras que c mantiene su valor original.

extern int c=1;
int a=1,b=1;
void  OnInit()
  {Print(" a=",a," b=",b," c=",c);
  a++;b++;c++;
  }


 
Yuri Evseenkov:

MT4. Quiero llamar la atención sobre la diferencia en el orden de inicialización de las variables globales y las externas. No se menciona en la documentación.

Sí, así es.

#property strict
extern int c=1;
int a=1,b=1;
int OnInit()
  {
   Print(" a=",a," b=",b," c=",c); a++;b++;c++;
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason) { }
void OnTick() { }


 
¿Existe una opción en el servidor de MT4 para desactivar la función CloseBy?