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

 
Igor Makanu:

in dem Artikel gibt es eine ganz andere Art der MT5 Interaktion mit der "Außenwelt", müssen Sie Signaturen von C++-Funktionen in MT5-Code zu beschreiben und rufen Sie als eine normale DLL, hier ist ein funktionierendes Beispiel, ich habe es vor einem Monat getestet.

https://www.mql5.com/de/articles/18

HI: tensorflow c# ist perfekt googlebar, hier sind fertige Lösungen für C# https://nugetmusthaves.com/Tag/tensorflow 

Guter Artikel, ich werde ihn zur Kenntnis nehmen, danke!

Ich weiß bereits, dass tensorflow c# perfekt googlebar ist, ich möchte nur keine Zeit damit verbringen, C# zu lernen, also integriere ich tensorflow mit C++.

Das war nicht meine Frage.

Was ist der Unterschied zwischen der im Artikel beschriebenen Art der Interaktion und der üblichen? Im Text steht, dass es ausreicht, wenn der dllka auf der .Net Plattform geschrieben ist. Aber Sie müssen nicht C# verwenden, um auf dieser Plattform zu schreiben. Aber wenn ich C++/CLR (und Visual Studio schlägt vor, dass ich eine Anwendung mit .Net-Klassen erhalten ), MQL5 noch erfordert, um Funktionen aus der resultierenden dllka wie gewohnt zu deklarieren , und sieht nicht Klassen überhaupt.

 

Ist es möglich, einen String von Visual Studio an MT5 zu senden? Wie kann ich dies tun?


Vielen Dank für Ihre Hilfe

 
AikAcrobatt:

Was ist der Unterschied zwischen der in dem Artikel beschriebenen Art der Interaktion und der üblichen Art? Im Text heißt es, dass es ausreicht, wenn der dllka auf der .Net-Plattform geschrieben wird. Aber Sie müssen nicht C# verwenden, um auf dieser Plattform zu schreiben.

Wenn ich mich nicht irre, ist die Methode, die in dem Artikel verwendet wird C#-Injektion genannt - googeln Sie es, ich bin keine Hilfe hier, wie die Interaktion zwischen C# und MQL5 stattfindet, als eine Option "Spin" das Beispiel https://www.mql5.com/ru/forum/303283/page3#comment_10607873.

Обсуждение статьи "Создание графических интерфейсов для экспертов и индикаторов на базе .Net Framework и C#"
Обсуждение статьи "Создание графических интерфейсов для экспертов и индикаторов на базе .Net Framework и C#"
  • 2019.02.12
  • www.mql5.com
Опубликована статья Создание графических интерфейсов для экспертов и индикаторов на базе .Net Framework и C#: Автор: Vasiliy Sokolov...
 
fxsaber:

Ist es realistisch, ein Beispiel für die Verwendung z. B. dieser Bibliothek zu zeigen?

Die Bibliothek ist interessant. Ich denke, es ist durchaus realistisch, sie in den Motor zu integrieren.

 
AikAcrobatt:

Hallo, das ist ein toller Artikel!

Es gibt eine Reihe von Fragen, die sich aus den obigen Ausführungen ergeben:

1) Aus dem Text des Artikels habe ich den Eindruck gewonnen, dass nicht nur grafische Schnittstellen, sondern auch die Implementierung fast aller APIs, die nicht in MQL5 "passen", auf dieselbe Weise organisiert werden können.

Ja, das ist absolut richtig. Der Artikel beschreibt im Wesentlichen ein modifiziertes MVC-Entwurfsmuster. Muster sind universell und hängen nicht von Sprachwerkzeugen und Aufgaben ab, die Hauptsache ist, dass das Konzept des "Model-Representation-Controller" gut zur Aufgabe passt.

AikAcrobatt:

Meine Frage ist, ist es möglich, eine C++ .Net Bibliothek zu schreiben (ich verstehe C++/CLR), so dass MQL5 in seinem .Net Code wie in Ihrer GuiController Engine implementiert werden kann?

2) Theoretisch können Sie. Net dll ist eine gepackte CIL, in die Hochsprachen wie C#, VB Net, C++ Net übersetzt werden. D.h. MQL sollte net dll lesen, egal in welcher Sprache es geschrieben wurde. Es sollte aber nur geprüft werden, wie es in der Praxis sein wird, da die Entwickler offensichtlich beabsichtigten, C# zu verwenden.

AikAcrobatt:

Das praktische Beispiel, an dem ich interessiert bin, ist dieses. Heutzutage gibt es Möglichkeiten, Opsensor-Bibliotheken zum maschinellen Lernen in VS2017 zu integrieren, und zum Beispiel bietet TensorFlow eine API in C++ mit Unterstützung für GPU-Computing. Ihr Artikel bietet eine großartige Möglichkeit, die C++-Implementierung von TensorFloW (oder einer anderen Bibliothek für maschinelles Lernen) direkt in MQL5 zu integrieren, was mir sehr praktisch erscheint. Das Problem ist, dass ich aus irgendeinem Grund nicht einmal eine Test-C++ dll in MQL5 importieren kann, indem ich die hier beschriebene Methode verwende.

Meinen Sie die Net C++ dll? Wenn ja, sollten Sie das überprüfen und nachsehen. Es ist schwer zu verstehen, wie das in der Realität funktionieren soll.

Aber im Allgemeinen haben Sie sehr recht: Die schnelle Integration in bestehenden Code ist definitiv die Zukunft. Und Sie werden nicht genug Zeit haben, um alles selbst zu schreiben. Und hier können Sie herunterladen, was Sie brauchen, und loslegen.

 
AikAcrobatt:

...

Was ist der Unterschied zwischen der in dem Artikel beschriebenen Art der Interaktion und der üblichen Art? Im Text heißt es, dass es ausreicht, eine Dllka auf der .Net-Plattform zu schreiben. Aber Sie müssen nicht C# verwenden, um auf dieser Plattform zu schreiben. Aber wenn ich C++/CLR verwende (und Visual Studio vorschlägt, dass ich eine Anwendung mit .Net-Klassen erhalte ), verlangt MQL5 immer noch die Deklaration von Funktionen aus der resultierenden dllka wie üblich, aber es sieht überhaupt keine Klassen.

Dies ist sehr seltsam, denn alles funktioniert ganz anders mit C#. MQL sieht Net-Klassen und ihre Methoden mit Signaturen perfekt. Sogar intellisense funktioniert in MetaEditor.

Leider bin ich in C++ fast unerfahren. Ich würde Ihnen gerne helfen, aber ich fürchte, ich werde es nicht können.

 
Norton Daniel Barth:

Ist es möglich, einen String von Visual Studio an MT5 zu senden? Wie kann ich dies tun?

Vielen Dank für Ihre Hilfe

Ja, natürlich ist das möglich. Sie können den String aus einer Methode zurückgeben (Zeile 1). Sie können die Zeichenkette auch von einer Referenz zurückgeben (Zeile 3):

string line = SharpClass::GetSting();
string line_l;
SharpClass::GetStringByLink(line_l);

Dabei ist SharpClass die statische C#-Klasse in Ihrer Assembly.

 
Vasiliy Sokolov:

Das ist sehr seltsam, denn mit C# funktioniert alles ganz anders. MQL sieht Net-Klassen und ihre Methoden mit Signaturen perfekt. Sogar Intellisense in MetaEditor funktioniert.

Leider bin ich in C++ fast unerfahren. Ich würde Ihnen gerne helfen, aber ich fürchte, ich kann es nicht.

Bis jetzt habe ich folgendes:

Die einfachste dllka in C++ mit .NET:

using namespace System;

namespace TesterMQL54 {
        public ref class Class1
        {
        public: static int Func1(int arg) { return (arg - 1); };
        };
}

Diese Bibliothek interagiert mit MQL5 auf die gleiche Weise wie eine ähnliche Bibliothek in C# (ich habe es überprüft) und ähnlich wie die in Ihrem Artikel beschriebene.
Wenn wir das Programm in MQL5 einfügen:

#import "TesterMQL5_4.dll"
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
void OnStart()
  {
   Print("Beg");
   Print(Class1::Func1(7));
   Print("End");
  };
//+------------------------------------------------------------------+


Alles wird kompiliert, der Compiler sieht die Klasse Class1 und die Funktion Func1. Aber im Gegensatz zum Sharpe-Verhalten sagt das Terminal, dass es die DLL nicht laden kann:

Cannot load 'C:\Users\...\MQL5\Libraries\TesterMQL5_4.dll' [0]

EX5-Laden fehlgeschlagen.



 
Vasiliy Sokolov :

Ja, natürlich. Die Zeichenfolge kann von der Methode zurückgegeben werden (Zeile 1). Sie können auch die String-Referenz zurückgeben (Zeile 3):

Wobei SharpClass eine statische C # Klasse in Ihrer Assembly ist.

Vielen Dank für Ihre Hilfe, aber ich muss mehr über C # lernen, kann ich wirklich machen diese einfache Sache funktionieren oder den Code enthalten


Nochmals vielen Dank für Ihre Zeit

 
AikAcrobatt:

Bislang habe ich Folgendes erhalten:

Eine einfache DLL in C++ mit .NET:

...

Bitte fügen Sie den Code korrekt ein: