Visual Studio auf der MT4-Plattform. - Seite 4

 

Wie die technischen Informationen und Anweisungen zur Erstellung der grafischen Benutzeroberfläche aussehen werden, können Sie unter diesem Link sehen:

https://www.youtube.com/watch?v=ciVqJwgIIyg&feature=youtu.be#t=66.940294

 
Реter Konow:

Soweit ich weiß, gibt es derzeit keine Möglichkeit, eine in MS Visual Studio erstellte Schnittstelle in ein MT-Plattformdiagramm zu übertragen.

Warum glauben Sie das? Nun, es gibt sie, und es gibt mehrere davon. Es ist zwar nicht klar, warum sie, die Schnittstellen, auf die Grundstücke übertragen werden sollten, aber wenn dies der Fall ist, gibt es sie wahrscheinlich nicht. Aber es ist durchaus realistisch, sie auf MT zu machen.
 
Реter Konow:

...

Das bedeutet, dass der Benutzer bei der Erstellung der grafischen Oberfläche seines Programms vollständig vom Code und Compiler isoliert ist und sich nur mit den vom Studio angebotenen visuellen Kontrollwerkzeugen befassen muss. Für die Gestaltung der Oberfläche werden die "Drag and Drop"-Technologie und die verschiedenen Optionsfenster verwendet, über die Sie die Eigenschaften der vorgefertigten Fenstervorlagen und Steuerelemente festlegen können.

...

... Dieser Motor wird ...mit der Entwickleranwendung zu verschmelzen und führen alle grafischen Arbeiten aus.

Aber wie soll sie in die App des Entwicklers integriert werden, wenn nicht über den Code? Angenommen, ein Programm muss eine Tabelle ähnlich wie Market Watch ausgeben. Dann sollten wir ihm die Anweisung geben, dass "EURUSD" in der Zelle "A1" angezeigt werden soll, der Preis "1.238273" in A2, usw. Eine Reihe von Werkzeugen ist jedoch von Terminal zu Terminal unterschiedlich, und statisch können die Felder und Tabellennamen einfach nicht gefüllt werden.

Microsoft Visual Studio ist klar - es ist ein praktisches Add-on zu reinenSoftware-Umgebung Erstellung der Anwendung. Das heißt, Visual Studio ist nicht wirklich eine visuelle Entwicklungsumgebung, und im Falle Ihres Programms ist nicht klar, wie es funktionieren wird.

 
Vasiliy Sokolov:

Aber wie soll sie in die Anwendung des Entwicklers integriert werden, wenn nicht durch Code? Angenommen, das Programm muss eine Tabelle ähnlich der von Market Watch ausgeben. Dann sollte er die Anweisung erhalten, dass "EURUSD" in die Zelle "A1", der Preis "1.238273" in A2 usw. gesetzt werden soll. Eine Reihe von Werkzeugen ist jedoch von Terminal zu Terminal unterschiedlich, und statisch können die Felder und Tabellennamen einfach nicht gefüllt werden.

In Microsoft Visual Studio ist es klar - es ist ein praktisches Add-on zu reinenSoftwareumgebung die Erstellung von Anwendungen. Das heißt, Visual Studio ist nicht wirklich eine visuelle Entwicklungsumgebung, und im Fall Ihres Programms ist nicht klar, wie es funktionieren würde.

Zurzeit wird eine Lösung für die Kombination der grafischen Engine und der Funktionalität der Benutzeranwendung entwickelt.

Ich kann Ihnen nur das allgemeine Konzept vorstellen.

Wenn der Entwickler seine eigene Anwendung schreibt, muss er die Werte der Variablen, die von seinen benutzerdefinierten Funktionen zurückgegeben werden (z. B. den Wert des aktuellen Geldkurses für "EURUSD"), nicht innerhalb seiner Anwendung, sondern außerhalb speichern.

Das bedeutet, dass sie anstelle ihrer eigenen Variablennamen den Index einer Array-Zelle des gemeinsamen Speichers (der sich außerhalb ihres Programms befindet) schreiben und den von der Funktion zurückgegebenen Wert dort speichern müssen.

Dieses globale Array nenne ich "Parameterkern". Dann wird der Benutzer die Adresse dieser Zelle dem Steuerelement im Studio zuweisen. Im Gegenzug führt die Grafik-Engine eine periodische Schleife durch die Objekte durch und prüft die Adressen der an sie gebundenen Parameter im Parameterkern. Wenn ein Wert an dieser Adresse durch eine Benutzerfunktion geändert wurde, aktualisiert die Engine ihn im Fenster. Oder umgekehrt - wenn der Wert durch ein Steuerelement geändert wurde, übernimmt die Benutzerfunktion dessen Verarbeitung.

Im Wesentlichen handelt es sich bei dieser Lösung um eine Symbiose aus zwei Programmen, die über einen gemeinsamen Speicher, den so genannten "Parameterkern", kommunizieren. Beide Programme, die GUI-GUI-Engine und das Benutzerprogramm, werden auf verschiedenen Grafiken innerhalb des Terminals platziert.

Das einzige Problem ist die Erstellung des gemeinsamen Speichers. Versuchen, es mit MQL zu lösen, möchte ich nicht auf eine DLL zurückgreifen, aber wenn es keinen Ausweg gibt, können Sie freigegebenen Speicher dort erstellen. Das habe ich bereits getan.

 
Реter Konow:

Das einzige Problem ist die Erstellung des gemeinsamen Speichers. Versuchen, es mit MQL zu lösen, möchte ich nicht auf eine DLL zurückgreifen, aber wenn es keinen Ausweg gibt, können Sie Shared Memory dort erstellen. Ich habe dies bereits getan.

Sobald Sie auf eine DLL zurückgreifen, bleibt von Ihrem Konzept nichts mehr übrig. Einfach nichts - Pschick. Mit einer DLL, aber auch ohne DLL, kann Ihr Problem gelöst werden, ohne dass Sie überhaupt etwas entwickeln müssen. Und das ist das Grundkonzept der modernen Programmierung - nichts selbst entwickeln, wenn es bereits erstellt ist.
 
Yuriy Asaulenko:
Warum glauben Sie das? Es gibt sie, und sogar ein paar. Aber es ist nicht klar, warum sie, die Schnittstellen, auf Karten übertragen werden sollten - wenn ja, gibt es sie wahrscheinlich nicht. Aber es ist durchaus realistisch, sie über MT zu legen.
Bitte werden Sie konkreter.
 
Yuriy Asaulenko:
Sobald Sie auf die DLL zurückgreifen, ist von Ihrem Konzept nichts mehr übrig. Einfach nichts - Pschich. Mit einer DLL, aber auch ohne DLL, kann Ihr Problem gelöst werden, ohne dass Sie überhaupt etwas entwickeln müssen.
Bitte erläutern Sie Ihre Meinung.
 
Реter Konow:
Seien Sie bitte konkret.

Was soll man konkret tun? Fenster in VS auf MT erstellen? Das ist ein Vögelchen - ganz oben auf allen Fenstern.

Austausch von Daten mit VS? Mindestens 4 Möglichkeiten.

 
Реter Konow:
Bitte erläutern Sie Ihre Meinung.
Siehe vorheriger Beitrag, oder seien Sie bitte konkreter. Fenster jeder Art, ohne jede Anstrengung.
 
Реter Konow:

Das einzige Problem ist die Erstellung des gemeinsamen Speichers. Versuchen, es mit MQL zu lösen, möchte ich nicht auf eine DLL zurückgreifen, aber wenn es keinen Ausweg gibt, können Sie Shared Memory dort erstellen. Das habe ich bereits getan.

Natürlich kann man die Kommunikation über eine DLL organisieren, aber niemand wird sie brauchen, da alle Arten von DLLs auf dem Markt verboten sind. Die einzige Möglichkeit, den globalen Datenaustausch zwischen den beiden Programmen im Sinne der Standard-MQL zu organisieren, ist der Austausch über globale Variablen. Übrigens, hier ist eine sehr coole Bibliothek für den Austausch von Daten über globale Variablen:https://www.mql5.com/ru/code/12786.

Im Allgemeinen ist es nicht ganz klar, für wen Sie Ihr Studio einrichten. Wenn Ihre Lösung für Entwickler keine API hat. Niemand möchte eine separate Anwendung ziehen, mit der das Programm Daten austauscht, insbesondere nicht bei Programmen, die auf dem Markt platziert sind.

Auch die Lösung mit der Benutzerlizenz ist imho eine sehr unglückliche Option. Hier ist ein Programmierer hat ein Programm auf der Grundlage Ihres Studios entwickelt, für den ersten Monat der Arbeit bezahlt, und dann im zweiten Monat, sein Programm wird nicht funktionieren, weil die grafische Kern Ihres Studios hat eine weitere Gebühr erforderlich. Blödsinn. Kein Bauherr würde sein Projekt auf ein Paket stützen, für das ständig zusätzliche Gebühren verlangt werden. Aber selbst wenn wir uns vorstellen, dass die Lizenz pauschal erworben wird und das Studio selbst Teil der Anwendung ist, ist wiederum nicht klar, wie es auf dem Markt funktionieren wird (lizenziertes Programm mit einer anderen Lizenz darin).

Beantworten Sie dennoch die Hauptfrage: Für welches Zielpublikum wird Ihr Projekt erstellt? Warum sollte der Durchschnittsnutzer Ihr Studio brauchen? Möchten Sie Microsoft Word in MetaTrader 5 erstellen? Natürlich ist das cool, aber WARUM? Die Menschen zahlen für fertige Lösungen. Für Programme und Algorithmen, die eine bestimmte Aufgabe erfüllen. Sie brauchen keine Formulare zu erstellen. Sie brauchen Programme. Und die Programmierer, die genau diese Programme schreiben, können Ihr Studio nicht benutzen, weil die Arbeit auf eine sehr seltsame Weise organisiert ist.

Verstehen Sie, dass im Moment der Schwerpunkt auf dem Markt liegen muss. Wenn Sie ein Infrastrukturprojekt erstellen wollen, müssen Sie zunächst die Frage beantworten: "Warum werden Programmierer, die auf dem Markt tätig sind oder freiberuflich arbeiten, mein Studio nutzen? Was werden sie davon haben?"