Fehler, Irrtümer, Fragen - Seite 2291

 
Alexey Navoykov:

ist es nicht möglich, programmatisch zu bestimmen, welches Objekt höher oder niedriger ist.

Es kann sich lohnen, die Reihenfolge zu überprüfen, in der die Objekte in der Vorlage gespeichert werden. Ich denke, je später das Objekt dort gespeichert wird, desto höher steht es über den anderen.
 

Die .ex5-Bibliothek kann nicht geladen werden, wenn sie sich im gemeinsamen Verzeichnis aller MetaTrader 5-Client-Terminals (Common\MQL5\Libraries) befindet, wie in der Dokumentation beschrieben - "Suche nach der importierten EX5-Bibliothek in folgender Reihenfolge: Punkt 3"

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

Ergebnis: Datei 'Test.ex5' kann nicht geöffnet werden

während sich 'Test.ex5' im Ordner Common\MQL5\Libraries befindet

 
fxsaber:
Es kann sich lohnen, die Reihenfolge zu überprüfen, in der die Objekte in der Vorlage gespeichert werden. Ich denke, je später ein Objekt dort gespeichert wird, desto höher steht es über den anderen.
Um ein Objekt über allen anderen zu platzieren, unabhängig von der Reihenfolge, in der es gespeichert ist, müssen Sie es zunächst in allen Zeitrahmen unsichtbar machen und dann wieder sichtbar machen
 
Tetyana Shcherba:

Ich weiß nicht, ob ich an der richtigen Stelle schreibe, aber in meinem Signal, das zur Überwachung der Leistung des EA dient, ist eine Warnung erschienen, die absolut nichts mit der Realität zu tun hat.

"80 % der Gewinne wurden in 16 Tagen erzielt. Das sind 4 % der Gesamtlebensdauer des Signals von 376 Tagen."


Wie kann das sein, oder habe ich etwas falsch verstanden?

Das ist mir gestern auch aufgefallen. Sie müssen die Formel ändern.
 

Durchläufe, die bei der Optimierung INIT_PARAMETERS_INCORRECT zurückgeben, haben folgende Einträge im Protokoll

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


Gleichzeitig erscheinen sie aus irgendeinem Grund in den Optimierungsergebnissen


Im Screenshot sehen Sie, dass sie nach Gewinn sortiert sind, aber die Falschausweise fallen nicht unter diese Sortierung. Wenn ich also in der Liste nach unten gehe, sehe ich falsche Pässe anstelle von negativen. Der Wert Null zeigt an, dass es keine negativen Durchgänge gibt. Ich muss nach unten scrollen, um diese sehr negativen Pässe zu finden, es sei denn, ich werde durch das Verhalten der grafischen Benutzeroberfläche in die Irre geführt.


Zuvor konnten OnInit- und ExpertRemove-Nullen in den Optimierungsergebnissen nicht angezeigt werden. Und selbst wenn sie angezeigt wurden, waren ihre Zeilen in der Tabelle rot markiert. Ist es möglich, dieses Verhalten wiederherzustellen?


Wird beim Exportieren von XML die Information weitergegeben, dass einige Zeilen in der Tabelle fehlerhafte Ergebnisse sind? Wenn ich es richtig verstehe, wird dieses Korrektheitsmerkmal im noch nicht geöffneten opt-Format gespeichert.

Es wäre schön, wenn man sie in OnTesterPass abrufen könnte.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Fehler, Irrtümer, Fragen

fxsaber, 2018.09.13 06:16

Am Ende der Optimierung gibt der Prüfer Folgendes an
Tester  optimization finished, total passes 691200 (successful 673286 passes)

Expertl sind Pässe, die das Ende erreicht haben. Der Rest wird durch ExpertRemove unterbrochen.


Nach welcher Kennzeichnung klassifiziert der Tester die von den Agenten erhaltenen Pässe? Wie kann ich dieses Kennzeichen in OnTesterPass auslesen?


Und bei der Optimierungstabelle wäre es schön, wenn keine Fehlpässe angezeigt würden.


 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

fxsaber, 2018.09.13 06:16

Am Ende der Optimierung gibt der Prüfer Folgendes aus
Tester  optimization finished, total passes 691200 (successful 673286 passes)

Expertl sind die Pässe, die das Ende erreicht haben. Der Rest wird durch ExpertRemove unterbrochen.


Ich verstehe nicht, warum Tester kein Wort über erfolgreiche Pässe verliert.

Tester  optimization finished, total passes 1800

Es gibt ExpertRemove unterbrochene Pässe, aber die Antwort am Ende ist überhaupt nicht wie im obigen Zitat zu sehen.

 
Slava:
Um ein Objekt über allen anderen zu platzieren, unabhängig von der Reihenfolge, in der es platziert ist, müssen Sie es zunächst in allen Zeitrahmen unsichtbar machen und dann wieder sichtbar machen
Darüber habe ich bereits auf der vorherigen Seite geschrieben. Die Frage war eine andere: Wie bestimme ich das dann programmatisch?
 
Alexey Navoykov:
Darüber habe ich bereits auf der letzten Seite geschrieben. Die Frage war eine andere: Wie kann man das dann programmatisch bestimmen?
Nein
 
Kompilierungsfehler
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
}

Was macht das für einen Unterschied!?

 
Slava:
Nein
// В комментарии к чарту выводит текущую 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);
  }
}