Diskussion zum Artikel "Die Entwicklung von grafischen Oberflächen auf Basis von .Net Framework und C# (Teil 2): Weitere grafische Elemente"
Alles ist gut, der Artikel, GUI und endlose Möglichkeiten von C#, aber warum keine Tabellen, Vasily? Gibt es irgendwelche Schwierigkeiten mit ihnen?
Der Umfang des Materials ist zu groß, und Tabellen in C# sind ein sehr kompliziertes Element. Es ist wie ein Dreisprung. Sie müssen durch die Umsetzung der grundlegenden Elemente zu beschleunigen und dann versuchen, eine komplexe Tabelle.
Die Menge des Materials ist zu groß, und Tabellen in C# sind ein sehr komplexes Element. Es ist wie ein Dreisprung. Sie müssen beschleunigen, indem Sie die grundlegenden Elemente implementieren, und sich dann an eine komplexe Tabelle heranwagen.
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Не удается найти указанный файл. (Exception from HRESULT: 0x80070002)
at System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)
at System.Reflection.Assembly.LoadFile(String path)
at MtGuiController.GuiController.GetGuiController(String assembly_path, String form_name)
at MtGuiController.GuiController.ShowForm(String assembly_path, String form_name)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Wrapper.Wrapper.Call(MethodInfo method, Int64 owner, Int64 parameters, Int64 result)
.Net runtime error
Fehler beim Starten des Expert Advisors aus dem Artikel.
Fehler beim Ausführen des Expert Advisors aus dem Artikel.
Die Pfade zu den Programmdateien sind absolut, Sie müssen sie also in die tatsächlichen Pfade ändern. Es ist nicht möglich, universelle Kataloge wie in MT zu erstellen.
Die Pfade zu den Programmdateien sind absolut, Sie müssen sie also in tatsächliche Pfade ändern. Es ist nicht möglich, universelle Kataloge wie in MT zu erstellen.
string assembly = "c:\\Users\\Bazil\\source\\repos\\DemoForm\\DemoForm\\bin\\Debug\\DemoForm.exe";
Ich habe diese Datei nirgends gefunden. Es ist noch nicht möglich, sie aus den bereitgestellten C#-Quellen zu kompilieren.
Ich habe diese Datei nirgendwo gefunden. Ich kann sie auch nicht aus den mitgelieferten C#-Quellen kompilieren.
Seltsam, ich glaube, ich habe vergessen, sie an das Archiv anzuhängen. Ich werde es in ein paar Stunden posten.
Beigefügt im Archiv
Danke, es hat funktioniert.
// Ich habe DemoForm.exe in Libraries abgelegt string assembly = TerminalInfoString(TERMINAL_PATH) + "\\MQL5\\Libraries\\DemoForm.exe";
Ich habe einen sehr schwerwiegenden Fehler bei der Arbeit mit C#-Windows gefunden. Wenn man das C#-Fenster kontinuierlich verschiebt, verschwindet Terminal nach ein paar Sekunden vom Bildschirm, und die CPU-Kernlast von terminal64.exe überschreitet 100%. Ich habe 8 Kerne, so dass die volle Kernlast im TaskManager bei CPU 12-13% beträgt. Wenn sich das C#-Fenster bewegt, sind es 19%.
Ich habe eine in der CPU eingebaute Grafikkarte, keine Videokarte. Ich dachte, dass das Problem in der Anzeige liegt. Deshalb habe ich einen solchen Test-Ratgeber ausgeführt.
int handle = INVALID_HANDLE; void OnInit() { if (EventSetTimer(1)) handle = FileOpen(__FILE__, FILE_WRITE | FILE_TXT); } void OnDeinit( const int ) { if (handle != INVALID_HANDLE) FileClose(handle); } void OnTimer() { if (handle != INVALID_HANDLE) FileWriteString(handle, (string)TimeCurrent() + "\n"); }
Er schreibt jede Sekunde die Zeit von der Market Watch. Das hat er aufgezeichnet, als er das C#-Fenster verschoben hat.
2019.06.11 16:22:09 2019.06.11 16:22:11 2019.06.11 16:22:11 2019.06.11 16:22:19 2019.06.11 16:22:23 2019.06.11 16:22:24 2019.06.11 16:22:26 2019.06.11 16:22:28 2019.06.11 16:22:31 2019.06.11 16:22:33 2019.06.11 16:22:34 2019.06.11 16:22:36 2019.06.11 16:22:37 2019.06.11 16:22:45 2019.06.11 16:22:45 2019.06.11 16:22:48 2019.06.11 16:22:51 2019.06.11 16:23:07 2019.06.11 16:23:08 2019.06.11 16:23:10
Sie können deutlich sehen, dass OnTimer mehrere Sekunden lang nicht ausgeführt wurde. D.h. das Verschieben des C#-Fensters führt dazu, dass die Ausführung von Expert Advisors im Terminal stoppt.
Dieses Problem betrifft nicht nur das C#-Fenster aus diesem Artikel.
Das manuelle Entfernen von GuiControllerElementsDemo über das Terminal-Menü führt zu einigen Sekunden des Einfrierens.

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Die Entwicklung von grafischen Oberflächen auf Basis von .Net Framework und C# (Teil 2): Weitere grafische Elemente :
Der Artikel ist eine Fortsetzung der vorherigen Veröffentlichung "Die Entwicklung von grafischen Oberflächen für Expert Advisors und Indikatoren auf Basis von .Net Framework und C#". Es werden neue grafische Elemente zur Erstellung von grafischen Oberflächen eingeführt.
Ab der zweiten Version unterstützt die Steuerung Nachrichtenboxen. Dies ist ein Element für eine standardmäßige Nutzerinformation. Es bietet dem Nutzer auch mehrere Optionen und erhält eine Antwort in Form einer ausgewählten Option.
Um die Demonstration von Meldungsfenstern zu starten, wählen Sie beim Start des EA die Option 'Buttons and MessageBox' im Parameter Windows Forms Element Type. Nach dem Start des EA erscheint ein Formular, in dem Sie aufgefordert werden, eine der Optionen auszuwählen:
Abb. 3. Beispiel für ein Formular zum Anrufen von Nachrichtenboxen
Dieses Formular, sowie alle nachfolgenden, ist eine Demonstration, daher ist es nicht mit einer Handelslogik ausgestattet. Nach dem Drücken einer der Tasten sendet der EA jedoch eine Warnmeldung, die eine Bestätigung der ausgewählten Aktionen anfordert. So wird beispielsweise das folgende Nachrichtenfenster angezeigt, wenn Sie auf SELL klicken:
Abb. 4. Trading EA fordert Bestätigung zur Eröffnung einer neuen Verkaufsposition an.
Autor: Vasiliy Sokolov