Librerie: Esperto - pagina 10

 

Ciò che non è intuitivo è che gli array di parametri e di nomi restituiscono dimensioni diverse, perché nei nomi non c'è il parametro null, che rappresenta il nome dell'Expert Advisor.

Inoltre, vorrei conoscere i tipi reali di parametri, dato che ora "stringa" viene restituito ovunque. Non so come fornirlo - il modo più diretto: analizzare il contenuto della stringa e la sua riducibilità a un numero in virgola mobile o a un intero, ma se il parametro memorizza "0", il suo tipo non può essere identificato.

 
Stanislav Korotky:

Ciò che non è intuitivo è che gli array dei parametri e dei nomi restituiscono dimensioni diverse perché nei nomi manca un parametro nullo che rappresenta il nome dell'Expert Advisor.

Sì, non è molto bello. Forse avremmo dovuto creare un falso elemento null per Names[].

Inoltre, vorrei conoscere i veri tipi di parametri, in questo momento "string" viene restituito ovunque. Non so come fornirlo - il modo per farlo di petto: analizzare il contenuto della stringa e la sua riducibilità a un numero in virgola mobile o a un intero, ma se il parametro memorizza "0", non è possibile identificarne il tipo.

Ho ritenuto che non fosse necessario nella libreria, perché ci sono ancora gli ENUM personalizzati. Inoltre, non vedevo un compito in cui potesse essere necessario.

Stavo creando il mio ottimizzatore automatico. Non è stato utile.

 
fxsaber:

Sì, non è molto carino. Forse si sarebbe dovuto creare un falso elemento null per Names[].

L'ho considerato non necessario nella libreria, perché ci sono anche ENUM personalizzati. Inoltre, non ho visto un compito in cui potrebbe essere necessario.

Stavo creando il mio ottimizzatore automatico. Non era utile.

Le funzioni ParameterGetRange/ParameterSetRange sono definite solo per i tipi long e double, quindi il ciclo dei parametri richiede di analizzare e modificare le impostazioni solo per i numeri.

 
Stanislav Korotky:

Le funzioni ParameterGetRange/ParameterSetRange sono definite solo per i tipi long e double, rispettivamente; il ciclo sui parametri richiede di analizzare e modificare le impostazioni solo per i numeri.

Itipi interi sono bool, enum.

 
fxsaber:

Itipi interi sono bool, enum.

Questo è normale. Non è normale che ora tutto sia rappresentato da stringhe e che sia impossibile distinguere le stringhe reali.

 
Stanislav Korotky:

È normale. Non è normale che ora tutto sia rappresentato da stringhe e che non si riesca a selezionare le stringhe vere e proprie.

I parametri da ottimizzare sono numeri in anticipo. Quindi non ci sono stringhe tra di essi. Quindi si può usare come filtro.

 

Salve, non riesco a capire come aprire un esperto con un trade autorizzato.

questo codice si apre normalmente con gli input che passo.

   Params[0].string_value = "Experts\\Shared Projects\\luipaulo89\\experts\\PullbackEA_v2.ex5";
// Il primo parametro di ingresso dell'Expert Advisor
   Params[1].type = TYPE_STRING;
   Params[1].string_value = "Hello World!";
   Params[2].type = TYPE_INT;
   Params[2].integer_value = 0;
// Su un nuovo grafico, eseguire il Consulente esperto
   if (inpFirst==1) EXPERT::Run(ChartOpen(_Symbol, _Period), Params);

Se uso questo codice

   Params[0].string_value = "Experts\\Shared Projects\\luipaulo89\\experts\\PullbackEA_v2.ex5";
   Params[0].string_value += "\nexpertmode=5";
// Il primo parametro di ingresso dell'Expert Advisor
   Params[1].type = TYPE_STRING;
   Params[1].string_value = "Hello World!";
   Params[2].type = TYPE_INT;
   Params[2].integer_value = 0;
// Su un nuovo grafico, eseguire il Consulente esperto
   if (inpFirst==1) EXPERT::Run(ChartOpen(_Symbol, _Period), Params);

si apre con il trade autorizzato ma non passa i parametri.

Il compito è quello di aprire lo stesso Expert Advisor su un nuovo grafico.

input group "EA Settings"
input int inpFirst = 1;/prima istanza;

In modo che solo il primo Expert Advisor possa aprirne di nuovi, passo 0 a quelli nuovi, ma purtroppo nella seconda variante (quando il trading è consentito) non vengono passati parametri (o vengono passati in modo errato).

inpFirst = 0;
 

nel file tpl l'intestazione viene creata perfettamente, ma per qualche motivo non passa il parametro

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

che dovrebbe essere inpFirst=0

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

Aggiornare la libreria.

Testare Expert Advisor.

input group "EA Settings"
input int inpFirst = 1;/prima istanza;

void OnInit() {}


Esempio1.

#include <fxsaber\Expert.mqh>

void OnStart()
{
  MqlParam Params[3];

  // Percorso per diventare Counsellor
  Params[0].string_value = "Experts\\Test6.ex5";
  Params[0].string_value += "\nexpertmode=5";

  // gruppo di input "Impostazioni EA"
  Params[1].type = TYPE_STRING;
  Params[1].string_value = NULL;

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

  EXPERT::Run(ChartOpen(_Symbol, PERIOD_CURRENT), Params); // Non sarà possibile eseguire correttamente l'Expert Advisor sul proprio grafico.
}


Esempio2.

#include <fxsaber\Expert.mqh>

void OnStart()
{
  MqlParam Params[3];

  // Percorso per diventare Counsellor
  Params[0].string_value = "Experts\\Test6.ex5";
  Params[0].string_value += "\nexpertmode=5";
  
  // gruppo di input "Impostazioni EA"
  Params[1].type = TYPE_STRING;
  Params[1].string_value = NULL;
  EXPERT::AddInputName(Params[1], " "); // Probl.

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

  EXPERT::Run(0, Params); // Sarà possibile eseguire correttamente l'Expert Advisor sul proprio grafico.
}
 
Grazie, siete i migliori come sempre!!!