Errores, fallos, preguntas - página 1628

 
HistoryOrderGetInteger(OrderTicket, ORDER_TIME_DONE_MSC ) - ¡devuelve cero en el probador!
 

Error en la apertura de un expediente por parte del examinador. Y si por ejemplo

1. eliminar "algunos códigos irrelevantes" (ver más abajo)

2. o eliminar ::Sleep(1000)

no hay ningún error

//Test.mq5
#import "Test001.ex5"
        string f( string file );
#import
string __Period() { return StringSubstr( EnumToString((ENUM_TIMEFRAMES)Period()), 7 ); }
void OnInit()
{
        Print( Symbol(), ",", __Period(), ", результат=", f( "test.txt" ));
}

Secuencia de acciones:

1. Cree un nuevo perfil (por ejemplo, "Prueba")

2. abrir dos nuevos gráficos adjuntando el Asesor Experto Test.ex5 a ambos (ver imagen)

4. Seleccione cualquier otro perfil existente

5. Seleccione el perfil de "Prueba".

resultado:

Con Test001.mq5 con este aspecto:

//Test001.mq5
#property library
//---
//здесь некий код не имеющий отношения к делу
//---
string f( string file ) export
{
        ::ResetLastError();
        int hFile = ::FileOpen( file, FILE_READ | FILE_SHARE_READ | FILE_TXT | FILE_ANSI | FILE_COMMON );
        if ( hFile == INVALID_HANDLE )
                return ::StringFormat( "Error(%d): Не был открыт файл: %s", ::GetLastError(), file );
        ::Sleep( 1000 );
        ::FileClose( hFile );
        return "OK";
}
Archivos adjuntos:
Test001.ex5  16 kb
 

El archivo test.txt no se adjunta al mensaje, pero tiene el siguiente aspecto

Información adicional: ubicación del archivo a abrir en el sentido de FILE_COMMON - no afecta al error

 
Andrey Barinov:

Se trata de la optimización del código.

Si en metaeditor.ini en el campo [Expertos] escribe OPTIMIZE=0, entonces la velocidad de compilación será como en el 4. Tengo algunos proyectos que compilan en 20 segundos y otros entran en un bucle de optimización infinito :)

¡Vaya, gracias amigo! ¿Dónde estabas antes? ) Y estábamos agonizando aquí... Lo más extraño es que los desarrolladores no dijeron nada sobre esta opción
 
Alexey Navoykov:
¡Vaya, gracias amigo! ¿Dónde has estado antes? ) Y aquí estamos sufriendo... Lo extraño es que los desarrolladores no hayan dicho nada sobre esta opción.

No es silencioso. Hay un tema de 18 páginas en el foro donde se acaba de describir esta opción.

Por cierto, la optimización no se activa cuando se compila para la depuración.

 
Andrey Barinov:

Se trata de la optimización del código.

Si en metaeditor.ini en el campo [Expertos] escribe OPTIMIZE=0, entonces la velocidad de compilación será como en el 4. Tengo algunos proyectos que compilan en 20 segundos, y otros entran en un bucle de optimización infinito :)

¡Exactamente! Dicho esto, yo mismo lo puse a 1 hace tiempo y me olvidé de ello. ))

Alexey Navoykov:
... Y todavía estamos luchando aquí... Lo extraño es que los desarrolladores no hayan dicho nada sobre esta opción

El tema fue discutido en detalle:Prueba de un nuevo compilador MQL5 para plataformas x64 - ¡aceleración de 2 a 10 veces!>>>

>>> Lo había olvidado. )

Al principio ni siquiera me funcionaba esta optimización. Es decir, la compilación fallaría en algunos casos. Pero luego logré encontrar la razón. Luego se arregló y puse el parámetro a 1 en uno de los terminales y me olvidé de él. Y ayer estaba sentado y me preguntaba por qué en un editor de MT5 la compilación es mucho más rápida que en otro editor de MT5.

//---

Ahora, si lo pongo a 0, la compilación es ~25 veces más rápida.

0 error(s), 0 warning(s), compile time: 668 msec                1       1
 
Anatoli Kazharski:

Por supuesto, mis proyectos más complejos en MetaTrader 5 también tardan mucho en compilarse. Incluso tarda hasta 11 segundos. Exactamente las mismas versiones, pero en MetaTrader 4 puede ser hasta 25 veces más rápido.

En MT5, el compilador es más avanzado y optimiza el código para que se ejecute hasta 10 veces más rápido que en MT5. Ya hemos escrito sobre ello y lo hemos explicado antes.

El compilador de MQL5 tiene que crear dos copias del código para la compatibilidad - para la antigua versión de 32 bits (sin optimización completa) y la versión optimizada al máximo para 64 bits. Toda la potencia de MQL5 se revela sólo en 64 bits.

 
Renat Fatkhullin:

El compilador de MT5 es más avanzado, optimiza el código para que se ejecute hasta 10 veces más rápido que MT5.

Además, el compilador tiene que crear dos copias del código por compatibilidad: para la versión antigua de 32 bits (sin optimización completa) y la versión optimizada al máximo para 64 bits. Toda la potencia de MQL5 se revela sólo en 64 bits.

Gracias. Ya he refrescado la memoria en el hilo donde se habló de todo esto.

Lo pondré a 0 para el tiempo de desarrollo porque a menudo tengo que compilar el código y es muy pesado esperar 10 segundos. Y para el producto final antes de la compilación final, voy a poner 1.

 
Renat Fatkhullin:

En MT5, el compilador es más avanzado y optimiza el código para que se ejecute hasta 10 veces más rápido que en MT5. Ya hemos escrito y explicado esto antes.

El compilador de MQL5 tiene que crear dos copias del código para la compatibilidad - para la antigua versión de 32 bits (sin optimización completa) y la versión optimizada al máximo para 64 bits. Toda la potencia de MQL5 se revela sólo en 64 bits.

Si se cambia el parámetroOPTIMIZE cuando el MetaEditor está funcionando, ¿es necesario recargarlo para que acepte los ajustes o no?
 
coderex:
si se cambia el parámetroOPTIMIZE cuando el MetaEditor está en marcha, ¿es necesario recargarlo para que acepte los ajustes o no?
Es más rápido probarlo uno mismo. Acabo de probarlo. No es necesario reiniciar el editor.
Razón de la queja: