Fehler, Irrtümer, Fragen - Seite 2767

 
Artyom Trishkin:

Nach dem von Ihnen beschriebenen Verhalten zu urteilen, handelt es sich um einen anderen EA mit einem völlig anderen Algorithmus.

Wir haben es alle herausgefunden, vielleicht ist es ein Fehler im Terminal oder vielleicht wurde es von den Entwicklern entworfen, aber die Sache ist die, dass, wenn man einen Test mit der Historie eines beliebigen Sets durchführt, am Ende des Tests ein Diagramm angezeigt wird, aber die gesamte Historie für diesen Zeitraum wird automatisch mit der echten Historie überlagert.

Ich verglich die Ergebnisse, dann ging ich zum Protokoll und verglich die Preise der offenen Positionen aus dem Tester und aus einem echten Handel, sie fast alle übereinstimmen, gibt es einen leichten Unterschied.

Tatsache ist jedoch, dass nach Abschluss der Tests reale Geschäfte in dieses Diagramm eingeblendet werden.

Um ihre Überlagerung zu vermeiden, habe ich Folgendes getan

Ich habe einfach mit der rechten Maustaste in das Journal geklickt und die automatische Aktualisierung deaktiviert. Jetzt werden bei allen Tests nur die Trades angezeigt, die im Tester in diesem Diagramm getestet wurden, echte Trades wurden nicht angewendet.

Ich habe Leute in der Gruppe gebeten, ihre Handelsroboter für einen Zeitraum laufen zu lassen, in dem sie etwas mit diesem Symbol gehandelt haben, mit Robotern, was auch immer, sie alle haben diese Tatsache bestätigt, dass zusätzlich zu den Transaktionen im Tester, das Diagramm mit realen Geschäften überlagert wird, die in der Vergangenheit gehandelt wurden.


Wenn Sie Trades in einem beliebigen Instrument haben, lassen Sie einen beliebigen Roboter für diesen Zeitraum laufen und Sie werden sehen, dass diese Trades auf das Diagramm angewendet werden, und wenn Autotrading deaktiviert ist, werden die echten Trades nicht angewendet.

Ich denke, es lohnt sich, den Entwicklern davon zu erzählen. Ich mag diesen Fehler, jetzt kann ich den Roboter eine Woche lang testen und den Unterschied in den Trades auf dem Diagramm vergleichen, idealerweise sollte er sich um ein paar Ticks unterscheiden

 
Konstantin Seredkin:

Zusätzlich zu den Trades des Testers werden echte Trades, die in der Vergangenheit gehandelt wurden, auf dem Chart eingeblendet.

Dieses Verhalten ist für diejenigen, die benutzerdefinierte Symbole verwenden, nicht sichtbar. Aber für echte Symbole sieht es ziemlich unpraktisch aus.

 

Im Debugger kann der Wert vonGetLastError(); nicht abgerufen werden?

nur über eine Variable oder einen vordefinierten _LastError ?

Dateien:
 
awsomdino:

Im Debugger kann der Wert von GetLastError(); nicht abgerufen werden?

Nur über eine Variable oder einen vordefinierten _LastError ?

Ja, hier ist _Value sehr nützlich.

 
fxsaber:

Ja, dafür ist _Value gut geeignet.

Vielleicht fügen die Entwickler die Möglichkeit hinzu, über die FunktionGetLastError() in den Debugger zu schauen;

sonst sind diese praktischen und einfachen 2 Zeilen nutzlos

   if(GetLastError()>0)
      DebugBreak();
 
awsomdino:

vielleicht fügen die Entwickler die Möglichkeit hinzu, im Debugger nach der FunktionGetLastError() zu suchen;

sonst sind diese bequemen und einfachen 2 Zeilen nutzlos.

Verwenden Sie nicht nur diese Funktion.

 

Um die Anzahl der Einträge aus der vorangegangenen "Überprüfung" von Korrekturen zu minimieren, wurden zuvor behobene Fehler nicht übertragen:

Fehler in Vorlagenfunktionen/Klassen:
(nicht behoben durch MT5(build 2474)) *** Kompilierfehler, Fehler beim Versuch, auf eine interne Klasse für einen Parameter einer Template-Funktion zuzugreifen.
(nicht behoben durch MT5(build 2474)) ** Kompilierfehler, Fehler beim Rückgabewert einer Template-Funktion, wenn der Rückgabewert eine interne Klasse innerhalb einer Template-Klasse ist, deren Parametertyp durch den Argumenttyp der Template-Funktion spezifiziert wird.
(nicht behoben durch MT5(build 2474)) ** Kompilierfehler, Namespace- und Scope-Fehler im Template-Konstruktor beim Aufruf der Basisklasse, wenn der gleiche Klassenname in der Vererbung und der internen Klasse verwendet wird.
(nicht behoben durch MT5(build 2474)) * Kompilierfehler, Fehler beim Aufruf von Template-Funktionen mit expliziten Argumenttypen, wenn diese von einer überladenen Nicht-Template-Funktion aufgerufen werden.
(nicht behoben
durch MT5(build 2474)) Kompilierfehler, Fehler bei interner Klassendefinition - kein Verweis auf globalen Namespace bei Angabe einer Basisklasse.
(nicht behoben durch MT5(build 2474)) * Kompilierfehler, wenn die Zuweisungsanweisung über eine explizite Basisklassenangabe aufgerufen wird. Das Problem tritt bei einer Vorlagenklasse auf, bei der der Vorlagenparameter als Basisklasse fungiert.
(behoben
durch MT5(build 2474)) Kompilierfehler, wenn der Standard-Zugriffsmodifikator für Vererbung in einer Vorlagenklasse verwendet wird, bei der der Vorlagenparameter eine Basisklasse ist.
(behoben durch MT5(build 2474)) * (neu) Kompilierfehler, Kompilierfehler bei der Vererbung von Template-Klassen aus dem Namespace.
(behoben durch MT5(build 2474)) ** (neu) Kompilierfehler, Standardoperator= wird nicht von einem Zeigerobjekt angesprochen.
(nicht behoben
durch MT5(build 2474)) *** (new)Compile Error, Kompilierfehler bei der Vorwärtsdeklaration einer Methode der Template-Klasse .
(
nicht behoben durch MT5(build 2474)) ** (neu)Kompilierfehler, wenn die Klasse einen Zeiger auf eine Wrapper-Klasse enthält, die die Klasse als Feld verwendet.


Defekte im Zusammenhang mit nicht übereinstimmenden Prioritäten von überladenen Funktionsaufrufen in MQL vs. C++:
(nicht behoben in MT5(build 2474)) ** Kompilierfehler, wenn die erste der überladenen überladenen Template-Funktionen eine vollständig spezialisierte Template-Basisklasse und die zweite eine nicht spezialisierte Template-Basisklasse verwendet.
(nicht behoben durch MT5(build 2474)) ** Compile Error, ein Kompilierfehler tritt auf, wenn der Code einer Template-Funktion generiert wird, obwohl es eine überladene Template-Funktion mit einer passenden Signatur für die übergebenen Parameter gibt.
(nicht behoben durch MT5(build 2474)) * Compile Error, "ambiguous call to overloaded function" wenn überladene Template-Funktionen mit unterschiedlicher Anzahl von Template-Parametern aufgerufen werden.

( nicht behoben durch MT5(build 2474)) *** Compile Error, Fehler beim Aufruf überladener Template-Funktionen.
( nicht behoben durch MT5(build 2474)) ** Kompilierfehler, implizite Typkonversation wird verwendet , wenn eine Funktion für ein Argument mit dem Datentyp color aufgerufen wird, obwohl es eine passende signaturüberladene Vorlagenfunktion mit dem Datentyp color gibt.
( nicht behoben durch MT5(build 2474)) * Kompilierfehler, trotz der expliziten Spezialisierung beim Aufruf einer überladenen Template-Funktion wird die Template-Funktion standardmäßig trotzdem aufgerufen, was zu einem Stapelüberlauf führt...
( nicht behoben durch MT5(build 2474)) * Compile Error, Kompilierungsfehler beim Aufruf einer Funktion über ihren Zeiger, wenn ein Array von Funktionszeigern verwendet wird.
( behoben durch MT5(build 2474)) * (neu) Kompilierfehler, Probleme mit der Aufrufpriorität von im Namensraum überladenen Funktionen.

