Errores, fallos, preguntas - página 2767

 
Artyom Trishkin:

A juzgar por el comportamiento que has descrito, se trata de un EA diferente con un algoritmo completamente distinto.

Todos lo descubrimos, quizás sea un bug del terminal o quizás haya sido diseñado por los desarrolladores, pero la cosa es que cuando se ejecuta una prueba sobre el historial de cualquier conjunto, al final de la prueba obtenemos un gráfico, pero todo el historial de este periodo se superpone automáticamente sobre él desde el historial real.

Comparé los resultados, luego fui al registro y comparé los precios de las posiciones de apertura del probador y de una operación real, casi todos coinciden, hay una ligera diferencia.

Pero el hecho es que las operaciones reales se superponen a este gráfico después de la prueba.

Para evitar su superposición hice lo siguiente

simplemente haga clic derecho en el diario y desactivar la actualización automática, ahora todas las pruebas muestran sólo las operaciones que se han probado en el probador en este gráfico, las operaciones reales no se han aplicado a ella.

Le pedí a la gente del grupo que ejecutara sus robots de trading durante un período en el que tuvieran algo negociado en este símbolo, usando robots, lo que sea, todos han confirmado este hecho de que además de las transacciones en el probador, el gráfico se superpone con las operaciones reales que se negociaron en el pasado.


Si tiene operaciones en cualquier instrumento, ejecute cualquier robot para este periodo y verá que estas operaciones se aplicarán al gráfico y si el autotrading está desactivado, no se aplicarán las reales.

Creo que merece la pena decírselo a los desarrolladores, me gusta este fallo, ahora puedo probar el robot durante una semana y comparar la diferencia de operaciones en el gráfico, lo ideal sería que se diferenciara en un par de ticks

 
Konstantin Seredkin:

Además de las operaciones del probador, se superponen en el gráfico las operaciones reales realizadas en el pasado.

Este comportamiento es invisible para quienes utilizan símbolos personalizados. Pero para los símbolos reales parece bastante inconveniente.

 

En el depurador, el valor deGetLastError(); no se puede recuperar?

sólo a través de una variable o predefinida _LastError ?

Archivos adjuntos:
 
awsomdino:

En el depurador, el valor de GetLastError(); no se puede recuperar?

Sólo a través de una variable o predefinida _LastError ?

Sí, aquí es donde _Valor resulta útil.

 
fxsaber:

Sí. Para eso sirve _Valor.

Quizá los desarrolladores añadan la posibilidad de buscar en el depurador desde la funciónGetLastError();

de lo contrario, estas cómodas y sencillas 2 líneas son inútiles

   if(GetLastError()>0)
      DebugBreak();
 
awsomdino:

quizá los desarrolladores añadan la posibilidad de mirar en el depurador desde la funciónGetLastError();

De lo contrario, estas cómodas y sencillas 2 líneas son inútiles.

No utilice sólo esta función.

 

Con el fin de minimizar el número de entradas de las correcciones de "revisión" anteriores, no se han transferido los defectos corregidos anteriormente:

Defectos en el funcionamiento de la función/clase de la plantilla:
(no corregido por MT5(build 2474)) *** Error de compilación, error al intentar acceder a la clase interna para el parámetro de la función de la plantilla.
(no se ha solucionado con MT5(build 2474)) ** Error de compilación, error en el valor de retorno de una función de plantilla cuando el valor de retorno es una clase interna dentro de una clase de plantilla cuyo tipo de parámetro está especificado por el tipo de argumento de la función de plantilla.
(no se ha solucionado con MT5(build 2474)) ** Error de compilación, error de espacio de nombres y alcance en el constructor de la plantilla al llamar a la clase base cuando se utiliza el mismo nombre de clase en la herencia y la clase interna.
(no se ha solucionado con MT5(build 2474)) * Error de compilación, error en la llamada a una función de plantilla con tipos de argumentos explícitos cuando se llama desde una función sobrecargada no de plantilla.
(no corregido
por MT5(build 2474)) Error de compilación, error en la definición de la clase interna - no hay referencia al espacio de nombres global cuando se especifica una clase base.
(no se ha solucionado con MT5(build 2474)) * Error de compilación, al llamar a la sentencia de asignación a través de la indicación explícita de la clase base. El problema se produce en el caso de una clase de plantilla en la que el parámetro de la plantilla actúa como clase base.
(corregido
por MT5(build 2474)) Error de compilación, cuando se utiliza el modificador de acceso por defecto para la herencia en una clase de plantilla donde el parámetro de la plantilla es una clase base.
(arreglado por MT5(build 2474)) * (nuevo) Error de compilación, error de compilación al heredar de la clase de plantilla del espacio de nombres.
(arreglado por MT5(build 2474)) ** (nuevo) Error de compilación, no se accede al operador= por defecto desde el objeto puntero.
(no se ha solucionado
con MT5(build 2474)) *** (nuevo) Error decompilación, error de compilación para la declaración hacia adelante del método de la clase de la plantilla .
(
no se ha solucionado con MT5(build 2474)) **(nuevo) Error decompilación cuando la clase contiene un puntero a una clase envolvente que utiliza la clase como campo.


Defectos relacionados con la falta de coincidencia de las prioridades de las llamadas a funciones sobrecargadas en MQL frente a C++:
(no solucionado en MT5(build 2474)) ** Error de compilación cuando la primera de las funciones de plantilla sobrecargadas utiliza una clase base de plantilla totalmente especializada y la segunda utiliza una clase base de plantilla no especializada.
(no se ha solucionado con MT5(build 2474)) ** Error de compilación, se produce un error de compilación al generar el código de una función de plantilla a pesar de que existe una función de plantilla sobrecargada con una firma adecuada para los parámetros pasados.
(no se ha solucionado con MT5(build 2474)) * Error de compilación, "llamada ambigua a función sobrecargada" cuando se llaman funciones de plantilla sobrecargadas con diferente número de parámetros de plantilla.

( no está arreglado por MT5(build 2474)) *** Error de compilación, error al llamar a funciones de plantilla sobrecargadas.
( no está arreglado por MT5(build 2474)) ** Error de compilación, la conversación de tipos implícita se utiliza cuando se llama a una función para un argumento con el tipo de datos color a pesar de que existe una función de plantilla sobrecargada con el tipo de datos color.
( no está arreglado por MT5(build 2474)) * Error de compilación, a pesar de la especialización explícita, la llamada a la función de plantilla sobrecargada sigue llamando a la función de plantilla por defecto, lo que lleva a un desbordamiento de pila...
( no está arreglado por MT5(build 2474)) * Error de compilación, error de compilación al llamar a una función a través de su puntero cuando se utiliza una matriz de punteros de función.
( arreglado por MT5(build 2474)) * (nuevo) Error de compilación, problemas con la prioridad de llamada de las funciones sobrecargadas en el espacio de nombres.

Errores relacionados con el MetaEditor:
(no solucionado por ME5(build 2474)) *** Debugger, un punto de interrupción en elmétodo de estructuraestática hace que el terminal MT se cuelgue.
(no se ha solucionado en ME5(build 2474)) ** Compilación, la descripción del error de compilación no cabe en el límite de 256 caracteres y se corta, lo que hace imposible entender para qué tipo de datos se genera el error porque la parte requerida se corta.
(arreglado en ME5(build 2474)) ** Depurador, StepInto (F11) y establecer puntos de interrupción no funcionan.
(arreglado en ME5(build 2474)) * Depurador, después de disparar un punto de ruptura en lugar de continuar la ejecución del código pulsando (F5), se vuelve a disparar el mismo punto de ruptura sin ejecutar ningún código.
(no se ha solucionado en ME5(build 2474)) * Compilación, firma incorrecta del parámetro de la plantilla de funciones en la descripción de errores y en la información de los parámetros.
(no se ha solucionado en ME5(build 2474)) * MetaEditor, la funcionalidad de Reemplazar (Strl + H) no funciona para la habilitación de "En la selección" junto con "Dirección hacia atrás" cuando se selecciona la parte necesaria de la aplicación, pero no todo el código.
(no se hasolucionado con ME5(build 2474)) * (nuevo) MetaEditor, la activación de un punto de interrupción engaña al usuario haciéndole creer que se ha cumplido una condición de entrada, cuando en realidad puede no ser así en absoluto.


