Mein Ansatz. Der Kern ist der Motor. - Seite 158

 
Artyom Trishkin:

Warten Sie. Sie haben geschrieben:

Wer hat also welche Armee?

Nun, Ihre Unhöflichkeit in Bezug auf "Klugscheißer" schreibe ich der Tatsache zu, dass Sie nicht sehr gut Russisch sprechen und nicht verstehen, dass es eine abwertende und herabsetzende Haltung gegenüber Ihrem Gesprächspartner bedeutet.

Warum, haben Sie Ihren Sinn für Humor verloren oder was?

 
Vasiliy Sokolov:

Leider ja. Eine Rückrufschnittstelle zwischen zwei grundlegend unterschiedlichen Systemen ist nicht möglich.

Eigentlich war die Frage fast rhetorisch)

IMHO, mit NET-Kompatibilität hinzugefügt, ist es notwendig, Rückrufe zu Terminal hinzufügen. Mindestens eine) Mindestens, um das Ereignis in die Terminalwarteschlange zu stellen.

 
Artyom Trishkin:

Wenn über Timer, wie werden Sie in den Tester zu arbeiten? Ich dachte, Sie hätten gesagt, Sie würden plattformübergreifenden Code erstellen.

Artyom, welche Fragen? Wenn der Timer nicht funktioniert, wird er von anderen Quellen emuliert...

es ist sogar im "Kampfroboter" immer so, weil der EventSetTimer:-)

ps/ ich fühle mich irgendwie ansteckend zu militaristischen Themen hingezogen... Kommandoposten, Kampfroboter... "Galacteco Danger"

 
Dmitriy Skub:

Eigentlich war die Frage fast rhetorisch)

IMHO besteht mit der Hinzufügung der NET-Kompatibilität ein dringender Bedarf, dem Terminal Rückrufe hinzuzufügen. Mindestens eine) Das Ereignis wird in die Terminalwarteschlange gestellt.

Ich bin nicht in der Lage, Ereignisse in MT5 abzufangen, Spy++ kann aus irgendeinem Grund keine Chart-Ereignisse sehen. Es scheint, dass selbstgeschriebene Klassen und Ereignismodelle anstelle von Standard-Windows-Ereignissen verwendet werden.

Ich verwende auch OnTimer, deshalb versuche ich, ein minimales Datenpaket in der Anfrage zu erhalten, obwohl ich bei der derzeitigen PC-Geschwindigkeit vielleicht zu gierig bin)))

Artyom Trishkin:

Wenn die Zeitschaltuhr, wie arbeiten Sie in der Prüfmaschine? Ich dachte, Sie hätten gesagt, dass Sie plattformübergreifenden Code erstellen.

Als ich versucht habe, МТ5 zu verwenden, war es ein echtes Vergnügen, unter C# zu schreiben - ich rufe .dll auf, starte sofort ein Formular und lege alle Grafiken in einen separaten Thread (Thread) und das ist alles, danach arbeite ich nur noch mit dem Datenaustausch zwischen C# und МТ5 und das grafische Formular mit Schaltflächen funktioniert wie eine übliche Witwenanwendung - die Anfrage von МТ5 erhält nur den Status der zuvor angeklickten Elemente und nichts wird gebremst oder wird sein;)

 
Maxim Kuznetsov:

Artyom, was sollen die Fragen? Wenn der Timer nicht funktioniert, wird er von anderen Quellen emuliert...

dies ist sogar immer der Fall in "Kampfroboter", weil EventSetTimer :-)

ps/ ich fühle mich irgendwie ansteckend zu militaristischen Themen hingezogen... Kommandoposten, Kampfroboter... "Galacteco Danger"

Na ja... Ich wollte Vassili fragen, wie er es machen würde. Um es mit dem zu vergleichen, was ich vor langer Zeit selbst gemacht habe (natürlich nicht ohne Vasils Rat)

 
Igor Makanu:

Ich habe es nicht geschafft, Ereignisse in MT5 zu erfassen, aus irgendeinem Grund sieht Spy++ keine Chart-Ereignisse, es scheint, dass selbst geschriebene Klassen und Ereignismodelle verwendet werden, anstatt Standard-Widows, in MT4 kann ich ein Widows-Ereignis ohne Probleme senden

