Errores, fallos, preguntas - página 311

 

Error en la nueva compilación, sólo posible en sistemas x64 (concretamente windows 7, procesador core i7). En la versión anterior no existía este error. Este error tiene el siguiente significado.

Si no cambio el código fuente del Asesor Experto de forma significativa (por ejemplo, cambiar sólo el valor de alguna variable) y vuelvo a compilar después, el resultado de la prueba sigue siendo el mismo.

Incluso llegué a lo siguiente :

¡¡¡¡En la función void OnTick() inserto return; :) compilo, ejecuto y el resultado es el mismo !!!! Aunque en general, la línea debería ser.

La salida era o bien borrar el archivo *.ex5 y volver a compilar, o bien escribir alguna chorrada para que el compilador pateara, y luego compilar.

Mañana comprobaré si ocurre lo mismo en SO x32 bit.

También me he dado cuenta de que tarda demasiado en abrir nuevas ventanas con gráficos en x64 y tarda demasiado en eliminarlos.

Y el terminal se cuelga con la inscripción "sin respuesta" durante unos 5 segundos.

 
bobsley:

Error en la nueva compilación, sólo posible en sistemas x64 (concretamente windows 7, procesador core i7). En la versión anterior no existía este error. Este error tiene el siguiente significado.

Si no cambio el código fuente del Asesor Experto de forma significativa (por ejemplo, cambiar sólo el valor de alguna variable) y vuelvo a compilar después, el resultado de la prueba sigue siendo el mismo.

Incluso llegué a lo siguiente :

¡¡¡¡En la función void OnTick() inserto return; :) compilar, ejecutar, y el resultado es el mismo!!!! Aunque en general, la línea debería ser.

La salida era o bien borrar el archivo *.ex5 y volver a compilar, o bien escribir alguna chorrada para que el compilador pateara, y luego compilar.

Mañana comprobaré si ocurre lo mismo en SO x32 bit.

También me he dado cuenta de que tarda demasiado en abrir nuevas ventanas con gráficos en x64 y tarda demasiado en eliminarlos.

Y el terminal se cuelga con la inscripción "sin respuesta" durante unos 5 segundos.

Compruebe esta carpeta (nombre de usuario UsernameData\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5) tal vez su EA compilará allí
 
bobsley:

Error en la nueva compilación, sólo posible en sistemas x64 (concretamente windows 7, procesador core i7). En la versión anterior no existía este error. Este error tiene el siguiente significado.

Si no cambio el código fuente del Asesor Experto de forma significativa (por ejemplo, cambiar sólo el valor de alguna variable) y vuelvo a compilar después, el resultado de la prueba sigue siendo el mismo.

Incluso llegué a lo siguiente :

¡¡¡¡En la función void OnTick() inserto return; :) compilo, ejecuto y el resultado es el mismo !!!! Aunque en general, la línea debería ser.

La salida era o bien borrar el archivo *.ex5 y volver a compilar, o bien escribir alguna chorrada para que el compilador pateara, y luego compilar.

Mañana comprobaré si ocurre lo mismo en SO x32 bit.

...

No he detectado este error especialmente pero he notado un comportamiento similar en 32 bits. Es el error que se configura si compilas una expresión que no has terminado, como un punto y coma.
 
Im_hungry:
¡por supuesto que hay una historia, pero no todos los gusanos tienen una historia de difusión!

1. No hablaremos de todo, solo de este, el servidor del desarrollador - access.metatrader5.com:443 (bueno, no he conocido a nadie con mejor historial en MT5 por el momento).

Tomemos mi guión, no es muy bueno, pero sin embargo no está terminado. Vamos a ejecutarlo en TF "1 semana" y el número de barras 930.

Obtenemos el siguiente resultado

2011.02.22 11:38:50     -   1:1993.05.09 00:00 open = 1.2368, high = 1.2368, low = 1.2084, close = 1.219, volume = 252, spread = 50
2011.02.22 11:38:50     -   0:1993.05.02 00:00 open = 1.2334, high = 1.2466, low = 1.2267, close = 1.2332, volume = 0, spread = 0
2011.02.22 11:38:50     -   Скопировано баров: 930

Aparentemente, los spreads de las barras semanales son de 1993.05.02 y la historia de las barras es aún más profunda. Pero estos datos pueden no ser tan profundos si el euro existe oficialmente desde 1999 (aunque, Dios mediante, es otra cuestión).

2. ahora vamos a intentar especificar la profundidad de la información de los spreads en los gráficos diarios.

Tomemos como base el hecho de que hay 5 días de negociación en una semana y tratemos de encontrar el inicio de la historia de los datos de los spreads en los gráficos diarios (diré desde el principio que el número aproximado es 4630).

2011.02.22 11:56:06     -   2:1993.05.13 00:00 open = 1.2148, high = 1.2158, low = 1.2084, close = 1.2099, volume = 100, spread = 50
2011.02.22 11:56:06     -   1:1993.05.12 00:00 open = 1.2138, high = 1.2171, low = 1.2105, close = 1.2152, volume = 0, spread = 0
2011.02.22 11:56:06     -   0:1993.05.11 00:00 open = 1.2167, high = 1.2202, low = 1.2121, close = 1.2141, volume = 0, spread = 0
2011.02.22 11:56:06     -   Скопировано баров: 4630

Así, podemos ver que la historia del spread en las barras diarias comienza a partir de 1993.05.13.

PS

Creo que más ordenados por analogía (la fecha más antigua en el marco de tiempo más pequeño como yo entiendo y será ese lugar que estamos buscando) ...

Sólo señalaré que se extiende sobre:

H12 disponible desde 1993.05.13 (pero las barras allí como entendí diariamente) - la profundidad es aproximadamente 7790 bares

Los H6 están disponibles desde 1993.05.13 (barras diarias) - la profundidad es de aproximadamente 14100 barras

 
sergey1294:
Compruebe esta carpeta (Username\Data\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5) tal vez su EA compilará allí

Lo he comprobado, por supuesto, está todo en blanco. Y por qué iba a serlo, tengo los espertos en ..|Ejemplos

ahí es donde aparecen sus compilaciones.

Hoy lo he comprobado en el SO x32 en el trabajo. ¡Antes de la actualización estaba bien, actualicé el terminal e inmediatamente el mismo fallo!

 
 double op, sp;
     
     if ( ObjectGetDouble ( 0,"Open", OBJPROP_PRICE,0,op) &&  ObjectGetDouble ( 0,"Stop", OBJPROP_PRICE,0,sp ) ){
     
        if ( is40x_b0[0] > 0 && Tick.bid > op && Tick.bid < sp ){ <--------------- Дает предупреждение possible use of uninitialized variable 'sp'
         Sell(); 
        }
        
        if ( is40x_b1[0] > 0 && Tick.ask < op && Tick.ask > sp ){
         Buy(); 
        }

     }
 
Academic:


tiene que ser así
 double op=0, sp=0;
 
sergey1294:
Tiene que ser así.
¿Por qué?
 
Academic:
¿Por qué?

Realmente no hay nada malo en esto.

Las variables se restablecen durante la inicialización.

Aquí puedes comprobarlo.

int i;

printf("i=%d",i);

 
bobsley:

Realmente no hay nada malo en esto.

Las variables se restablecen durante la inicialización.

Aquí puedes comprobarlo.

int i;

printf("i=%d",i);

Esta advertencia no debería darse, porque se pasa una referencia a la función ObjectGetDouble y la sentencia if comprueba la verdad devuelta por ambas llamadas, y por lo tanto, sólo si ambas funciones devuelven verdadero entonces se manejan estas variables, lo que significa que estas dos variables no pueden ser establecidas al valor correcto.

Документация по MQL5: Графические объекты / ObjectGetDouble
Документация по MQL5: Графические объекты / ObjectGetDouble
  • www.mql5.com
Графические объекты / ObjectGetDouble - Документация по MQL5