Fehler, Irrtümer, Fragen - Seite 2747
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Guten Tag, das MT5-Log zeigt folgende Meldung: 2020.05.21 05:49:44.364 Virtual Hosting failed to get list of virtual hosts (www.mql5.com:443 send request failed [12002])
Könnt ihr mir bitte sagen, was das bedeutet und was ich dagegen tun kann?
Ich danke Ihnen!
Mein Debugger weigert sich, in einem meiner Projekte zu arbeiten. Außerdem ist sein Verhalten schwer vorhersehbar. Manchmal weigert er sich einfach, Haltepunkte einzugeben. Es weigert sich auch, einige Funktionen einzugeben. Zuerst dachte ich, der Grund dafür seien Aktualisierungen (vielleicht ging bei der Fehlersuche etwas schief). Aber bei anderen, einfacheren Programmen scheint alles zu funktionieren. Ich habe es aber nicht oft überprüft, weil ich an meinem Hauptprojekt arbeite. Es ist recht komplex und umfasst allein 15 Module meines eigenen Entwurfs (die Anzahl der Standardmodule habe ich nicht gezählt). Das Hauptmodul enthält bis zu 2000 Zeilen. Ich dachte, vielleicht liegt es an der Komplexität des Projekts... Außerdem verwende ich an einigen Stellen Makros für sich wiederholende Codeschnipsel. Außerdem verwende ich Standard-UI-Elemente, wie CAppDialog, CCheckGroup, CComboBox, CButton usw., die ich für die Funktionalität meines Programms umgeschrieben habe. Vielleicht funktioniert das Debugging wegen ihnen nicht... Die Methode CCheckGroup::itemCheckState(const string item), die ich eigens geschrieben habe, ist zum Beispiel nicht debuggingfähig. Die Methode findet das Element des Kontrollkästchens und prüft, ob es ausgewählt ist (sein Status):
Diese Art von Benutzeroberfläche habe ich am Ende erhalten:
Einige der UI-Elemente sind vorübergehend klassifiziert. Und hier ist ein Zweig, in dem ich beschrieben habe, wie ich die Show()- und Hide()-Methoden des CAppDialog-Elements überschrieben habe:https://www.mql5.com/ru/forum/338301 Der Compiler beschwerte sich in diesem Moment und ein kritischer Fehler trat auf.
Am Ende kompiliert das Projekt normal, der Compiler erzeugt keine Fehler. Aber das Debugging schlägt fehl und zeigt die Ausführung einiger Codefragmente, Funktionen, Methoden usw. einfach nicht an.
Soweit ich weiß, kann es dafür mehrere Gründe geben.
Build- und Systeminformationen:
https://www.mql5.com/ru/forum/1111/page2746#comment_16481481
In der CCheckGroup::itemCheckState-Methode (in die der Debugger nicht hineingelangen kann) habe ich etwas wie das Folgende eingegeben:
Und erhielt die folgende Meldung:
2020.05.21 13:20:44.229 CCheckGroup::itemCheckState item: 39 state: 32
https://www.mql5.com/ru/forum/1111/page2746#comment_16481481
Wenn der Debugger nicht richtig funktioniert, kann sich das Projekt lange Zeit verzögern. Ich möchte, dass die Entwickler diesem Fehler, der wahrscheinlich mit dem Debugger zusammenhängt, Aufmerksamkeit schenken.
Es ist eine Menge Text, ich habe ihn nicht ganz gelesen.
Aber wenn etwas in der Debug-Version funktioniert und in der Release-Version nicht, oder umgekehrt, überprüfen Sie, ob alle Variablen und Felder, insbesondere in der Klasse/Struktur, initialisiert wurden.
#define GETCURRENTTICK GetCurrentTick1(Tick)
#define GETCURRENTTICK GetCurrentTick2(Tick, !i)
#define GETCURRENTTICK GetCurrentTick3(Tick)
Zum Thema, dass die SymbolInfo-Funktionen kostenlos sind.
vielleicht ist die Methode inline, dann ist es nicht das Problem des Debuggers, sondern das des Compilers für den Debug-Modus
Genau, das Projekt war überfüllt mit Makros, sowohl mit meinen als auch mit denen von Standardmodulen. Vielleicht gelingt es dem Debugger deshalb nicht immer, Befehle in der *.ex5-Debug-Datei mit Zeilen in der *.mq5-Quelldatei und anderen Modulen abzugleichen...
Die SymbolInfo-Funktionen sind kostenlos.
Es handelt sich also um die Kosten der Funktion selbst, nicht um die Kosten der Übergabe der Zeichenkette als Wert und nicht als Referenz!
Ihre Version mit dem Cache ist eine gute Lösung, wenn die Ausführung dieser Funktion einen signifikanten Prozentsatz der Ausführungszeit des EAs in Anspruch nimmt (was ich nicht wirklich glaube)
Genau, das Projekt war überfüllt mit Makros, sowohl mit meinen als auch mit denen von Standardmodulen. Vielleicht gelingt es dem Debugger deshalb nicht immer, Befehle in der *.ex5-Debug-Datei mit Zeilen in der *.mq5-Quelldatei und anderen Modulen abzugleichen...
sind die Kosten für die Funktion selbst, nicht die Kosten für die Übergabe der Zeichenkette als Wert und nicht als Referenz!
Das ist der Punkt, auf den ich ursprünglich hinauswollte.
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Fehler, Irrtümer, Fragen
fxsaber, 2020.05.20 13:24
Es ist besser, eine
Im Optimierer werden diese Funktionen zig-Milliarden Mal aufgerufen.
Außerdem ist Ihre Variante mit dem Cache eine gute Lösung, wenn die Ausführung dieser Funktion einen signifikanten Prozentsatz der Laufzeit eines EA einnimmt (was ich nicht wirklich glaube)
In einem bestimmten Stadium wird nicht nur der relative Teil der benötigten Zeit wichtig, sondern auch der absolute Teil.