Fehler, Irrtümer, Fragen - Seite 2654
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
Kann uns jemand die folgende Frage beantworten?
Ich habe eine in C# geschriebene, aber kompilierte DLL:
- für MT5 übliches C# Projekt - Net Framework dll - 64 bit
- MT4 - Net Framework dll - 32 Bit, aber in verwaltete C-Aufrufe verpackt
Sources dll sind 100% identisch, außer MT4 Wrapper natürlich,
Betriebssystem Win10-64
Nun, die Frage ist, warum MT4 ruft Funktionen genau 4 mal schneller, die Zahlen sind etwa 100 000 dll Anrufe auf MT4 für 7,5 Sekunden, MT5 für 30 Sekunden
Kann uns jemand die folgende Frage beantworten?
Ich habe eine in C# geschriebene, aber kompilierte DLL:
- für MT5 übliches C# Projekt - Net Framework dll - 64 bit
- MT4 - Net Framework dll - 32 Bit, aber in verwaltete C-Aufrufe verpackt
Sources dll sind 100% identisch, außer MT4 Wrapper natürlich,
Betriebssystem Win10-64
Nun, die Frage ist, warum MT4 ruft Funktionen genau 4 mal schneller, die Zahlen sind etwa 100 000 dll Anrufe auf MT4 für 7,5 Sekunden, MT5 für 30 Sekunden
IMHO. C-Runtime in einem Fall und eine virtuelle Maschine im anderen.
Im Expert Advisor ist eine grafische Schnittstelle implementiert. Auch Benutzerereignisse sind implementiert (z. B. GUI-Änderungsereignisse). Ich führe die Fehlersuche an echten Daten durch (F5). Sobald ich einen Breakpoint auf ein Benutzerereignis setze - hält der Debugger an, aber das anschließende Drücken von F5 (Fortsetzen des Debuggens) führt nicht zu Änderungen in der GUI selbst. Frage: Sollte dies der Fall sein, oder ist dies ein Debugger-Fehler?
Wenn ich den Haltepunkt entferne (das Debugging geht weiter), sind die Änderungen in der GUI normal.
MT5, Build 2340.
IMHO. C-Runtime in einem Fall und eine virtuelle Maschine im anderen.
in beiden DLLs ist ein virtuelles .Net enthalten
ich habe den Unterschied im Code gefunden, ich habe sogar die 32-Bit-Basisklasse in einen separaten Thread geworfen, weil es keine andere Möglichkeit gibt, zu arbeiten
Ich habe die gleichen Manipulationen für MT5 vorgenommen, die Ergebnisse sind mehr oder weniger die gleichen (jeweils drei Tests):
MT5: cycle 100000 , time 8.482981 sec , cycle 100000 , time 8.638789 sec , cycle 100000 , time 8.390046 sec
MT4: Zyklus 100000 , Zeit 7.128857 sec , Zyklus 100000 , Zeit 7.176361 sec , Zyklus 100000 , Zeit 7.205439 sec
Grüße! Schöne Feiertage für alle Männer !!!!
Ich verstehe nicht, woher der seltsame Fehler mit der Zickzack-Anzeige des Eigenkapitals im Testgerät kommt. Ich verstehe den seltsamen Fehler mit der Zickzack-Anzeige der Aktien im Tester nicht. Wenn ich die Einstellung "Abrechnungsmethode" von "Tauschbörse" auf "Forex" ändere, wird das Eigenkapital normal angezeigt. Ich habe vor einigen Jahren die gleiche Erfahrung gemacht: Ich wollte versuchen, MT5 mit einem Fonds zu verbinden, testete es, bekam Angst und gab auf. Jetzt habe ich es noch einmal versucht, und es ist dasselbe. Ist das seltsam?
Das Problem ist lösbar für Methoden von "typisierten" Containerklassen, aber nicht für normale Funktionen.
Der Hauptwiderspruch besteht darin, dass für die Übertragung von Strukturen die Übertragung per Referenz und für Literale und temporäre Variablen die Übertragung per Wert verwendet werden muss.
Als Ergebnis erhalten wir einen Kompilierungsfehler für normale lvalue-Typen, da beide überladenen Funktionen für den Aufruf geeignet sind.
Als Teillösung und nur für "primitive" Typen können Sie 12 überladene Funktionen erstellen:
Wenn aber eine Funktion zwei "universelle" Argumente akzeptieren soll, dann werden nur 144 überladene Funktionen benötigt, um sie zu implementieren, während im Falle von drei solchen Argumenten die ganzen 1728 überladenen Funktionen benötigt werden.
Anregung:
Schließlich können die Benutzer Literale und temporäre Variablen als const ref Funktionsargumente übergeben.
Lassen Sie es eine separate # Richtlinie sein - was auch immer...
Defekte in der Template-Funktion/Klassen-Cache-Operation:
(nicht behoben durch MT5(build 2340)) ** Undefiniertes Verhalten, Sie erstellen ein komplexes umhülltes Objekt mit internem Typ "C" mehrmals und es stellt sich heraus, dass es ein völlig anderer Datentyp ist, vielleicht "B", vielleicht "int", was immer Sie wollen...
(nicht behoben durch MT5(build 2340)) * Kompilierfehler, Fehler bei der Übergabe eines Funktionszeigers als const ref Template-Argument.
(nicht behoben durch MT5(build 2340)) * Kompilierfehler, B<int> Objekt kann nach dem B<void*> Klassenobjekt erstellt werden, aber wenn dies vorher geschieht, tritt ein Kompilierfehler auf.
Defekte in der Funktion/Klasse der Vorlage:
(nicht behoben durch MT5(build 2340)) ** Kompilierfehler, Fehler innerhalb der Template-Funktion, übergebener Zeiger innerhalb einerexpliziten Typkonvertierungsoperation verhält sich wie eine Klasse, sonst wie ein Zeiger.
(nicht behoben durch MT5(build 2340)) ** Kompilierfehler, Fehler bei der Generierung von Template-Klassencode bei Verwendung einer internen Klasse.
(nicht behoben durch MT5(build 2340)) ** Kompilierfehler, Fehler beim Versuch, auf eine interne Klasse für einen Template-Parameter einer Template-Funktion zuzugreifen.
(nicht behoben durch MT5(build 2340)) ** Kompilierfehler, Fehler bei der Erzeugung von Template-Methoden/Klassen, der Prozess der "automatischen Ersetzung" des Template-Parameters geht außerhalb des Scops in den Hauptprogrammcode.
(nicht behoben durch MT5(build 2340)) * Compile Error, der Fehler mit der Template-Klasse, die nicht automatisch Code generiert, wenn die Template-Klasse als Rückgabewert für die Template-Methode fungiert.
(nicht behoben durch MT5(build 2340)) * Kompilierfehler, Fehler in der internen Klassendefinition - es gibt keine Möglichkeit, bei der Angabe der Basisklasse explizit auf den globalen Namespace zu verweisen.
Defekte bei überladenen Funktionsaufrufen, die in MQL im Vergleich zu C++ nicht mit der Priorität übereinstimmen:
(nicht behoben durch MT5(build 2340)) *** Kompilierfehler, wenn es eine Klassenvererbung A <= B <= C <= D gibt und zwei Überladefunktionen implementiert sind, z.B. eine mit Parameter A* und eine mit Parameter B*, dann führt die Übergabe eines Objekts C* oder D* in MQL zu einem Kompilierfehler "ambiguous call to overloaded function".
(nicht behoben durch MT5(build 2340)) ** Laufzeit, Prioritätsfehlanpassung bei überladenen Template-Funktionsaufrufen.
Vorschläge:
link- über die Möglichkeit, Literale und temporäre Variablen als const ref Funktionsargumente zu übergeben.
Link- beimVerschieben von Projektdateien in der Registerkarte Projekt, für verschobene Dateien, die geöffnet sind und sich in ME-Registerkarten befinden, um ihren Speicherortpfad automatisch zu aktualisieren.
link- zur Einführung der Funktionalität der Typdeklaration in MQL.
link- über die Möglichkeit, die Erzeugung von Standard-Kopierkonstruktoren und Zuweisungsoperatoren zu erzwingen.
Ich bitte um Hilfe, ich bin völlig überfordert.
In OnChartEvent kann ich durch Drücken von "C" das Preisdiagramm abbrechen bzw. wiederherstellen.
Und alles wäre in Ordnung, aber wenn das Tastaturlayout nicht ausgewählt ist Englisch - funktioniert nicht.
Wie kann man die Erkennung des Drückens von "C" unabhängig vom gewählten Layout machen?
Ich bitte um Hilfe, ich bin völlig überfordert.
In OnChartEvent kann ich durch Drücken von "C" das Preisdiagramm abbrechen bzw. wiederherstellen.
Und alles wäre in Ordnung, aber wenn das Tastaturlayout nicht ausgewählt ist Englisch - funktioniert nicht.
Wie kann man erreichen, dass die Erkennung des Drückens von "C" unabhängig vom gewählten Layout ist?
lparam muss überprüft werden
Für die Tastaturlayouts ru und en (sowohl Klein- als auch Großbuchstaben) ist lparam gleich 67: