Errores, fallos, preguntas - página 2931

 

El 10, el consumo de memoria del Terminal se muestra elevado. En Windows Server es mucho menos.

Al parecer, el cálculo del consumo de memoria depende del sistema operativo.

 
fxsaber:

Este es el tipo de característica que, aunque la conozcas, tienes que volver a plantear toda la capa en tu cabeza.

Aquí estaba haciendo una determinación de presencia autodeclarada. Parece que funciona al cambiar de TF.

No me he metido de lleno, pero a juzgar por estas líneas:

    const int Total = ::IndicatorParameters(handle, Type, Params);
    ::IndicatorRelease(handle);

    uchar Bytes[];

    for (int i = 1; i < Total; i++)
    {
      ::ArrayCopy(Bytes, _R(Params[i].double_value).Bytes, ::ArraySize(Bytes));
      ::ArrayCopy(Bytes, _R(Params[i].integer_value).Bytes, ::ArraySize(Bytes));
      ::ArrayCopy(Bytes, _R(Params[i].string_value).Bytes, ::ArraySize(Bytes));
    }

El nombre del indicador (en el parámetro 0) no se utiliza en la creación de la firma, lo cual es bastante extraño.

 
fxsaber:

El 10, el consumo de memoria del Terminal se muestra elevado. En Windows Server es mucho menos.

Al parecer, el cálculo del consumo de memoria depende del sistema operativo.

Más bien, la reserva de memoria en los ejes del servidor es más óptima.
 
Stanislav Korotky:

No me he metido de lleno, pero a juzgar por estas líneas:

el nombre del indicador (en el parámetro 0) no se utiliza en la creación de la firma, lo cual es bastante extraño.

return("::" + (string)::ChartID() + (string)INIT_SYNC::crc64(Bytes) + ::MQLInfoString(MQL_PROGRAM_NAME));
 
fxsaber:

Sí, me lo he encontrado. Validar inicia la primera pasada, las siguientes no. El botón de inicio no arranca.

Depurado - se ejecuta. Hice la depuración en la versión, todo está supuestamente bien, pero no funciona.


Ahora especialmente lanzo la versión de depuración. Presiona el botón de inicio sin problemas.

No he podido averiguar el motivo del fallo.

Hace poco vi esta respuesta.

Según tengo entendido son mis agentes locales los que no arrancan, por lo que no se ha averiguado. Parece que arranca mejor en las últimas versiones del terminal.

 
fxsaber:

El 10, el consumo de memoria del Terminal se muestra elevado. En Windows Server es mucho menos.

Aparentemente, el cálculo del consumo de memoria depende del sistema operativo.

Tengo la sensación de que el servidor no es del todo correcto en Windows Server.

O, más precisamente, la configuración de los gráficos se restablece constantemente y depende de la escasez de memoria. Al mismo tiempo, todo parece ser normal en el despacho. O vpc es limitado o mt5 es más voraz.

 
Print(PERIOD_H4);

da un resultado de 16388. ¿Cómo puedo hacer el procedimiento inverso: sustituir el valor 16388 y obtener una cadena con el nombre de periodoPERIOD_H4? ¿Existe una función integrada o debo escribir mi propio convertidor? Si no hay ninguna función incorporada, ¿cómo sería una función personalizada? ¿Sería necesario escribir algo así como una correspondencia clave-valor?

Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Периоды графиков - Константы графиков - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
x572intraday:

da un resultado de 16388. ¿Cómo puedo hacer el procedimiento inverso: sustituir el valor 16388 y obtener una cadena con el nombre de periodoPERIOD_H4? ¿Existe una función integrada o debo escribir mi propio convertidor? Si no hay ninguna función incorporada, ¿cómo sería una función personalizada? ¿Sería necesario escribir algo así como una correspondencia clave-valor?

Print(EnumToString((ENUM_TIMEFRAMES)16388));
 
fxsaber
Print(EnumToString((ENUM_TIMEFRAMES)16388));

Resulta que lo hay. Eso es un alivio. Gracias.

 

Estoy tratando de permitir al usuario seleccionar ambos plazos y su número desde el menú de la ventana de configuración del indicador:

enum PERIOD
  {
   NO_PERIOD=0,      // NOT USED
   P1=PERIOD_H1,     // H1 
   P2=PERIOD_H2,     // H2 
   P3=PERIOD_H4,     // H4 
  };

input PERIOD TIMEFRAME_1=P1;
input PERIOD TIMEFRAME_2=P2;
input PERIOD TIMEFRAME_3=P3;

ENUM_TIMEFRAMES PArray[3]={P1,P2,P3};

y quiero que los períodos seleccionados vayan directamente a PArray. Pero del ejemplo anterior resulta que asigno al array los valores preestablecidos en el programa y no los valores introducidos por un usuario. Además, el compilador genera advertencias:

implicit conversion from 'enum PERIOD' to 'enum ENUM_TIMEFRAMES'        test.mq5        23      28
   'ENUM_TIMEFRAMES::PERIOD_H1' will be used instead of 'PERIOD::P1'    test.mq5        23      28
implicit conversion from 'enum PERIOD' to 'enum ENUM_TIMEFRAMES'        test.mq5        23      31
   'ENUM_TIMEFRAMES::PERIOD_H2' will be used instead of 'PERIOD::P2'    test.mq5        23      31
implicit conversion from 'enum PERIOD' to 'enum ENUM_TIMEFRAMES'        test.mq5        23      34
   'ENUM_TIMEFRAMES::PERIOD_H4' will be used instead of 'PERIOD::P3'    test.mq5        23      34

Cuando intento sustituir la última línea por

ENUM_TIMEFRAMES PArray[3]={TIMEFRAME_1,TIMEFRAME_2,TIMEFRAME_3};

el compilador genera un error por completo:

'TIMEFRAME_1' - constant expression required    test.mq5        23      28
'TIMEFRAME_2' - constant expression required    test.mq5        23      40
'TIMEFRAME_3' - constant expression required    test.mq5        23      52

Además, NO_PERIOD=0 significaPERIOD_CURRENTE, y eso no lo necesito, necesito algo como false o EMPTY_VALUE, pero no encajan en absoluto.

¿Cómo solucionarlo?

Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Периоды графиков - Константы графиков - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5