Errores, fallos, preguntas - página 2244

 
Ilyas:

No importa qué datos contenga un array no inicializado, en cualquier momento los datos pueden cambiar, nadie garantiza su valor.
Por eso el uso de variables no inicializadas (lectura de memoria) a veces lleva a situaciones, con una larga búsqueda de la causa:

  1. Funciona en un ordenador, pero no en el otro
  2. Funciona en el terminal, no en el probador
  3. Después de actualizar el programa terminal/OS se comportó de manera diferente
  4. He añadido Imprimir ya no funciona.
  5. etc.

Sólo puedo dar algunos consejos.
Debes acostumbrarte a inicializar siempre los datos, para que en el futuro no pierdas mucho tiempo buscando errores relacionados con la falta de inicialización.

Gracias por la aclaración y los consejos.

 
Ilyas:

ArrayResize no limpia la memoria, por lo que contiene basura del "consumidor" anterior.

Esto se hace por velocidad, porque después de asignar memoria a un array, en el 99,99(9)% de los casos, el usuario lo "llenará" con sus datos.


Esta no es la explicación correcta, lo que puede causar problemas a los novatos; el archivo de ayuda ArrayResize tiene la explicación correcta.

En esencia, los novatos tienen que entender primero qué es un array y cómo se almacena en la memoria, cómo se crea y cómo se le asigna la memoria, entonces no tendrán ningún problema.

ps. en general, la implementación de arrays en MQL5 es peor que en C++, así como las estructuras.

En programas sencillos la implementación de arrays es exitosa, en los complejos se convierte en un problema

 
Artyom Trishkin:

¿Qué quieres decir con "no"? Nadie saca la memoria de la ranura de la placa base. Una vez que la memoria está presente y se libera (no se inicializa con un valor, sino que se libera), se utilizará para otras necesidades del programa.

La memoria, es la información almacenada, no el medio de almacenamiento, que es la barra de RAM.

No sabía que la memoria no se pone a cero, sino que sólo se liberan/asignan direcciones para almacenarla y tienes que organizar tú mismo la liquidación.

Gracias.
 

Hace tiempo que noto que la búsqueda de brokers/servidores de trading no funciona correctamente al abrir una cuenta demo a través de la Terminal.

Introduzco el nombre del corredor y no obtengo nada


Si introduzco el nombre completo del servidor de comercio obtengo el resultado deseado


 

Instalación de MT5 1882, archivo descargado del sitio web (https://download.mql5.com/cdn/web/metaquotes.software.corp/mt5/mt5setup.exe?utm_source=www.mql5.com&utm_campaign=download).
UAC activado, se produce un error antes de conceder los derechos de administrador.
Ejecutar como administrador no resuelve el problema, sólo oculta el cuadro de mensaje de error.




 

¿Algún consejo? Construir 1881 mt5. Estoy ejecutando la optimización normal. El resultado es que la optimización se vuelve a ejecutar, pero los agentes locales no se inician, sólo se conectan y desconectan. Nada en los registros de los agentes.

Sólo el reinicio de mt ayuda.

 

En la misma construcción me encontré con un problema. Mt no quiere anexar al final del archivo como estaba antes - siempre lo frota

int f = FileOpen(file,FILE_COMMON|FILE_READ|FILE_WRITE|FILE_TXT);

 

2018.07.26 19:23:56.269 Error de autorización del agente probador del núcleo 01

Cómo es ))) ... y ¿qué hacer?

 
Anton Ohmat:

2018.07.26 19:23:56.269 Error de autorización del agente probador del núcleo 01

Cómo es ))) ... y ¿qué hacer?

En el mejor de los casos, la ventana del renderizador no está cerrada. En el peor de los casos, un antiguo problema conocido.

 
Anton Ohmat:

En la misma construcción me encontré con un problema. Mt no quiere anexar al final del archivo como estaba antes - siempre lo frota

int f = FileOpen(file,FILE_COMMON|FILE_READ|FILE_WRITE|FILE_TXT);

¿Realiza un FileSeek al final del archivo antes de escribirlo?