Errores, fallos, preguntas - página 2747

 

Buenas tardes, el registro de MT5 muestra este mensaje: 2020.05.21 05:49:44.364 Virtual Hosting failed to get list of virtual hosts (www.mql5.com:443 send request failed [12002])

¿Pueden ustedes decirme qué significa y qué hacer al respecto?

Gracias.

 
fxsaber:
time of [Bench1()] = 1483377
100000000
time of [Bench2()] = 1725035
100000000
time of [Bench1()] = 1523441
100000000
time of [Bench2()] = 1712777
100000000
time of [Bench1()] = 1416779
100000000
time of [Bench2()] = 1452093
100000000
time of [Bench1()] = 1399366
100000000
time of [Bench2()] = 1449939
 
Mihail Matkovskij:

Mi depurador se niega a funcionar en uno de mis proyectos. Además, su comportamiento es difícil de predecir. A veces simplemente se niega a entrar en los puntos de interrupción. También se niega a entrar en algunas funciones. Al principio pensé que el motivo eran las actualizaciones (tal vez algo salió mal en la depuración). Pero en otros programas más sencillos todo parece funcionar. Sin embargo, no lo he revisado mucho porque estoy trabajando en mi proyecto principal. Es bastante complejo e incluye 15 módulos sólo de mi propio diseño (no he contado el número de módulos estándar). El módulo principal contiene hasta 2000 líneas. Pensé que tal vez se trate de la complejidad del proyecto... Además, en algunos lugares utilizo macros para fragmentos de código repetitivos. También utilizo elementos de interfaz de usuario estándar, como CAppDialog, CCheckGroup, CComboBox, CButton, etc. que reescribí para la funcionalidad de mi programa. Quizá la depuración no funcione por culpa de ellos... Por ejemplo, el método CCheckGroup::itemCheckState(const string item) que escribí específicamente no depura. El método encuentra el elemento de la casilla de verificación y comprueba si está seleccionado (su Estado):

Este es el tipo de UI con el que terminé:

Algunos de los elementos de la interfaz de usuario están clasificados temporalmente. Y aquí hay una rama donde describo cómo he anulado los métodos Show() y Hide() del elemento CAppDialog:https://www.mql5.com/ru/forum/338301 El compilador se quejó en ese momento y se produjo un error crítico.

Al final el proyecto compila normalmente, el compilador no genera ningún error. Pero la depuración falla y simplemente no muestra la ejecución de algunos fragmentos de código, funciones, métodos y demás.

Según tengo entendido, puede haber varias razones para ello.

  1. Código complicado del proyecto, uso de macros
  2. Complicación del código por el uso de elementos de interfaz de usuario estándar, como CAppDialog, CCheckGroup, CComboBox, CButton (para los que también escribí nuevos métodos y sobrescribí algunos de los existentes)
  3. Error del depurador relacionado con la nueva compilación (posible, poco probable).

Información sobre la construcción y el sistema:

¿Quién ha tenido problemas similares con el depurador y cuál puede ser la causa?

https://www.mql5.com/ru/forum/1111/page2746#comment_16481481

En el método CCheckGroup::itemCheckState (en el que el depurador no puede entrar) pongo algo así:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CCheckGroup::itemCheckState(const string item) {
  int total = m_strings.Total();
  
  if(total != m_states.Total())
    return -1;
    
  int i = 0;
  for(; i < total; i++) {
    if(m_strings.At(i) == item) {
      Alert(__FUNCTION__ + " item: " + item  + " state: " + (string)m_states.At(i));
      return m_states.At(i);
    }
  }
  
  return -1;
}

Y recibí el siguiente mensaje:

2020.05.21 13:20:44.229 CCheckGroup::itemCheckState item: 39 state: 32

Resulta que el método funciona bien, pero el depurador deja de verlo por alguna razón. Sin un trabajo adecuado del depurador, el trabajo en el proyecto puede retrasarse durante mucho tiempo. Me gustaría que los desarrolladores prestaran atención a este error, probablemente relacionado con el depurador.
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2020.05.21
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Mihail Matkovskij:

https://www.mql5.com/ru/forum/1111/page2746#comment_16481481

Resulta que el método funciona correctamente, pero el depurador deja de verlo por alguna razón.
Si el depurador no funciona correctamente, el proyecto puede retrasarse durante mucho tiempo. Me gustaría que los desarrolladores prestaran atención a este error, probablemente relacionado con el depurador.

