Errores, fallos, preguntas - página 2291

 
Alexey Navoykov:

no es posible determinar mediante programación qué objeto es superior o inferior.

Puede ser que valga la pena mirar el orden en que los objetos se almacenan en la plantilla. Creo que cuanto más tarde se guarde un objeto allí, más alto estará sobre los demás.
 

La biblioteca .ex5 no puede cargarse si se encuentra en el directorio común de todos los terminales cliente de MetaTrader 5 (Common\MQL5\Libraries) como se describe en la Documentación- "Buscar la biblioteca EX5 importada en la siguiente secuencia: punto 3"

#import "Test.ex5"
        void f();
#import
void OnStart()
{
        f();
}

Resultado: no se puede abrir el archivo 'Test.ex5'

mientras que 'Test.ex5' está en la carpeta Common\MQL5\Libraries

 
fxsaber:
Puede ser que valga la pena mirar el orden en que los objetos se almacenan en la plantilla. Creo que cuanto más tarde se guarde un objeto allí, más alto estará sobre los demás.
Para situar un objeto por encima de todos los demás, independientemente del orden en el que esté almacenado, primero hay que hacerlo invisible en todos los plazos, y luego volver a hacerlo visible
 
Tetyana Shcherba:

No sé si estoy escribiendo en el lugar correcto, pero en mi señal, que sirve para monitorizar el rendimiento del EA, ha aparecido un aviso que no tiene absolutamente nada que ver con la realidad.

"El 80% de las ganancias se han conseguido en 16 días. Eso es el 4% de la vida total de la señal, que es de 376 días".


¿Cómo puede ser esto, o estoy malinterpretando algo?

Yo también lo noté ayer. Deben estar arreglando la fórmula.
 

Los pases que devuelven INIT_PARAMETERS_INCORRECT durante la optimización tienen las siguientes entradas en el registro

Core 3  pass 90 tested with error "incorrect input parameters" in 0:00:00.000
Core 3  pass 91 tested with error "incorrect input parameters" in 0:00:00.125
Core 3  pass 92 tested with error "incorrect input parameters" in 0:00:00.141


Al mismo tiempo, aparecen en los resultados de optimización por alguna razón


Se puede ver en la captura de pantalla que están ordenados por ganancia, pero los pases incorrectos no sucumben a esta ordenación. Por lo tanto, cuando me muevo hacia abajo en la lista, veo pases incorrectos en lugar de negativos. El valor cero indica supuestamente que no hay pases negativos. Tengo que desplazarme hacia abajo para encontrar estos pases tan negativos, a no ser que me engañe este comportamiento de la GUI.


Anteriormente, los nulos de OnInit y ExpertRemove no podían mostrarse en los resultados de la optimización. Y aunque se mostraran, sus filas en la tabla estaban marcadas en rojo. ¿Es posible recuperar este comportamiento?


Al exportar el XML, ¿se pasa la información de que algunas filas de la tabla son resultados incorrectos? Si he entendido bien, esta bandera de corrección se almacena en el formato opt aún no abierto.

Estaría bien poder conseguirlo en OnTesterPass.

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

Errores, fallos, preguntas

fxsaber, 2018.09.13 06:16

Al final de la optimización, el probador da esto
Tester  optimization finished, total passes 691200 (successful 673286 passes)

Expertl son pases que han llegado al final. El resto son interrumpidos por ExpertRemove.


¿Por qué bandera clasifica el Probador los pases recibidos de los Agentes? ¿Cómo puedo leer esta bandera en OnTesterPass?


Y en el gráfico de Optimización estaría bien no mostrar los pases incorrectos.


 

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

Bichos, errores, preguntas

fxsaber, 2018.09.13 06:16

Al final de la optimización, el probador produce lo siguiente
Tester  optimization finished, total passes 691200 (successful 673286 passes)

Expertl son los pases que han llegado al final. El resto son interrumpidos por ExpertRemove.


No entiendo por qué Tester no dice una palabra sobre los pases exitosos

Tester  optimization finished, total passes 1800

Hay pases interrumpidos de ExpertRemove, pero la respuesta al final no es en absoluto como se ve en la cita anterior.

 
Slava:
Para situar un objeto por encima de todos los demás, independientemente del orden en el que esté colocado, primero hay que hacerlo invisible en todos los plazos y luego volver a hacerlo visible
Ya escribí sobre esto en la página anterior. La pregunta era otra: ¿cómo lo determino entonces de forma programada?
 
Alexey Navoykov:
Ya escribí sobre esto en la última página. La pregunta era otra: ¿cómo se determina entonces de forma programada?
No
 
Error de compilación
typedef void (*fn1)();
void f1() {}
void g()
{
        fn1 f = f1; //(1) нормально
}
/*...*/
typedef void (*fn2)();
void f2() {}
void OnStart()
{
        fn2 f = f2; //(2) Error: 'f2' - type mismatch
}

¿Qué diferencia hay?

 
Slava:
No
// В комментарии к чарту выводит текущую Z-глубину всех графических объектов чарта

#define private public
  #include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003
#undef private

#define  STRING_END "\r\n"
#define  OBJECT_NAME "name="
#define  OBJECT_BEGIN ("<object>" + STRING_END)

int GetZObjects( string &Names[], const long Chart_ID = 0 )
{
  const int Size = ArrayResize(Names, ObjectsTotal(Chart_ID));
  string Template = EXPERT::TemplateToString(Chart_ID);  
  
  for (int i = 0; i < Size; i++)
  {
    Template = EXPERT::StringBetween(Template, OBJECT_BEGIN);
    
    Names[i] = EXPERT::StringBetween(Template, OBJECT_NAME, STRING_END);
  }
  
  return(Size);
}

void OnChartEvent( const int id, const long&, const double&, const string& )
{
  if ((id == CHARTEVENT_OBJECT_CHANGE) ||
      (id == CHARTEVENT_OBJECT_CLICK) ||
      (id == CHARTEVENT_OBJECT_CREATE) ||
      (id == CHARTEVENT_OBJECT_DELETE) ||
      (id == CHARTEVENT_OBJECT_DRAG) ||
      (id == CHARTEVENT_OBJECT_ENDEDIT))
  {
    string ZObjects[];
    
    string Str = NULL;
    
    for (int i = GetZObjects(ZObjects) - 1; i >= 0; i--)
      Str += (string)i + " Z: " + ZObjects[i] + "\n";
      
    Comment(Str);
  }
}