Fehler, Irrtümer, Fragen - Seite 3079
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
Market lädt keinen Screenshot. Ich habe es mit zwei Browsern versucht.
Ich auch...
Guten Tag, was könnte das Problem sein? Ich verwende dll, um in SQL Server zu schreiben (Beispiel aus Artikel https://www.mql5.com/ru/articles/2895 ).
Wenn ich bis zu 5 Threads verwende, werden die Daten korrekt geschrieben. Wenn ich mehrere Threads verwende, tritt der Fehler "Unhandled exception 0xE0434352" auf.
Guten Tag, was könnte das Problem sein? Ich verwende dll, um in SQL Server zu schreiben (Beispiel aus Artikel https://www.mql5.com/ru/articles/2895 ).
Wenn ich bis zu 5 Threads verwende, werden die Daten korrekt geschrieben. Wenn ich mehrere Threads verwende, erscheint der Fehler "Unhandled exception 0xE0434352" auf einmal.
In allen Funktionen der Schnittstelle DLL sollten wir try catch verwenden, catch "unhandled exception" und schreiben Sie es in log...
Es ist eine gute Idee, alle Ausnahmen abzufangen und alle Aufrufe an die Pluspunkte auszuprobieren. Auch in der MQL-Dokumentation ist es klar geschrieben - DLLs sollten keine Ausnahmen werfen, nicht C++.
insbesondere in dem Artikel conn.Close und new SqlConnection fallen nicht unter "Exception Catching" und können potenziell Ausnahmen auslösen
Der Screenshot wird nicht auf dem Marktplatz geladen. Ich habe es mit zwei Browsern versucht.
Ich auch...
Haben Sie versucht, das Bild einfach per Drag & Drop zu verschieben?
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Markt und Mathematik
Alexey Viktorov, 2021.08.19 21:01
Versuchen Sie, ein Bild durch einfaches Ziehen und Ablegen auf dem Text einzufügen.
Ich habe nun versucht, Änderungen im versteckten Expert Advisor vorzunehmen und habe das erste Bild, das ich sah, gezogen.
Haben Sie versucht, das Bild einfach per Drag & Drop zu verschieben?
von 5 Bildern wird nur eines hinzugefügt
Dies ist schon seit langem der Fall. mql-Strings mögen keine Null-Zeichen innerhalb einer Zeichenkette und in Literalen, auch in Funktionen.
Der einzige normale Weg ist die Umwandlung von drei Zeichenketten in ein Array mit einer abschließenden Null.
Das heißt, dieses Verhalten, so wie es jetzt ist, wurde vor einigen Jahren absichtlich herbeigeführt. Ich kenne die Gründe nicht.Es gibt überall Feinde
In allen Schnittstellen-DLL-Funktionen alles in try catch verpacken, die "unbehandelte Ausnahme" abfangen und protokollieren...
Es ist eine gute Idee, alle Ausnahmen abzufangen und alle Aufrufe von Pluszeichen in try zu verpacken. Auch in der MQL-Dokumentation ist es klar geschrieben - DLLs sollten keine Ausnahmen werfen, nicht C++.
insbesondere conn.Close und new SqlConnection keine Ausnahmen auslösen und möglicherweise eine auslösen könnten
Danke! Ich habe es überprüft, Zugriffsfehler auf eine gemeinsame Variable. Der Autor hat auch darüber geschrieben.
Es muss darauf hingewiesen werden, dass das Demoprojekt eine sehr wichtige Einschränkung hat: Es erlaubt nur die Ausführung eines Expert Advisors, der mit DB in einem MetaTrader-Terminal arbeitet. Das Problem ist, dass alle EAs eine Instanz einer geladenen DLL verwenden. Da unsere Klasse statisch ist, wird sie für alle laufenden Expert Advisors gleich sein. Auch die Variablen werden gemeinsam sein. Wenn Sie mehrere Experten einsetzen, verwenden diese alle dieselbe Verbindung und ein Befehlsobjekt für alle. Wenn mehrere Experten gleichzeitig versuchen, auf diese Objekte zuzugreifen, kann es zu Problemen kommen.
F: Wie kann ich einen Multithreading-Zugriff auf die DLL implementieren (separate Instanz für jeden Funktionsaufruf und lokale Variablen für jeden Aufruf)?
Dieses Problem tritt bei mir im MT5-Tester auf.
Wenn Sie mit mehreren Währungen arbeiten, werden gelegentlich Daten aus einer anderen Währung ausgetauscht. Prüfen Sie das Prüfgerät. Bitte korrigieren Sie dies.
Der erste Wert istSymbolInfoDouble(Symbol,SYMBOL_BID);
Als ob es keine Preise empfangen kannSymbolInfoDouble(EURGBP,SYMBOL_BID); und nimmt Wert von einem anderen Paar, das in Arbeit ist. Gibt es eine Möglichkeit zu überprüfen, ob das Zitat korrekt ist?
Ich danke Ihnen! Ich habe es überprüft, Zugriffsfehler auf eine gemeinsame Variable. Der Autor schrieb auch darüber
Es sollte beachtet werden, dass das Demoprojekt eine sehr wichtige Einschränkung hat: Es erlaubt nur einen Expert Advisor, der mit DB in einem MetaTrader-Terminal arbeitet. Das Problem ist, dass alle EAs eine Instanz einer geladenen DLL verwenden. Da unsere Klasse statisch ist, wird sie für alle laufenden Expert Advisors gleich sein. Auch die Variablen werden gemeinsam sein. Wenn Sie mehrere Experten einsetzen, verwenden diese alle dieselbe Verbindung und ein Befehlsobjekt für alle. Wenn mehrere Experten gleichzeitig versuchen, auf diese Objekte zuzugreifen, kann es zu Problemen kommen.
F: Wie kann ich einen Multithreading-Zugriff auf die DLL implementieren (separate Instanz für jeden Funktionsaufruf und lokale Variablen für jeden Aufruf)?
Es gibt fast keine Möglichkeit, dies in .NET zu tun. Die Klasse ist nicht statisch, weil der Autor des Artikels böse ist, sondern weil scharfe Klassen auf diese Weise importiert werden.
Ich sehe zwei Möglichkeiten: 1) (lange Zeit zu schreiben, funktioniert schnell) in C++ umschreiben und nicht mehr berühren .NET 2) (eher mechanisch, aber die Geschwindigkeit wird nach unten gehen und es könnte Nebenwirkungen) gedankenvoll wrap Aufrufe in Critical Section zu vermeiden, zwei Threads gleichzeitig zugreifen
wenn Sharping wichtig ist, eine andere Option - die Verbindungs-Pooling-Steuerung auf DLL-Ebene neu zu schreiben, um die Zuordnung von EA<->Verbindung_id zu erinnern und jeder EA arbeitet mit seiner Verbindung;
Ich kann nicht sagen, über .net - ist es möglich, zu erhalten und speichern Sie Verweis auf Sharp's Objekt in einige MQL-Struktur oder Skalar und übergeben Sie es hin und her. Das heißt, dass sie wie ein normaler C++-Zeiger funktionieren. Wenn das möglich ist, dann wird alles vereinfacht.