Discusión sobre el artículo "Características del Wizard MQL5 que debe conocer (Parte 1): Análisis de regresión"

 

Artículo publicado Características del Wizard MQL5 que debe conocer (Parte 1): Análisis de regresión:

De manera consciente o inconsciente, el tráder moderno está casi siempre en busca de nuevas ideas, probando constantemente nuevas estrategias, modificándolas y descartando las que han fracasado. Este proceso de investigación requiere mucho tiempo y se ve acompañado por muchos errores. En esta serie de artículos, intentaré demostrar que el Wizard MQL5 es un verdadero apoyo para el tráder. Gracias al Wizard, el tráder podrá ahorrar tiempo a la hora de poner en práctica sus ideas. Asimismo, podrá reducir la probabilidad de que surjan errores por duplicación de código. En lugar de perder el tiempo con el código, los tráders tendrán la posibilidad de poner en práctica su filosofía comercial.

A continuación, le presentamos los resultados de nuestra optimización. En primer lugar, tenemos el informe y la curva de equidad de los mejores resultados comerciales solo con órdenes de mercado.


Autor: Stephen Njuki

 


Hola Stephen,

Muy buen artículo. Hice algunas pruebas y dio buenos resultados. Parece que tenemos un sistema de comercio alentador.

Me gustaría saber cómo puedo utilizar la entrada con plazos no fijos para la optimización.

He tratado de cambiar estas líneas, pero OnInit "devuelto no cero código 1" sin mensaje de error.

//--- entradas para el experto
input string Expert_Title                     ="Regr2"; // Nombre del documento
ulong        Expert_MagicNumber               =26034;   //
bool         Expert_EveryTick                 =false;   //
input ENUM_TIMEFRAMES   timeframe             =PERIOD_M5;      //TimeFrame
//--- entradas para señal principal
.
.
.
.
int OnInit()
  {
//--- Inicializando experto
   if(!ExtExpert.Init(Symbol(),timeframe,Expert_EveryTick,Expert_MagicNumber))
     {
      //--- fallido
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Creando señal
.
.
.
.




¿Me pueden ayudar?

 
Guilherme Mendonca #:


Hola Stephen,

Muy buen artículo. Hice algunas pruebas y dio buenos resultados. Parece que tenemos un sistema de comercio alentador.

Me gustaría saber cómo puedo utilizar la entrada con plazos no fijos para la optimización.

He tratado de cambiar estas líneas, pero OnInit "devuelto código no cero 1" sin mensaje de error.




¿Pueden ayudarme?

Hola, ¿ha recibido ayuda de Stephen?
 
Guilherme Mendonca #:


Hola Stephen,

Muy buen artículo. Hice algunas pruebas y dio buenos resultados. Parece que tenemos un sistema de comercio alentador.

Me gustaría saber cómo puedo utilizar la entrada con plazos no fijos para la optimización.

He tratado de cambiar estas líneas, pero OnInit "devuelto no cero código 1" sin mensaje de error.




¿Pueden ayudarme?

Hola,

Acabo de ver esto. Perdon. Esto puede ser un poco complicado porque los Asesores Expertos ensamblados con asistentes tienden a utilizar y atenerse al marco de tiempo del gráfico al que están unidos. Y esto se hace referencia en un buen número de lugares diferentes, no sólo en el OnInit() función que parece que está tratando de modificar. Así que si su marco de tiempo de entrada no coincide con el marco de tiempo utilizado y esperado en otros lugares (para ser el marco de tiempo del gráfico), entonces esto está destinado a generar errores.

Sin embargo, hay un caso para la lectura de datos y precios en más de un marco de tiempo, así que creo que en un futuro próximo voy a mirar para hacer un artículo sobre cómo esto podría lograrse. Gracias por sus comentarios.

 

Tengo un error al compilar un experto realizado utilizando el SignalDUAL_RA. se remonta a la matrix.mqh

El CMatrixDouble es una llamada de función a la MetaEditor construido en clases, matrix.mqh, así que supongo que el error no se encuentra allí.

¿Pueden ayudarme a resolverlo?

¿Puede alguien ayudarme?

Archivos adjuntos:
 

no me compilaba con el problema mencionado anteriormente (ver captura de pantalla). Resolví el problema como


_a[r].Set(c,Data(r+c,close)); debería ser _a.Set(r,c,Data(r+c,close));


con el uso de _a[r] no estamos editando la fila r-ésima directamente sino pasándola como referencia. Esta corrección ha funcionado.