Errori, bug, domande - pagina 2291

 
Alexey Navoykov:

non è possibile determinare programmaticamente quale oggetto è superiore o inferiore.

Può valere la pena guardare l'ordine in cui gli oggetti sono memorizzati nel modello. Penso che più tardi l'oggetto è conservato lì, più in alto è rispetto agli altri.
 

La libreria .ex5 non può essere caricata se si trova nella directory comune a tutti i terminali client MetaTrader 5 (Common\MQL5\Libraries) come descritto nella Documentazione- "Cercarela libreria EX5 importata nella seguente sequenza: punto 3"

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

Risultato: impossibile aprire il file 'Test.ex5'.

mentre 'Test.ex5' è nella cartella Common\MQL5\Libraries

 
fxsaber:
Può valere la pena guardare l'ordine in cui gli oggetti sono memorizzati nel modello. Penso che più tardi un oggetto è conservato lì, più in alto è rispetto agli altri.
Per mettere un oggetto sopra tutti gli altri, indipendentemente dall'ordine in cui è memorizzato, dovete prima renderlo invisibile su tutti i timeframe, e poi renderlo nuovamente visibile
 
Tetyana Shcherba:

Non so se sto scrivendo nel posto giusto, ma nel mio segnale, che serve a monitorare le prestazioni dell'EA, è apparso un avviso che non ha assolutamente nulla a che fare con la realtà.

"L'80% dei guadagni sono stati fatti in 16 giorni. Questo è il 4% della durata totale del segnale di 376 giorni"".


Come può essere, o sto fraintendendo qualcosa?

L'ho notato anche ieri. Devono aver aggiustato la formula.
 

I passaggi che restituiscono INIT_PARAMETERS_INCORRECT durante l'ottimizzazione hanno le seguenti voci nel log

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


Allo stesso tempo, appaiono nei risultati dell'ottimizzazione per qualche motivo


Si può vedere nello screenshot che sono ordinati per profitto, ma i passaggi errati non soccombono a questo ordinamento. Perciò, quando scendo nella lista, vedo i passaggi errati invece di quelli negativi. Il valore zero indica presumibilmente che non ci sono passaggi negativi. Devo scorrere verso il basso per trovare questi passaggi molto negativi, a meno che non sia fuorviato da questo comportamento della GUI.


In precedenza, i null di OnInit e ExpertRemove non potevano essere mostrati nei risultati dell'ottimizzazione. E anche se venivano mostrati, le loro righe nella tabella erano segnate in rosso. È possibile riportare questo comportamento?


Quando si esporta l'XML, passa l'informazione che alcune righe della tabella sono risultati errati? Se ho capito bene, questo flag di correttezza è memorizzato nell'opt-format non ancora aperto.

Sarebbe bello poterlo ottenere in OnTesterPass.

Forum sul trading, sistemi di trading automatico e test di strategia

Errori, bug, domande

fxsaber, 2018.09.13 06:16

Alla fine dell'ottimizzazione, il tester dà questo
Tester  optimization finished, total passes 691200 (successful 673286 passes)

Expertl sono passaggi che hanno raggiunto la fine. Il resto viene interrotto da ExpertRemove.


Con quale bandiera Tester classifica i passaggi ricevuti dagli agenti? Come si legge questo flag in OnTesterPass?


E sul grafico Optimization sarebbe bello non mostrare i passaggi errati.


 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

fxsaber, 2018.09.13 06:16

Alla fine dell'ottimizzazione, il tester emette questo
Tester  optimization finished, total passes 691200 (successful 673286 passes)

Expertl sono i passaggi che hanno raggiunto la fine. Il resto viene interrotto da ExpertRemove.


Non capisco perché Tester non dice una parola sul successo - passa

Tester  optimization finished, total passes 1800

Ci sono passaggi interrotti da ExpertRemove, ma la risposta alla fine non è affatto come si vede nella citazione sopra.

 
Slava:
Per posizionare un oggetto sopra tutti gli altri, indipendentemente dall'ordine in cui è posizionato, dovete prima renderlo invisibile su tutti i timeframe e poi renderlo nuovamente visibile
Ho già scritto di questo nella pagina precedente. La domanda era un'altra: come faccio a determinarlo programmaticamente?
 
Alexey Navoykov:
Ho già scritto di questo nell'ultima pagina. La domanda era un'altra: come si fa poi a determinarlo programmaticamente?
No
 
Errore di compilazione
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
}

Che differenza fa?

 
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);
  }
}