MetaEditor-bezogene Fehler:
(nicht behoben durch ME5(build 2474)) *** Debugger, ein Haltepunkt in einerstatischen Strukturmethode führt dazu, dass das MT-Terminal hängen bleibt.
(nicht behoben in ME5(build 2474)) ** Kompilierung, die Beschreibung des Kompilierungsfehlers passt nicht in die 256-Zeichen-Grenze und wird abgeschnitten, so dass nicht nachvollzogen werden kann, für welchen Datentyp der Fehler erzeugt wurde, da der erforderliche Teil abgeschnitten ist.
(behoben in ME5(build 2474)) ** Debugger, StepInto (F11) und Haltepunkte setzen funktionieren nicht.
(behoben in ME5(build 2474)) * Debuger, nachdem ein Haltepunkt ausgelöst wurde, wird derselbe Haltepunkt erneut ausgelöst, ohne dass Code ausgeführt wird, anstatt die Codeausführung durch Drücken von (F5) fortzusetzen.
(nicht behoben in ME5(build 2474)) * Kompilierung, falsche Funktionsschablonen-Parametersignatur in Fehlerbeschreibung und Parameterinfo.
(nicht behoben in ME5(build 2474)) * MetaEditor, die Funktion Ersetzen (Strl + H) funktioniert nicht bei aktivierter "In Auswahl" zusammen mit "Rückwärtsrichtung", wenn der notwendige Teil der Anwendung ausgewählt ist, aber nicht der gesamte Code.
(nicht behoben durch ME5(build 2474)) * (neu) MetaEditor, das Auslösen eines Haltepunkts führt den Benutzer zu der Annahme, dass eine Eingabebedingung erfüllt wurde, obwohl dies in Wirklichkeit gar nicht der Fall ist.


Defekte im Zusammenhang mit langsamer Funktionsausführung, Code-Optimierung:
(behoben durch MT5(build 2474)) **(up) Laufzeit, großer Overhead beim Hinzufügen von einem Element nach dem anderen in ein Array mit ArrayResize, trotz der Tatsache, dass Speicher für sie im Voraus reserviert wurde, zum Beispiel sind Strukturen bis zu 7 mal langsamer.


Vorschläge:
- Hinzufügen von ME-Suche/Ersetzung durch aktuelles Projekt, während beim Refactoring durch jede Datei zu gehen und nach Vorkommen zu suchen ist nicht sehr gut.
link- in ME bei der Kompilierung, um leere Spalten Datei, Zeile, Spalte mit entsprechenden Informationen über die Quelldatei zu füllen, aus der Include gemacht wurde.
link- über die Einführung von Intellisense-Unterstützung für Namespace-Funktionalität auf der Grundlage von Intellisense-Arbeit für statische Methoden in Klassen.
link- über die Möglichkeit, Literale und temporäre Variablen als const ref-Argumente einer Funktion zu übergeben.
link- beimVerschieben von Projektdateien in der Registerkarte "Projekt", für verschobene Dateien, die geöffnet sind und sich in ME-Registerkarten befinden, ihren Speicherortpfad automatisch zu aktualisieren.
link- über die Notwendigkeit der Einführung von Typedef-Deklarationsfunktionalität in MQL.
link- über die Möglichkeit, die Erzeugung von Standard-Kopierkonstruktoren und Zuweisungsoperatoren zu erzwingen.

 
Sergey Dzyublik :

Umdie Anzahl der Einträge aus der letzten "Überprüfung" der Korrekturen zu minimieren, wurden früher behobene Mängel nicht übertragen:
.
..

Steht das auf Ihrer Liste? Wenn nicht, könnten Sie dies bitte hinzufügen.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Falsche MQL-Syntax?

Dan Marinescu, 2020.05.27 22:47

Ich habe eine universelle Schnittstelle definiert und möchte sie in einer anderen Klasse verwenden. Ich kann nicht herausfinden, was an diesem Code falsch ist:

 #property  strict

template < typename T> interface IGenericHandler {
     bool Handle(T &item);
};

#define  DOES_NOT_WORK

class GenericHandler {
     public :
#ifdef  DOES_NOT_WORK   
         template < typename T> bool Handle(T &val, IGenericHandler<T> *handler);
#else   
         template < typename T> bool Handle(T &val, IGenericHandler<T> *handler) { return false ; }
#endif        
 };

#ifdef  DOES_NOT_WORK
template < typename T> bool GenericHandler::Handle(T &val, IGenericHandler<T> *handler) { return false ; }
#endif 

Wenn DOES_NOT_WORK nicht definiert ist, funktioniert alles. Aber wenn DOES_NOT_WORK definiert ist, sagt der Compiler:

'Handle' - member function already defined with different parameters

Und warum?


 
Alain Verleyen:

Steht das auf Ihrer Liste? Wenn nicht, könnten Sie dies bitte hinzufügen.

Danke für die Ergänzung, ja es gibt eine Beschreibung dieses Problems in der Liste:
(nicht behoben durch MT5(build 2474)) *** (new)CompileError,Kompilierungsfehler bei der Vorwärtsdeklaration einer Template-Methode der Klasse.

 
Sergey Dzyublik :

Danke für die Ergänzung, ja es gibt eine Beschreibung dieses Problems in der Liste:
( nicht behoben durch MT5(build 2474)) *** (new) Compile Error , über Kompilierungsfehler bei der Vorwärtsdeklaration einer Methode der Template-Klasse .

Gut, danke.
Grund der Beschwerde: