Librerías: Expert - página 10

 

Lo que no es intuitivo es que las matrices de parámetros y nombres devuelvan tamaños diferentes, porque no hay parámetro null en nombres, que representa el nombre del Asesor Experto.

También me gustaría saber los tipos reales de los parámetros, ahora "cadena" se devuelve en todas partes. No sé cómo proporcionar esto - la manera de cabeza: analizar el contenido de la cadena y su reducibilidad a un número de punto flotante o entero, pero si el parámetro almacena "0", su tipo no puede ser identificado.

 
Stanislav Korotky:

Lo que no es intuitivo es que las matrices de parámetros y nombres devuelven tamaños diferentes porque los nombres carecen de un parámetro nulo que represente el nombre del Asesor Experto.

Sí, no es muy agradable. Quizás deberíamos haber hecho un elemento null falso para Names[].

También me gustaría saber los tipos reales de los parámetros, ahora mismo se devuelve "string" en todas partes. No sé cómo proporcionar esto - la forma de hacerlo de frente: analizar el contenido de la cadena y su reducibilidad a un número de coma flotante o entero, pero si el parámetro almacena "0", no se puede identificar su tipo.

Lo consideré innecesario en la biblioteca, porque sigue habiendo ENUMs personalizados. Además, no vi una tarea en la que pudiera ser necesario.

Estaba haciendo mi propio auto-optimizador. No era útil allí.

 
fxsaber:

Sí, no es muy agradable. Tal vez deberías haber hecho un elemento null falso para Names[].

Lo consideré innecesario en la librería, porque también hay ENUMs personalizados. Además, no vi una tarea en la que pudiera ser necesario.

Estaba haciendo mi propio auto-optimizador. No era útil allí.

Las funciones ParameterGetRange/ParameterSetRange están definidas sólo para tipos long y double, por lo que el bucle de parámetros requiere analizar y cambiar la configuración sólo para números.

 
Stanislav Korotky:

Las funciones ParameterGetRange/ParameterSetRange se definen sólo para los tipos long y double, respectivamente, el bucle sobre los parámetros requiere analizar y cambiar los ajustes sólo para los números.

Lostipos ent eros son bool, enums.

 
fxsaber:

Los tipos enteros son bool, enums.

Esto es normal. No es normal que ahora todo esté representado por cadenas y sea imposible cribar cadenas reales.

 
Stanislav Korotky:

Eso es normal. No es normal que ahora todo esté representado por cadenas y no puedas cribar las cadenas reales.

Los parámetros a optimizar son números de antemano. Así que definitivamente no hay cadenas entre ellos. Así que puedes usarlo como filtro.

 

Hola, no puedo averiguar cómo abrir en experto con comercio autorizado

este código abre normalmente con las entradas que paso.

   Params[0].string_value = "Experts\\Shared Projects\\luipaulo89\\experts\\PullbackEA_v2.ex5";
// El primer parámetro de entrada del Asesor Experto
   Params[1].type = TYPE_STRING;
   Params[1].string_value = "Hello World!";
   Params[2].type = TYPE_INT;
   Params[2].integer_value = 0;
// En un nuevo gráfico, ejecute el Asesor Experto
   if (inpFirst==1) EXPERT::Run(ChartOpen(_Symbol, _Period), Params);

Si uso este código

   Params[0].string_value = "Experts\\Shared Projects\\luipaulo89\\experts\\PullbackEA_v2.ex5";
   Params[0].string_value += "\nexpertmode=5";
// El primer parámetro de entrada del Asesor Experto
   Params[1].type = TYPE_STRING;
   Params[1].string_value = "Hello World!";
   Params[2].type = TYPE_INT;
   Params[2].integer_value = 0;
// En un nuevo gráfico, ejecute el Asesor Experto
   if (inpFirst==1) EXPERT::Run(ChartOpen(_Symbol, _Period), Params);

se abre con comercio permitido pero no pasa parámetros.

La tarea es abrir el mismo Asesor Experto en un nuevo gráfico.

input group "EA Settings"
input int inpFirst = 1;//primera instancia;

para que sólo el primer Asesor Experto pueda abrir nuevos, paso 0 a nuevos, pero desafortunadamente en la segunda variante (cuando el comercio está permitido) no se pasan parámetros (o se pasan incorrectamente).

inpFirst = 0;
 

en el archivo tpl la cabecera se crea perfectamente, pero por alguna razón no pasa el parámetro

<expert>
name=PullbackEA_v2
path=Experts\Shared Projects\luipaulo89\experts\PullbackEA_v2.ex5
expertmode=5
<inputs>
inpFirst=1

que se espera que sea inpFirst=0

   Params[1].type = TYPE_INT;
   Params[1].integer_value = 0;
 
Aleksei Beliakov:

Actualizar la biblioteca.

Pruebe el Asesor Experto.

input group "EA Settings"
input int inpFirst = 1;//primera instancia;

void OnInit() {}


Ejemplo1.

#include <fxsaber\Expert.mqh>

void OnStart()
{
  MqlParam Params[3];

  // Camino a Consejero
  Params[0].string_value = "Experts\\Test6.ex5";
  Params[0].string_value += "\nexpertmode=5";

  // grupo de entrada "Ajustes EA"
  Params[1].type = TYPE_STRING;
  Params[1].string_value = NULL;

  // entrada int inpFirst
  Params[2].type = TYPE_INT;
  Params[2].integer_value = 123;

  EXPERT::Run(ChartOpen(_Symbol, PERIOD_CURRENT), Params); // No podrá ejecutar correctamente el Asesor Experto en su propio gráfico
}


Ejemplo2.

#include <fxsaber\Expert.mqh>

void OnStart()
{
  MqlParam Params[3];

  // Camino a Consejero
  Params[0].string_value = "Experts\\Test6.ex5";
  Params[0].string_value += "\nexpertmode=5";
  
  // grupo de entrada "Ajustes EA"
  Params[1].type = TYPE_STRING;
  Params[1].string_value = NULL;
  EXPERT::AddInputName(Params[1], " "); // Probl.

  // entrada int inpFirst
  Params[2].type = TYPE_INT;
  Params[2].integer_value = 123;
  EXPERT::AddInputName(Params[2], "inpFirst");

  EXPERT::Run(0, Params); // Podrá ejecutar correctamente el Asesor Experto en su propio gráfico.
}
 
¡¡¡Gracias sois los mejores como siempre!!!