Defectos relacionados con la ejecución lenta de funciones, optimizador de código:
(corregido por MT5(build 2474)) **(arriba) Tiempo de ejecución, gran sobrecarga al añadir un elemento a la vez en un array usando ArrayResize, a pesar de que la memoria para ellos ha sido reservada de antemano, por ejemplo, las estructuras son hasta 7 veces más lentas.


Sugerencias:
- añadir a la búsqueda/reemplazo de ME por el proyecto actual, mientras que durante la refactorización ir a través de cada uno de los archivos y buscar la ocurrencia no es muy bueno.
link- en ME en la compilación para rellenar las columnas vacías Archivo, Línea, Columna con la información apropiada sobre el archivo fuente, desde el cual se hizo la inclusión.
link- sobre la introducción del soporte de intellisense para la funcionalidad del espacio de nombres sobre la base del trabajo de intellisense para los métodos estáticos en las clases.
enlace- sobre la posibilidad de pasar literales y variables temporales como argumentos const ref de una función.
enlace - almover los archivos del proyecto en la pestaña "Proyecto", para los archivos movidos que se abren y están en las pestañas de ME, para actualizar automáticamente su ruta de ubicación.
enlace- sobre la necesidad de introducir la funcionalidad de declaración typedef en MQL.
enlace- sobre la posibilidad de forzar la generación de constructores de copia y operadores de asignación por defecto.

 
Sergey Dzyublik :

Para minimizar el número de entradas de la última "revisión" de las correcciones, no se han arrastrado los defectos corregidos anteriormente:
.
..

¿Está esto en tu lista? Si no es así, podría añadir esto por favor.

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

¿Sintaxis MQL incorrecta?

Dan Marinescu, 2020.05.27 22:47

He definido una interfaz universal y quiero utilizarla en otra clase. No puedo entender qué es lo que está mal en este código:

 #property  strict

template < typename T> interface IGenericHandler {
     bool Handle(T &item);
};

#define  DOES_NOT_WORK

class GenericHandler {
     public :
#ifdef  DOES_NOT_WORK   
         template < typename T> bool Handle(T &val, IGenericHandler<T> *handler);
#else   
         template < typename T> bool Handle(T &val, IGenericHandler<T> *handler) { return false ; }
#endif        
 };

#ifdef  DOES_NOT_WORK
template < typename T> bool GenericHandler::Handle(T &val, IGenericHandler<T> *handler) { return false ; }
#endif 

Si no se define DOES_NOT_WORK, todo funciona. Pero cuando se define DOES_NOT_WORK, el compilador dice:

'Handle' - member function already defined with different parameters

¿Por qué?


 
Alain Verleyen:

¿Está esto en tu lista? Si no es así, podría añadir esto por favor.

Gracias por la adición, sí hay una descripción de este problema en la lista:
(no se fija por MT5(build 2474)) *** (nuevo)Error de compilación,error de compilación para la declaración hacia adelante del método de la clase de la plantilla.

 
Sergey Dzyublik :

Gracias por la adición, sí hay una descripción de este problema en la lista:
( no se fija por MT5(build 2474)) *** (nuevo) Error de comp ilación, sobre el error de compilación para la declaración hacia adelante del método de la clase de la plantilla .

Genial, gracias.