Errores, fallos, preguntas - página 725

 
Snaf: Yo mismo encontré el error en el primer script, pero no tengo suficiente cerebro para el segundo .

Bild 630

Este ejemplo está escrito utilizando la nueva versión del compilador MQL5. Nos disculpamos por no haber tenido en cuenta este aspecto. Pero saldrá pronto. Por favor, espere un poco y todo se compilará.
 
MetaDriver: Sí, bueno, es con el manejo de las cadenas que también me equivoqué. Mi función solía ensamblar una cadena larga a partir de trozos devueltos por otras funciones (generación de programas OpenCL). En el depurador es como un reloj - la construcción se bloquea y dice "Acces Violation"... ;)

Estuve a punto de escribir al Servicio de Atención al Cliente, pero de la nada funcionó. :) No pude reproducirlo más (aunque lo intenté honestamente), así que ¿por qué debería enviarlo al servicio técnico?

Sí, hay un claro problema con CLProgramCreate(). He localizado específicamente en qué parte del script estaba el primer fallo de ejecución, y era en esta función. La función no devuelve ningún valor.

El programa CL en forma de cadena parece reproducirse correctamente. Pero el programa CL en sí no se crea.

 
Cuando se realizan pruebas en cruces, también se modelan con precisión otros tipos para la correcta conversión de los beneficios y los requisitos de margen.

Pruebe a ejecutar la visualización y comprenderá de inmediato el volumen de los cálculos basados en el número de caracteres de fondo en el marketwatch.
 
Por favor, dígame cómo combinar mi portátil y PC, cuando las estrategias de prueba, los equipos están trabajando a través de un router, uno a través de cable, el otro a través de Wi-Fi, trató de crear en el archivo de la computadora de escritorio mt5, me tiró a la computadora portátil, añadido a la sección de control remoto, pero los nombres de los agentes son los mismos que en un ordenador portátil
 

del puesto https://www.mql5.com/ru/forum/1111/page736#comment_185306

localizado el problema al punto :

- en función de la clase CFastFile::ReadInteger

Resulta que en el 630/64 la asignación de estructuras o la lectura de arrays en arrays se fastidiaba, aunque la peor variante parece ser la conversión de con signo (short/int/char) en sin signo (ushort/uint/uchar).

En algún lugar hay bits extra o compensaciones. Como resultado, el programador lee un número muy diferente al previsto. Le resultará más fácil resolverlo y volver a comprobarlo en la función.

Pero funciona de forma estable en el mismo código en 4 ordenadores (el código es grande, no puedo estirar la trama).

 
lazarev-d-m:
Por favor, dígame cómo fusionar mi portátil y PC, cuando las estrategias de prueba, los equipos están trabajando a través de un router, uno a través de cable, el otro a través de Wi-Fi, trató de crear un archivo mt5 en un ordenador de sobremesa, lo lanzó en el portátil, añadido a la sección de control remoto, pero los nombres de los agentes son los mismos que en un ordenador portátil
¿No funciona? Terminal de cliente / Probador de estrategias / Agentes
 
Yedelkin:
¿No funciona así? Terminal de cliente / Probador de estrategias / Agentes
Debo haber hecho algo mal, ahora he creado el archivo mt5 de nuevo, ahora el portátil ve los procesadores del PC, pero nada va más allá en la prueba, ¿cuál puede ser el problema, y es necesario añadir los procesadores del portátil al probador de PC, si no voy a utilizarlos en el PC?
 

Desarrolladores, ¡me habéis conquistado con este bicho! Como se dice, "estoy llorando".

Funciones de CFastFile ( ::ReadInteger)

        uint ReadArray(uchar &dst[], uint dst_start=0, int cnt=WHOLE_ARRAY) { int r=ArrayCopy(dst, m_data, dst_start, m_pos, cnt); if (r>0) m_pos+=r; return(r); }
        ushort ReadShort() { __2 b={0}; __short d={0}; ReadArray(b.v, 0, 2); d=b; return(d.v); }
        uint ReadInteger(int sz=INT_VALUE)
        {
                if (sz==SHORT_VALUE) { ushort s=ReadShort(); return(s); }
                return(ReadInt());
        }


Devuelve un sinsentido al leer SHORT_VALUE.


Empecé a indagar, a entender las diferentes opciones para leer desde un array.

Resultó que si en lugar de ushort s=ReadShort() se pone el cuerpo de la función ReadShort mismo, todos los números se leen normalmente.

Pero entonces encontré una variante que realmente me hizo llorar.

        uint ReadInteger(int sz=INT_VALUE)
        {
                if (sz==SHORT_VALUE) { ushort s=ReadShort(); if (s==426) Print(s); return(s); }
                return(ReadInt());
        }

Es decir, la función Imprimir transforma mágicamente un número s erróneo en uno correcto y devuelve el valor correcto.


Queridos desarrolladores, ¡entra en razón! ¡¡¡Estás haciendo una basura!!!

¿Cómo compensará las pérdidas en el mercado derivadas de su propia actitud hacia su producto?

Al fin y al cabo, MT5 no es más que un enorme recurso para el consumidor, que es atendido por terceros programadores.

¡Y usted con sus acciones negligentes cuestiona su competencia y la calidad de sus programas!

 
sergeev:

Desarrolladores, ¡me habéis conquistado con este bicho! Como se dice, "estoy llorando".

Funciones de CFastFile ( ::ReadInteger)

Espera, pero este es tu código de la clase CFastFile, ¿no? ¿Qué tienen que ver los desarrolladores de plataformas?

//+------------------------------------------------------------------+
//|                                                         FastFile |
//|                                            Copyright © 2006-2012 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006-2012"
#property version "1.00"
#property library
 
Renat:

Espera, pero este es tu código de la clase CFastFile, ¿no? ¿Qué tienen que ver los desarrolladores de la plataforma?



Sí Renat, ese es mi código.

Funcionaba en las versiones anteriores. Pero dejó de funcionar en el actual 630/64.

Y sigue funcionando con éxito en 630/32.


El fallo que he encontrado es bastante extraño y, francamente, da miedo.