Diskussion zum Artikel "Die Entwicklung von grafischen Oberflächen für Expert Advisors und Indikatoren auf Basis von .Net Framework und C#"

 

Neuer Artikel Die Entwicklung von grafischen Oberflächen für Expert Advisors und Indikatoren auf Basis von .Net Framework und C# :

Der Artikel stellt eine einfache und schnelle Methode zur Erstellung von grafischen Fenstern mit Visual Studio mit anschließender Integration in den MQL-Code des Expert Advisors vor. Der Artikel richtet sich an ein nicht spezialisiertes Publikum und erfordert keine Kenntnisse der Technologie von C# oder .Net.

MetaTrader 5 Strategie-Tester hat eine Reihe von Funktionen, die von MQL-GUI-Entwicklern berücksichtigt werden sollten. Die wichtigste ist die Tatsache, dass die grafische Ereignisverarbeitungsfunktion OnChartEvent überhaupt nicht aufgerufen wird. Diese Funktion ist logisch, da die grafische Form die Arbeit mit einem Benutzer in Echtzeit beinhaltet. Es wäre jedoch äußerst interessant, eine bestimmte Art von Panels im Tester zu implementieren. Dies sind die sogenannten Trading Player, die es den Nutzern ermöglichen, ihre Handelsstrategien manuell zu testen. Beispielsweise generiert der Strategietester im Schnelldurchlauf die aktuellen Marktpreise, während ein Benutzer auf die Schaltflächen Kaufen und Verkaufen klickt, um die Handelsoperationen mit der Historie zu simulieren. Das TradePanel, das wir entwickelt haben, bietet genau diese Art von Panels. Trotz seiner Einfachheit kann es sich durchaus um einen reinen Handelspartner mit den notwendigsten Funktionen handeln. 

Aber lassen Sie uns darüber nachdenken, wie unser Panel im Strategietester MetaTrader 5 funktionieren wird. Das Grafikfenster von TradePanel existiert als eigenständige Net-Assembly. Daher ist es nicht von der aktuellen Umgebung des MetaTrader 5 oder gar dem Terminal selbst abhängig. Genau genommen kann es von jedem anderen Programm aus ausgeführt werden, während sogar Benutzer selbst Assemblies starten können, die sich im Exe-Container befinden.

Somit muss unser Programm OnChartEvent nicht aufrufen. Darüber hinaus ist es möglich, Daten im Fenster zu aktualisieren und neue Aufträge von Benutzern zu erhalten, in jedem Fall aber mit einer Funktion, die regelmäßig im Strategie-Tester gestartet wird. OnTick und OnTimer sind solche Funktionen. Das Panel arbeitet durch sie hindurch. Daher ist unser Panel zwar für den Echtzeitbetrieb ausgelegt, funktioniert aber auch gut im Strategietester. Hierfür sind keine Änderungen erforderlich. Lassen Sie uns diese Aussage überprüfen, indem wir unser Panel im Tester starten und mehrere Deals tätigen:

Autor: Vasiliy Sokolov

 

Dieses Bild

können Sie deutlich sehen, was Sie tun müssen, um das Gleichgewichts-/Eigenkapitaltableau beim visuellen Handel zu sehen.


ZY Was sind die beiden zusätzlichen Schaltflächen in der oberen rechten Ecke jedes Fensters?

 
fxsaber:

Auf diesem Bild.

können Sie deutlich sehen, was Sie tun müssen, um das Gleichgewichts-/Equity-Diagramm beim visuellen Handel zu sehen.

Für diejenigen, die zwei Monitore haben, ist es eigentlich sehr praktisch. Ich habe zwei, musste aber dieses Layout für das Bild wählen.

fxsaber:

Was sind die beiden zusätzlichen Schaltflächen in der oberen rechten Ecke jedes Fensters?

Das ist ein zusätzliches Hilfsmittel für die bequeme Arbeit mit zwei Monitoren. In diesem Fall sollte es nicht im Gif sein, aber man kann nicht alles sehen.

 
Найдите скомпилированный файл MtGuiController.dll в папке MtGuiController\bin\debug и скопируйте его в каталог библиотек MetaTrader 5
Ist dies nicht die Debug-Version?
 
Die erste Zeile teilt dem Compiler mit, dass Aufrufe an открытым статическим методам класса, располагающимся в MtGuiController.dll verwendet werden sollen. Beachten Sie, dass es nicht notwendig ist, anzugeben, welche Methoden wir in dieser Assembly aufrufen werden. Der Compiler wird diese Arbeit im automatischen Modus für uns erledigen.
Ist es möglich, die Liste dieser Methoden im Editor-Modus zu erhalten?
 

guter Artikel, aber aus irgendeinem Grund denke ich, dass das Niveau nicht für Anfänger ist, obwohl als Anweisung, was und wie ist sehr detailliert, danke!

ZY: ein Formular mit Schaltflächen und ohne Drittanbieter-dll ( GuiController.dll ) Benutzer kann ein Formular mit Tasten mit VS2017 Tools buchstäblich in 2 Klicks erstellen: Projekt erstellen - Net Klassenbibliothek und dann Projekt - Windows-Formular hinzufügen.

im ersten Fenster "Klassenbibliothek" schreiben wir einen Code, der ein grafisches Formular in ein paar Zeilen startet, etwa so:

using System;
using System.Threading; 
public class MainForm
    {
        static Form1 mainform;
        static Thread threadmainform;
        
public static void Init()
        {
            if (mainform == null)
            {
                threadmainform = new Thread(NewForm);
                threadmainform.Start();
            }
        }

public static void DeInit(int reason)
		{
            if (reason == 3 || reason == 5) return;
            if (mainform!=null) {mainform.Close(); Thread.Sleep(1000);}
			if(threadmainform!=null) threadmainform.Join();
			mainform=null;
			threadmainform=null;
		}

private static void NewForm()   {   mainform = new Form1();   mainform.ShowDialog();   }
}

Wenn Sie diese zehn Zeilen in VS2017 kompilieren, dann können Sie in MT5 bereits ein grafisches Formular erstellen (alle Elemente, die dem Formular hinzugefügt werden, sind "klickbar") und Sie können es löschen(DeInit () ), es bleibt nur noch, den Datenaustausch zwischen dem Formular - das sich in einem separaten Thread "dreht" - und MT5 selbst herzustellen

bei MT4 ist alles viel trauriger, aber man kann immer noch eine in .Net geschriebene DLL zum Laufen bringen.


 

Danke für das Beispiel von github. Ist das gleiche Prinzip möglich mit MT5?

#include <Include.mqh> // ShareProject-Pfad

Wenn ME automatisch synchronisiert mqh Datei durch vorgeschriebenen Kommentar im Pfad?

 

Danke für den Artikel! Alles ist durchgekaut. Ich habe nicht nur über die Innereien von C# gelesen. Aber man muss es wirklich nicht wissen, um ein Formular zu erstellen.


Gedanken zur Anwendung

  • Von der Anwendung aus ist es möglich, die Ausführung eines einzelnen Durchlaufs zu stoppen, auch wenn man sich nicht im Visualisierungsmodus befindet. Zum Beispiel läuft eine MO-Lernschleife in OnTester. Mit dem Formular ist es bequem, es zu stoppen, wenn Sie es für richtig halten.
  • Es ist gut zu sehen, dass es sehr einfach ist, eine vollwertige Handels-API für C# zu schreiben. Dann schreiben Sie alle Expert Advisors in C# und lassen sie in Terminal/Tester laufen. Und auf der Grundlage dieser API können Sie zum Beispiel alternative Terminals mit benutzerdefinierten Skins erstellen. Riesige Möglichkeiten für Anwendungen, die sich an normale Benutzer richten. Sie können deren Wünsche sammeln und umsetzen: Tick-Charts, Tester, etc.
  • Es ist möglich, das Panel einfach in Ihren EA einzubetten, als Ergänzung zum manuellen Handel im Visualiser. So können Sie Stresssituationen für den Algo-Advisor nachstellen (seine Order gelöscht, Ihre eigene platziert, etc.). Noch angenehmer ist aber, dass alle manuellen Aktionen einfach aufgezeichnet und ohne Formular und damit ohne Tastendruck abgespielt werden können. Das ermöglicht es Ihnen, den EA im Debug-Modus zu testen, um die Stabilität der manuellen Eingriffe zu gewährleisten.


Wie wird die Interaktion funktionieren, wenn mehrere solcher Formular-Advisors laufen?

 
fxsaber:

Danke für das Beispiel von github. Ist das gleiche Prinzip mit MT5 möglich?

#include <Include.mqh> // ShareProject-Pfad

Wenn ME automatisch die mqh-Datei entsprechend dem Kommentar im Pfad synchronisiert?