Es mucho texto, no lo he leído todo.
Pero si algo funciona en la versión de depuración y no funciona en la versión de lanzamiento, o viceversa, compruebe si todas las variables y campos, especialmente en la clase/estructura, fueron inicializados.

 
Mihail Matkovskij:
si el método es inline, entonces no es problema del depurador, sino del compilador en modo depuración
 
TheXpert:
input int Range = 0;

double Res = 0;

#define  GETCURRENTTICK GetCurrentTick1(Tick)
//#define GETCURRENTTICK GetCurrentTick2(Tick, !i)
//#define GETCURRENTTICK GetCurrentTick3(Tick)

void OnTick()
{
  MqlTick Tick;
    
  for (int i = 0; i < 100; i++)
    if (GETCURRENTTICK)
      Res += Tick.bid;
}

double OnTester()
{
  return(Res);
}

bool GetCurrentTick1( MqlTick &Tick )
{
  return(SymbolInfoTick(_Symbol, Tick));
}

bool GetCurrentTick2( MqlTick &Tick, const bool NewTick = false )
{
  static MqlTick CurrentTick;
  
  if (NewTick)
    SymbolInfoTick(_Symbol, CurrentTick);
  
  Tick = CurrentTick;
  
  return(true);
}

bool GetCurrentTick3( MqlTick &Tick )
{
  static MqlTick _Tick; // Аналог Bid в MT4
  
  _Tick.bid += _Point;  // Хоть какой-то расход вычислительный ресурсов.
  
  Tick = _Tick;
  
  return(true);
}
#define  GETCURRENTTICK GetCurrentTick1(Tick)
#define  GETCURRENTTICK GetCurrentTick2(Tick, !i)
#define  GETCURRENTTICK GetCurrentTick3(Tick)
2020.05.21 14:19:52.450 Core 1  pass 0 returned result 693275970.165784 in 0:00:08.925
2020.05.21 14:19:59.980 Core 1  pass 1 returned result 693275970.165784 in 0:00:07.529
2020.05.21 14:20:07.370 Core 1  pass 2 returned result 693275970.165784 in 0:00:07.390
2020.05.21 14:20:14.694 Core 1  pass 3 returned result 693275970.165784 in 0:00:07.323
2020.05.21 14:20:21.688 Core 1  pass 4 returned result 693275970.165784 in 0:00:06.994
2020.05.21 14:20:29.114 Core 1  pass 5 returned result 693275970.165784 in 0:00:07.425
2020.05.21 14:20:36.133 Core 1  pass 6 returned result 693275970.165784 in 0:00:07.019
2020.05.21 14:20:43.557 Core 1  pass 7 returned result 693275970.165784 in 0:00:07.424
2020.05.21 14:20:49.580 Core 1  pass 8 returned result 693275970.165784 in 0:00:06.022
2020.05.21 14:20:57.273 Core 1  pass 9 returned result 693275970.165784 in 0:00:07.693
2020.05.21 14:21:03.993 Core 1  pass 10 returned result 693275970.165784 in 0:00:06.719
2020.05.21 14:21:03.993 Tester  optimization finished, total passes 11
2020.05.21 14:21:04.003 Statistics      optimization done in 1 minutes 22 seconds
2020.05.21 14:21:04.003 Statistics      shortest pass 0:00:06.022, longest pass 0:00:08.925, average pass 0:00:07.314
2020.05.21 14:21:04.003 Statistics      local 11 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2020.05.21 14:21:49.346 Core 1  pass 0 returned result 693275970.165784 in 0:00:03.050
2020.05.21 14:21:51.108 Core 1  pass 1 returned result 693275970.165784 in 0:00:01.761
2020.05.21 14:21:52.903 Core 1  pass 2 returned result 693275970.165784 in 0:00:01.795
2020.05.21 14:21:54.731 Core 1  pass 3 returned result 693275970.165784 in 0:00:01.827
2020.05.21 14:21:56.536 Core 1  pass 4 returned result 693275970.165784 in 0:00:01.803
2020.05.21 14:21:58.341 Core 1  pass 5 returned result 693275970.165784 in 0:00:01.805
2020.05.21 14:22:00.135 Core 1  pass 6 returned result 693275970.165784 in 0:00:01.793
2020.05.21 14:22:01.912 Core 1  pass 7 returned result 693275970.165784 in 0:00:01.777
2020.05.21 14:22:03.663 Core 1  pass 8 returned result 693275970.165784 in 0:00:01.750
2020.05.21 14:22:05.458 Core 1  pass 9 returned result 693275970.165784 in 0:00:01.794
2020.05.21 14:22:07.274 Core 1  pass 10 returned result 693275970.165784 in 0:00:01.815
2020.05.21 14:22:07.274 Tester  optimization finished, total passes 11
2020.05.21 14:22:07.284 Statistics      optimization done in 0 minutes 21 seconds
2020.05.21 14:22:07.284 Statistics      shortest pass 0:00:01.750, longest pass 0:00:03.050, average pass 0:00:01.906
2020.05.21 14:22:07.284 Statistics      local 11 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2020.05.21 14:23:00.873 Core 1  pass 0 returned result 661757660284.981689 in 0:00:02.859
2020.05.21 14:23:02.704 Core 1  pass 1 returned result 661757660284.981689 in 0:00:01.830
2020.05.21 14:23:04.488 Core 1  pass 2 returned result 661757660284.981689 in 0:00:01.783
2020.05.21 14:23:06.227 Core 1  pass 3 returned result 661757660284.981689 in 0:00:01.737
2020.05.21 14:23:07.778 Core 1  pass 4 returned result 661757660284.981689 in 0:00:01.550
2020.05.21 14:23:09.517 Core 1  pass 5 returned result 661757660284.981689 in 0:00:01.738
2020.05.21 14:23:11.288 Core 1  pass 6 returned result 661757660284.981689 in 0:00:01.771
2020.05.21 14:23:12.997 Core 1  pass 7 returned result 661757660284.981689 in 0:00:01.708
2020.05.21 14:23:14.815 Core 1  pass 8 returned result 661757660284.981689 in 0:00:01.817
2020.05.21 14:23:16.621 Core 1  pass 9 returned result 661757660284.981689 in 0:00:01.805
2020.05.21 14:23:18.313 Core 1  pass 10 returned result 661757660284.981689 in 0:00:01.691
2020.05.21 14:23:18.313 Tester  optimization finished, total passes 11
2020.05.21 14:23:18.323 Statistics      optimization done in 0 minutes 21 seconds
2020.05.21 14:23:18.323 Statistics      shortest pass 0:00:01.550, longest pass 0:00:02.859, average pass 0:00:01.844
2020.05.21 14:23:18.323 Statistics      local 11 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Sobre el tema de que las funciones de SymbolInfo sean gratuitas.

 
TheXpert:
tal vez el método sea inline, entonces no es problema del depurador, sino del compilador para el modo de depuración

Exactamente, el proyecto resultó estar desbordado de macros, tanto mías como de módulos estándar. Quizá por eso el depurador no siempre consigue hacer coincidir los comandos del archivo de depuración *.ex5 con las líneas del archivo fuente *.mq5 y otros módulos...

 
fxsaber:
Las funciones de SymbolInfo son gratuitas.

por lo que es el coste de la función en sí, no el coste de pasar la cadena por valor, ¡no por referencia!

Tu versión con la caché es toda una solución, si es que la ejecución de esta función toma un porcentaje significativo del tiempo de ejecución del EA (cosa que realmente no creo)

 
Mihail Matkovskij:

Exactamente, el proyecto resultó estar desbordado de macros, tanto mías como de módulos estándar. Quizá por eso el depurador no siempre consigue hacer coincidir los comandos del archivo de depuración *.ex5 con las líneas del archivo fuente *.mq5 y otros módulos...

quizás tu estructura de archivos es tan compleja que el depurador no puede asociar un punto de interrupción, entonces es problema del depurador.
 
TheXpert:

es el coste de la función en sí, no el coste de pasar la cadena por valor, ¡no por referencia!

Eso es lo que me llevó inicialmente.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Errores, fallos, preguntas

fxsaber, 2020.05.20 13:24

Es mejor tener

const MqlTick _Tick; // Текущий _Symbol-тик.

En el optimizador estas funciones son llamadas decenas de miles de millones de veces.


Por otra parte, tu variante con la caché es toda una solución, si la ejecución de esta función ocupa un porcentaje importante del tiempo de ejecución de un EA (cosa que realmente no creo)

En una determinada etapa, no sólo la parte relativa del tiempo empleado se vuelve importante, sino también la parte absoluta.