Ich verwende auch OnTimer, deshalb versuche ich, ein minimales Datenpaket in der Anfrage zu erhalten, obwohl ich bei der derzeitigen PC-Geschwindigkeit vielleicht zu gierig bin)))

Als ich versucht habe, OnTimer in MT5 zu verwenden, wird der Timer im Tester ohne Probleme generiert und es ist ein echtes Vergnügen, unter C# zu schreiben - ich rufe die .dll auf, starte sofort das Formular und lege alle Grafiken in einen separaten Thread ( Thread ), danach arbeitet man nur noch mit dem Datenaustausch zwischen C# und MT5 und das grafische Formular mit den Schaltflächen funktioniert von selbst wie eine gewöhnliche Windows-Anwendung - die Anfrage von MT5 erhält nur den Status der zuvor angeklickten Elemente und nichts wird gebremst ;)

Ich habe es in fünf Minuten mit dem Timer des Testers geschafft. Selbst seine einfache Verwendung (es handelt sich um einen Millisekunden-Multitimer) führt zu einer erheblichen Verlangsamung des Prüfgeräts. Verweigern Sie daher einfach den Timer im Visualizer - es ist das Gleiche, wenn Sie mit Ticks arbeiten. Zwei Modelle erstellt - durch Timer und durch Flaggen-Ereignisse durch OnTick(). Per Timer in Echtzeit, per Ticks - im Visualizer.

Lies - drei Modelle - auch durch OnChartEvent() - auch hier nur Echtzeit.

 
Igor Makanu:

Ich habe es nicht geschafft, Ereignisse in MT5 zu erfassen, aus irgendeinem Grund sieht Spy++ keine Chart-Ereignisse, es scheint, dass selbst geschriebene Klassen und Ereignismodelle verwendet werden, anstatt Standard-Widows, in MT4 kann ich ein Widows-Ereignis ohne Probleme senden

Ich verwende auch OnTimer, deshalb versuche ich, ein minimales Datenpaket in der Anfrage zu erhalten, obwohl ich bei der derzeitigen PC-Geschwindigkeit vielleicht zu gierig bin)))

Als ich versucht habe, OnTimer in MT5 zu verwenden, wird der Timer im Tester ohne Probleme generiert, und es ist ein Vergnügen, Code unter C# zu schreiben - ich rufe .dll auf, starte sofort das Formular und in einem separaten Thread ( Thread ) alle Grafiken und das ist alles, jetzt arbeite ich nur mit dem Datenaustausch zwischen C# und MT5, und das grafische Formular mit Schaltflächen funktioniert von selbst als eine übliche Witwenanwendung - in MT5-Anfrage wird nur der Status von früher angeklickten Elementen gesendet, nichts ist Lags und wird nicht lag ;)

Wenn Sie auch Model auf MQL-Niveau und andere Dinge bei Sharpey machen, wird es großartig sein. Dann ist die Logik getrennt, die Ansicht ist getrennt. Das Frontend befasst sich mit dem Design und der Benutzerfreundlichkeit und nicht mit dem Backend des Handels. Eine Änderung der Konfiguration der Schaltflächen in einem Formular oder die Aufteilung eines Formulars in zwei oder drei Formulare sollte die Algorithmen des Expert Advisors in keiner Weise beeinflussen.

 
Vasiliy Sokolov:

Peter, wenn Sie nichts dagegen haben, werde ich einen Artikel darüber vorbereiten, wie eine grafische Anwendung ganz einfach in MQL erstellt werden kann, indem die neue Funktion der Integration mit .Net-Bibliotheken verwendet wird. Der Titel des Artikels lautet "Erstellen von benutzerdefinierten Formularen in VisualStudio für Handelsexperten auf der Grundlage von .Net Framework und C#".