Was Sie beschrieben haben, könnte ein sehr interessantes und cooles Feature für ME sein, aber so funktioniert es natürlich nicht.

Allerdings werden MQL4 und MQL5 direkt von GitHub unterstützt.

Es gibt auch Dienstprogramme, in erster Linie Git Bash, mit denen Sie alles tun können, was VisualStudio kann, und mehr. Sie funktionieren perfekt mit MQL-Projekten. Was soll man sagen, wenn ganze Bücher mit Hilfe von GitHub geschrieben werden.

In der Tat wird die Entwicklung von MQL-Projekten auf github schon seit langem und auf hohem Niveau unterstützt.

 
Vasiliy Sokolov:

Was Sie beschrieben haben, könnte eine sehr interessante und coole Funktion für MICH sein, aber so funktioniert es natürlich nicht.

Allerdings werden MQL4 und MQL5 direkt von GitHub unterstützt.

Es gibt auch Dienstprogramme, vor allem Git Bash, mit denen Sie alles tun können, was VisualStudio kann, und mehr. Sie funktionieren perfekt mit MQL-Projekten. Was soll man sagen, wenn ganze Bücher mit Hilfe von GitHub geschrieben werden.

In der Tat wird die Entwicklung von MQL-Projekten auf github schon seit langem und auf hohem Niveau unterstützt.

Leider ist das alles ein dunkler Wald für Nerds wie mich. Ihr Artikel zeigt eine coole Anwendung von github. Es ist wahrscheinlich nur 1% seiner Möglichkeiten, aber es ist nützlich.

Ich habe nicht verstanden, wie es in MQL5 aus den angegebenen Links helfen kann. Wahrscheinlich ist es ein Muss für Programmierer, aber es gibt diejenigen, die weit von der Programmierung sind, wie ich selbst.

Wenn es einen Artikel zu diesem Thema für MQL5 gäbe, wäre das sehr nützlich.

 
fxsaber:

Danke für den Artikel! Alles ist durchgekaut. Ich habe nicht nur über die Innereien von C# gelesen. Aber man braucht es wirklich nicht zu wissen, um ein Formular zu erstellen.

Gedanken zur Anwendung

  • 1) Von der Anwendung aus ist es möglich, die Ausführung eines einzelnen Durchgangs zu stoppen, auch wenn man sich nicht im Visualisierungsmodus befindet. Zum Beispiel läuft eine MO-Lernschleife in OnTester. Mit dem Formular ist es bequem, es zu stoppen, wenn man es für richtig hält.
  • 2) Es ist gut zu sehen, dass es sehr einfach ist, eine vollwertige Handels-API für C# zu schreiben. Dann schreiben Sie alle Expert Advisors in C# und führen sie in Terminal/Tester aus. Und basierend auf dieser API können Sie alternative Terminals mit benutzerdefinierten Skins, zum Beispiel, erstellen. Riesige Möglichkeiten für Anwendungen, die sich an normale Benutzer richten. Sie können deren Wünsche sammeln und umsetzen: Tick-Charts, Tester, etc.
  • 3) Es ist möglich, das Panel einfach in Ihren EA einzubinden, als Ergänzung zum manuellen Handel im Visualiser. So können Sie Stresssituationen für den Algo-Advisor nachstellen (seine Order gelöscht, Ihre eigene platziert, etc.). Noch angenehmer ist aber, dass alle manuellen Aktionen einfach aufgezeichnet und ohne Formular und damit ohne Tastendruck abgespielt werden können. Dies ermöglicht es Ihnen, den EA im Debug-Modus zu testen, um die Stabilität der manuellen Eingriffe zu gewährleisten.

4) Wie funktioniert die Interaktion, wenn mehrere solcher Form-Advisors laufen?

1) Ja, absolut. Der externe Anwendungschip ermöglicht Ihnen all diese Dinge zu tun.

2) Es ist in der Tat möglich, ihn zu schreiben. Aber es ist eine schlechte Idee, die gesamte Handelsumgebung in C# zu packen. Es ist besser, Expert Advisors in reinem MQL zu schreiben, aber es ist möglich, sie mit den notwendigen "Garnituren" in C# auszustatten.

3) Ja, das kann man machen.

4) Es kann auf verschiedene Arten konfiguriert werden. Es ist so gemacht, dass Sie den Namen des Formulars und die Baugruppe, in der es sich befindet, angeben müssen. D.h. Sie können jetzt ein, zwei oder fünf Formulare ausführen. Es gibt keine Beschränkungen.