Diskussion zum Artikel "Die Entwicklung von grafischen Oberflächen für Expert Advisors und Indikatoren auf Basis von .Net Framework und C#" - Seite 14
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
Ein Beispiel finden Sie in der Ankündigung https://www.metatrader5.com/ru/releasenotes/terminal/1898.
MQL5
Um mit Funktionen von .NET-Bibliotheken zu arbeiten, genügt es, die DLL selbst zu importieren, ohne bestimmte Funktionen anzugeben. MetaEditor importiert automatisch alle Funktionen, mit denen es möglich ist, zu arbeiten:
.
.
Um Funktionen aus der Bibliothek aufzurufen, importieren Sie sie einfach:
. Der C#-Code der Inc-Funktion der Klasse TestClass sieht wie folgt aus:
. Das Skript gibt den Wert 42 zurück.
Die Arbeit an der Unterstützung von .NET-Bibliotheken ist im Gange, und es ist geplant, ihre Verwendung in zukünftigen Versionen zu erweitern.
WinAPI-Funktionen sind in separaten Dateien nach Zweck gruppiert:
.
Die Bindung funktioniert nur mit 64-Bit-Architektur.
In Visual Studio Community 2019 funktioniert alles wie vom Autor beschrieben, aber wenn er schreibt:
"Jedes Formular hat eine öffentliche Liste von Elementen, die es enthält. Die Methode geht die Liste der Elemente durch und findet diejenigen, die der Controller unterstützen kann, und abonniert die benötigten Ereignisse. Wenn ein Element des Formulars vom Controller nicht unterstützt wird, wird es einfach ignoriert. "
Leider, wenn Sie einen SplitContainer oder DataGridView auf dem Testformular platzieren, startet das Formular überhaupt nicht, es ist nicht klar, warum, aber eine so komplexe Komponente wie Chart STARTET.
Ich füge ein Testbeispiel bei, welche Komponenten zur Änderung verwendet werden können (obwohl das Formular startet!).
beim Versuch, einen Controller zu erstellen GuiController controller = new GuiController(assembly, form, m_global_events);
gibt Unexpected exception: The key with this name already exists (for DataGridView) and the controller is NOT created (the form is created, probably it can be shown, but without the controller how to control it?).
Noch einmal: Alles ist OK, wenn es keine SplitContainer- und/oder DataGridView-Komponenten gibt.
vielleicht stolpert jemand anderes
dies ist die Stelle im Artikel
"Wie Sie sehen können, versteht der Compiler externe Aufzählungen, die in Netzbibliotheken definiert sind, und weiß, wie man mit ihnen arbeitet."
Ich weiß nicht, aus welchem Grund, aber der Compiler weigert sich hartnäckig, C# Enums zu verstehen, also ziehen wir enum von C# in Mql5 und alles funktioniert.
Nur, Vasily, du hast die Schaltflächen Kaufen und Verkaufen im Handelsbereich verkehrt herum platziert ))
Aber im Großen und Ganzen hat sich die coolste Sache herausgestellt. Vielen Dank für deine harte Arbeit!)
Ich hatte das gleiche Problem.
Ich habe es ein wenig anders gelöst - statt ClickOnElement habe ich GuiEventType::ClickOnElement geschrieben. Und danach kompiliert es und funktioniert ohne Probleme. Aber wenn das der Fall ist, ist es wirklich unklar, wie es bei Vasily funktioniert hat. Vielleicht habe ich etwas falsch gemacht...
Aber ansonsten ist das Ding wirklich notwendig und nützlich. Es ist schade, dass MQL5 nicht etwas ähnliches (eingebaut) hat.
Ich hatte das gleiche Problem.
Ich löste dieses Problem ein wenig anders - anstelle von ClickOnElement schrieb ich GuiEventType::ClickOnElement. Und danach kompiliert es und funktioniert ohne Probleme. Aber wenn das der Fall ist, ist es wirklich unklar, wie es bei Vasily funktioniert hat. Vielleicht habe ich etwas falsch gemacht...
Aber ansonsten ist das Ding wirklich notwendig und nützlich. Es ist schade, dass MQL5 nicht etwas ähnliches (eingebaut) hat.
Ich hatte einen solchen Fehler:
@MQL_User, ich habe es so gemacht wie Sie: " ...statt ClickOnElement schrieb ich GuiEventType::ClickOnElement" - alles funktionierte!
Dies funktioniert nicht für MT4. Ich habe versucht, ohne Ergebnisse.
Ich bin relativ neu bei MQL5 und habe viel aus diesem Artikel gelernt! Herzlichen Dank!
Ich habe eine Frage. Habe in den letzten 2 Tagen ein bisschen gekämpft, um dies unten herauszufinden.
Ich habe erfolgreich jeden Schritt ein paar Mal auch auf einem anderen Computer abgeschlossen, aber jedes Mal, wenn ich versuche, den Code zu kompilieren, bekomme ich eine Fehlermeldung.
Der MQL-Compiler gibt an: "Undeclared Identifier" für jede der unten aufgeführten Aufzählungen.
Wenn ich "Kommentar" diese Aufzählungen aus MQL5 dann funktioniert es entsprechend, die interessant ist, da dies bedeutet, dass der Code funktioniert, aber kann nicht die Aufzählungen lesen, die meine Vermutung ist?
Wenn jemand mir helfen kann, wäre ich sehr dankbar :)
Danke!
Ich habe gelesen, dass Sie die Enums auch in der MQH-Datei genau so deklarieren müssen, wie sie in der DLL deklariert wurden.
string ReceiveEvent(int event_n); // Returns JSON string.. Use JAson.mqh to Deserialize objectsWie verwende ich dies innerhalb von OnTimer()?
Ich verwende den gleichen Ansatz wie in diesem Artikel beschrieben
Meine Frage ist: welchen int muss ich innerhalb der ReceiveEvent-Funktion übergeben?Entschuldigen Sie meine Unwissenheit, aber ich verstehe es nicht.
Können Sie mir bitte sagen, was mit dem Programm GuiMtController.mq5 nicht stimmt, das beim Ausführen einen Fehler meldet?