Errores, fallos, preguntas - página 1168

 
TheXpert:

Ta maaa...

Tienes que poner un doble de la larga antes de la transferencia. Para la variable global. No es cero, es un doble aleatorio, puede ser 1,34*e-307 o 4,29*e+120, porque tiene bits logarítmicos.

Después de transferir unzip de dub a long.

Eso es todo.

Vale, lo has conseguido ;)

 
artmedia70:

Vale, lo has conseguido ;)

Pues no entiendo qué es lo que no está claro.

El doble trunca los datos, por lo que no se puede transferir directamente el largo al doble. Pero ambos son de 8 bytes cada uno, por lo que se puede transferir sin pérdidas simplemente usando el doble como contenedor, que es lo que hice en el ejemplo.

 
TheXpert:

Pues no entiendo qué es lo que no está claro.

El doble trunca los datos, por lo que no se puede transferir directamente el largo al doble. Pero ambos son de 8 bytes cada uno, por lo que se puede transferir sin pérdidas simplemente usando el doble como contenedor, que es lo que hice en el ejemplo.

Andrey, no he entendido el formato de almacenamiento y visualización en GV del terminal. Parecía mostrar el ID del gráfico, pero muestra 0.
 
artmedia70:
Andrey, no he entendido el formato de almacenamiento y visualización en el GV del terminal. Parecía mostrar el ID del gráfico, pero muestra 0.

GV mostrará algo parecido a la basura en apariencia, esta "basura" se convertirá en el ID del gráfico después de la conversión inversa.

El duble tiene su propio formato de datos, al meter el largo, ponemos el formato duble y lo usamos solo como 8 bytes de memoria.

 
TheXpert:

GV mostrará algo parecido a la basura en apariencia, esta "basura" se convertirá en el ID del gráfico después de la conversión inversa.

El duble tiene su propio formato de datos, al meter el duble ponemos el formato del duble y lo usamos simplemente como 8 bytes de memoria.

Sí, ya me he dado cuenta de eso, gracias.
 
Algo que noto es que la actualización de una librería o recursos enchufados a algún otro script (indicador) hace que éste (el indicador) se recompile y recargue la terminal. No hay demanda. ¿Es un error o una característica? P.D. Se trata de MT4.
 
artmedia70:

Es más bien una pregunta:

Buscando un GV existente de la terminal por su nombre. A través de él se pasa al indicador el ID del gráfico en el que se está ejecutando el EA. El indicador cuelga de otro símbolo. Es decir, quiero pasar al indicador el ID del gráfico en el que se está ejecutando el Asesor Experto. Lo busco así:

Esto es lo que dice el terminal:


Intenté leer la variable. Lo puse directamente en la cadena y lo puse en el diario, así como en variables de diferentes tipos - todo lo mismo. Hay dos diferencias.

¿Qué hay de malo en eso?

Lea aquí https://www.mql5.com/ru/docs/basis/types/casting párrafo "Conversión de datos de estructuras simples".

Exactamente su caso. Los dobletes tienen una precisión mucho menor en _número_ de caracteres que los largos. Por eso se obtiene este resultado con la asignación simple.

Pero puedes usar completamente los 64 bits de una variable global para almacenar _cualquier_ información de 64 bits de longitud (como cadenas cortas de 8 bytes de longitud. Sin mencionar los longs)

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
[Eliminado]  
Me he encontrado con el siguiente problema. Después de reiniciar el terminal el indicador devuelve valores "extraños" de otro marco temporal cuando se llama desde el EA.
El Asesor Experto está en M2, los datos del indicador se toman de M3.
1) Hay un reinicio de la terminal a las 14:40:
PE 0 14:39:50.524 Terminal
MD 0 14:40:06.009 Terminal MetaTrader 5 Alfa-Forex x64 build 930 iniciado
II 0 14:40:06.586 Terminal No se ha encontrado OpenCL, instale el último controlador OpenCL para mejorar el rendimiento
JO 0 14:40:07.257 Expertos experto FX_Money_Flow_v1_06 (EURUSD,M2) cargado con éxito
El Asesor Experto escribe los valores del indicador en la última y penúltima barra:
OF 0 14:40:11.540 FX_Money_Flow_v1_06 (EURUSD,M2) El valor del indicador TF1: -1.#QNAN -1.#QNAN
ya en la siguiente barra los datos son correctos:
NJ 0 14:41:46.622 FX_Money_Flow_v1_07 (EURUSD,M2) valor del indicador TF1: -0,02798411604597126 -0,04893498839583753
2) Segunda reanudación a las 19:55:
CO 0 19:55:06.918 Terminal
RO 0 19:55:28.399 Terminal MetaTrader 5 Alfa-Forex x64 build 930 iniciado
OP 0 19:55:28.992 Terminal No se ha encontrado OpenCL, instale el último controlador OpenCL para mejorar el rendimiento
RD 0 19:55:29.507 expertos experto FX_Money_Flow_v1_07 (EURUSD,M2) cargado con éxito
Otra vez la misma canción:
PQ 0 19:55:38.168 FX_Money_Flow_v1_07 (EURUSD,M2) valor del indicador TF1: -1.#QNAN -1.#QNAN

Pero no empieza a funcionar correctamente todo el tiempo:

KF 0 23:59:51.987 FX_Money_Flow_v1_07 (EURUSD,M2) Valor del factor TF1 indicador: -1.#QNAN -1.#QNAN


El gráfico M3 está abierto en este momento y hay un indicador en él que muestra todo correctamente:
(la diferencia de tiempo entre el terminal y los registros es de 5 horas, la captura de pantalla se refiere al segundo reinicio)
Archivos adjuntos:
 
OBJ_LABEL no parece soportar UNICODE en MT4? He cambiado el valor tanto programáticamente como desde el diálogo de propiedades de la etiqueta: el símbolo se inserta y se muestra correctamente en el propio diálogo, pero en el gráfico aparece como un signo de interrogación (?). El tipo de letra es unicode, y en el diálogo de propiedades de la etiqueta está correctamente seleccionada en la lista desplegable con los tipos de letra.
 
stringo:

Lea aquí https://www.mql5.com/ru/docs/basis/types/casting párrafo "Conversión de datos de tipos de estructuras simples".

Este es exactamente su caso. Los dobletes tienen una precisión mucho menor en _número_ de caracteres que los largos. Por eso se obtiene este resultado con la asignación simple.

Pero puedes utilizar completamente los 64 bits de la variable global para almacenar _cualquier_ información de 64 bits de longitud (como cadenas cortas de 8 bytes de longitud. Sin mencionar los longs)

Sí, lo he leído, gracias.