Ihr Ansatz und Ihre Ideen haben mich inspiriert. Ich habe mich gefragt, ob es möglich ist, mit einfachen Programmierkenntnissen schnell und einfach ein grafisches Formular für meinen Expert Advisor zu erstellen. Ich habe ein Experiment durchgeführt, und es stellte sich heraus, dass es möglich ist! Ich habe ein solches Formular erhalten:

Die Idee war, dass der Benutzer das gewünschte Formular im VisualStudio-Editor zeichnet und die gesamte notwendige Arbeit der Integration dieses Fensters mit dem MQL-Code im Hintergrund, im automatischen Modus, erledigt wird. Dazu musste ich einen C#-Controller schreiben - eine Art Analogon zu Ihrem Kernel, der jedoch nur etwa 200 Zeilen Code benötigt.

Wie das Ganze funktioniert, können Sie in dem Artikel nachlesen, den ich begonnen habe.

Das war's, Vasiliy, du hast deinen Kern mit einem Kessel bedeckt.

 
Dmitry Fedoseev:

Das war's, Wassili, du hast dir den Kopf mit einem Betonklotz zugedeckt.

Es wird allgemein erwartet, dass es so endet, aber es gibt noch keinen konkreten Artikel...

obwohl es eine 99%ige Chance gibt, dass ein solcher Artikel vor der Kernel-Engine erscheinen wird. Peter muss den verbleibenden Prozentsatz einhalten.

 
Artyom Trishkin:

Das habe ich in den fünf über den Timer im Prüfgerät gemacht. Schon die bloße Verwendung des Multitimers (und es handelt sich um einen Millisekunden-Multitimer) führte zu einer erheblichen Verlangsamung des Testers. Verweigern Sie daher einfach den Timer im Visualizer - es ist das Gleiche, wenn Sie mit Ticks arbeiten. Zwei Modelle erstellt - durch Timer und durch Flaggen-Ereignisse durch OnTick(). Nach Timer in Echtzeit, nach Ticks - im Renderer.

ZS. Ich lüge - drei Modelle - auch durch OnChartEvent() - auch dort nur Echtzeit.

Ich habe mich noch nicht für das Design entschieden, ich habe überprüft, dass es im Tester ohne Probleme funktioniert, danke an@fxsaber für seine Hilfe mit dem #define Code - ich füge automatisch OnTick(), OnTimer() Handler hinzu, wenn ich den Injektor einstecke... damit ich die notwendigen Aufrufe in jedem Abschnitt des Expert Advisors machen kann

Ich weiß nicht einmal, wo die Verzögerung liegen könnte... Ich benutze den Timer ziemlich oft - 400 ms, aber der Anruf kommt nur vom .dll 2 Arrays int 10-ele-v und 2 int (wie viele Schaltflächen und wie viele Kontrollkästchen, wie Dimension von Arrays), es einfach physisch nicht verlangsamen, weil auch in das Array schreiben, wenn die Schaltfläche angeklickt wurde, und in der int-Nummer schicke ich eine Schaltfläche, das Array ist im Prinzip nicht erforderlich, als Vorsichtsmaßnahme, wenn der Benutzer einen Nervenzusammenbruch hat und es schneller als 0,5 Sekunden wird die Schaltfläche schlagen )))

Ich schätze, wir haben unterschiedliche Aufgaben - wenn es um die Konstruktion von TS geht, braucht man keine Grafiken, und wenn es um die Fehlersuche und Visualisierung von TS geht, braucht man nicht die Geschwindigkeit des Testers ;)


Maxim Kuznetsov:

Wenn Sie auch ein Modell auf MQL-Ebene erstellen und den Rest in Sharpay, wäre das großartig. Dann ist die Logik getrennt, die Ansicht ist getrennt. Das Frontend kümmert sich um das Design und die Benutzerfreundlichkeit und mischt sich nicht in das Handels-Backend ein. Eine Änderung der Konfiguration der Schaltflächen auf einem Formular oder die Aufteilung eines Formulars in zwei oder drei Formulare sollte die Algorithmen des Expert Advisors in keiner Weise beeinflussen.

Ich werde es als Erinnerung behalten, guter Beitrag! Und schreibe es in die Beschreibung, wenn ich reif für öffentliche Kommentare bin

Grund der Beschwerde: