Errores, fallos, preguntas - página 2588

 
Aleksey Vyazmikin:

Sigo sin entenderlo: ¿tiene predictores que requieren un cálculo más profundo? Realmente necesito uno - MA en los días :) Sólo estoy haciendo pruebas un año antes y el comercio antes de esa fecha puede ser prohibido...

Sí, la profundidad de la historia es necesaria durante más de un año. La solución ya se ha encontrado. Ahora también haré un lanzamiento anticipado de 3 años y me los saltaré.
 
La KB no pasa el código. Da estos errores
MQL5\Include\fxsaber\BestInterval\Deal.mqh(10,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\Deal.mqh(10,34) : error 279: 'ToNull' - call non-const method for constant object
MQL5\Include\fxsaber\BestInterval\Deal.mqh(10,34) : error 279: 'ToNull' - call non-const method for constant object
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(202,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(202,34) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(214,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(214,34) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(225,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(225,34) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(416,33) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(416,35) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(435,33) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(435,35) : error 351: 'ToNull' - access to non-static member or function

Por favor, actualice el compilador KB.

 
Vladimir Simakov:
Cuando vuelva de las vacaciones, si no es mucha molestia, estudiaré la cuestión. Pero lógicamente el fallo puede estar en tu código y no en mql.
Por cierto, sólo por diversión, ¿qué pasa si tienes una biblioteca que funciona con según qué codificación? ¿Está seguro de que utf-16, pero lo que si es utf-8, después de todo, el más común.

Todavía no lo he comprobado, gracias por el consejo. Voy a indagar en esa dirección.
La biblioteca es para Ocean, las clases con las que estoy trabajando están seleccionadas con una W, es decir, Unicode.

Según entiendo la codificación.

const char *Utf8;
const char *Ansi;
const wchar_t *Utf16;
const wchar_t *Utf32;

utf-16 implica el tipo wchar_t, la función de la biblioteca que lee la cadena devuelve const wchar_t*
De esto se desprende que la función devuelve un puntero a la cadena en codificación utf-16
En las propiedades del proyecto, el soporte de caracteres Unicode también está seleccionado.
La documentación de mql dice que la cadena funciona en Unicode.

 

Estoy optimizando de nuevo, no sé si podré probar la velocidad de ejecución de este código:

void OnStart()
{  datetime m_stoptime = 0;
//1.
   if(m_stoptime < TimeCurrent())
   {
      //расчеты   
   }


//2.
   MqlTick last_tick;
   if(SymbolInfoTick(_Symbol, last_tick))
   {  if(m_stoptime < last_tick.time) 
      {
         //расчеты
      }
   }

}

¿Sospecho que la variante 2 será más rápida?

si es así, donde pueden ser las trampas - Yo uso en OnTick() - para buscar en el tiempo de comercio optimizador, buscando maneras de optimizar el código


ZS: Puedo preguntar cómo comprobar las opciones de velocidad número 1 y número 2, es muy probable que el compilador optimice el código ejecutable y las pruebas no sean correctas - por eso pregunto

 
Igor Makanu:

Puedo preguntar cómo comprobar las variantes 1 y 2 en términos de velocidad, hay una alta probabilidad de que el compilador optimice el código ejecutable y las pruebas no sean correctas - por lo que pregunto

¿Ejecutar la prueba habitual por separado para 1 y 2 y comparar los tiempos? )

Si el tiempo es insignificante, ejecute la misma optimización con la opción 1 y la opción 2.

 
Igor Makanu:

HH: Puedo preguntar cómo probar las variantes #1 y #2 en velocidad, es muy probable que el compilador optimice el código ejecutable y las pruebas no sean correctas - por eso pregunto

https://www.mql5.com/ru/code/18804

TesterBenchmark
TesterBenchmark
  • www.mql5.com
При написании разных версий кода может возникнуть необходимость измерения влияния их на общую производительность советника в тестере. Это позволяет не только понять, насколько оптимален написанный код по сравнению с другим, но и дает предпосылки к будущей быстрой оптимизации советника. Такой подход позволяет выявить "бутылочное горлышко" в...
 
Igor Makanu:

Estoy optimizando de nuevo, no sé si podré probar la velocidad de ejecución de este código:

Sospecho que la variante 2 correrá más rápido?

si es así, donde pueden ser las trampas - uso en OnTick() - para encontrar en el tiempo de comercio optimizador, buscando formas de optimizar el código


ZS: Puedo preguntar cómo comprobar las opciones de velocidad número 1 y número 2, es muy probable que el compilador optimice el código ejecutable y las pruebas no sean correctas - por eso pregunto

Compruebe en el modo de depuración. Se supone que el compilador no optimiza ahí, aunque no sé cómo funciona realmente.
 

Pregunta sobre ArrayResize. Hago una reserva para varios gigabytes a la vez. Luego aumento gradualmente el tamaño, que es menor que la reserva inicial.

¿Por qué TaskManager muestra un aumento del consumo de memoria durante el aumento de tamaño?

 
fxsaber:

Pregunta sobre ArrayResize. Hago una reserva para varios gigabytes a la vez. Luego aumento gradualmente el tamaño, que es menor que la reserva inicial.

¿Por qué TaskManager muestra un aumento del consumo de memoria durante el aumento de tamaño?

Porque además de metatrader está el sistema operativo Windows, que en última instancia decide, a cuál de las docenas de procesos (por cierto, cada uno de ellos tiene 4 GB de espacio de direcciones por defecto) realmente se le debe asignar memoria RAM (¿cuánta memoria RAM tienes ahí?).
 
Andrey Khatimlianskii:

¿Realizar una prueba normal por separado para 1 y 2 y comparar los tiempos? )

Si el tiempo es insignificante, ejecute la misma optimización con la variante 1 y la variante 2.

Estoy haciendo algo mal, todavía no pude ver la diferencia, los resultados flotan alrededor de 0,1 segundos en una sola carrera

Razón de la queja: