Diskussion zum Artikel "Erstellen Ihrer eigenen grafischen Panels in MQL5"

 

Neuer Artikel Erstellen Ihrer eigenen grafischen Panels in MQL5 :

Die Benutzerfreundlichkeit eines MQL5-Programms basiert gleichermaßen auf seinem Funktionsreichtum und einer ausgefeilten grafischen Benutzeroberfläche. Das Äußere ist manchmal wichtiger als ein schneller und stabiler Betrieb. Hier sehen Sie Schritt für Schritt, wie Sie Ihre eigenen Anzeigefelder auf Basis der Klassen aus der Standardbibliothek erstellen können.


Autor: MetaQuotes Software Corp.

 

Im Moment ist die Bibliothek für ein Feld im Diagramm angepasst.

Wenn Sie versuchen, 2 Panels hinzuzufügen, werden die Ereignisse falsch abgefangen - die Elemente haben die gleiche Id, und die übergeordnete Id wird nicht überprüft.

Um das zu testen, habe ich die Demo Controls.mq5 genommen und das Panel dupliziert - alle Ereignisse werden für beide Panels dupliziert, obwohl sie das nicht sollten.

 
Können wir im Punkt "Füllen der Anzeigetafel" etwas wie
ObjCAppDialog.Create(chart,name,subwin,x1,y1,x2,y2))
anstelle von
CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
verwenden?
 
Rorschach:
Im Punkt "Füllen des Anzeigefeldes" kann stattdessen etwas wie ?

Guten Tag, vielleicht können Sie mir sagen, was zu tun ist.

Ihr Beispiel ekspert Steuerelemente.

Beim Wechsel zu einem anderen Zeitraum wird der Experte entladen, versucht, ExtDialog.Destroy(Grund); in OnDeinit() zu entfernen.

Können Sie mir sagen, was ich tun muss, damit das Dialogfenster weiterhin funktioniert, wenn ich zu anderen Zeiträumen wechsle?

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
vdv2001:

Guten Tag, vielleicht können Sie mir sagen, was zu tun ist.

Ihr Beispiel ist ein Expert Advisor Controls.

Beim Wechsel zu einem anderen Zeitraum wird der Expert Advisor entladen, ich habe versucht, ExtDialog.Destroy(reason); in OnDeinit() zu entfernen.

Können Sie mir sagen, was ich tun muss, damit das Dialogfenster beim Wechsel zu anderen Perioden weiterhin funktioniert?

Vielen Dank für Ihren Hinweis. Der Fehler ist behoben. Update im nächsten Build.
 

IMHO denke ich, dass es einfacher ist, Bibliotheken von Hand zu erstellen, um zu wissen, wo und wie man sie benutzt oder um sie zu reparieren, wenn etwas falsch ist.

Beispiel für das Schreiben eines Panels ohne Verwendung von Standardklassen: VirtualTradePad PositionsStyle

 

Man kann sich fragen, warum die Verwendung des MQL5-Assistenten zum Erstellen einer Klasse einen Code erzeugt, der sich nicht kompilieren lässt:


Wie im Artikel erwähnt, müssen Sie diese Codezeile manuell hinzufügen, was für einen Assistenten, der für Nicht-Codierer gedacht ist, ein wenig seltsam ist.

#include <Controls\Dialog.mqh>

Außerdem :

This article will demonstrate how easy it is to create your own display panels in a separate chart subwindow using the Standard Library classes.

Ich glaube, das ist ein Scherz, nicht ?

MQL5 Wizard: Creating Expert Advisors without Programming
  • 2011.01.11
  • MetaQuotes Software Corp.
  • www.mql5.com
Do you want to try out a trading strategy while wasting no time for programming? In MQL5 Wizard you can simply select the type of trading signals, add modules of trailing positions and money management - and your work is done! Create your own implementations of modules or order them via the Jobs service - and combine your new modules with existing ones.
 

"Das ist ein bisschen seltsam für einen Assistenten, der für Nicht-Coder gedacht ist."

Ich glaube nicht, dass dieser Assistent für Nicht-Programmierer gedacht ist.

Er könnte Ihnen (dem Programmieranfänger) einen Fuß in die notwendigen ersten Schritte bringen, um etwas zu erstellen.

Das MQL5-Framework bietet eine Menge Potenzial, und einiges davon könnte mit dem Assistenten entdeckt werden

aber ich denke, um etwas Komplexeres wie dieses Beispiel zu erstellen, braucht man immer die Grundlagen der Programmierung.

Aber ich stimme zu, dass es notwendig sein sollte, die offensichtlichen Dinge einzubeziehen, wenn man von einer Basisklasse ableitet...

 
ugo58:

" Das ist ein bisschen seltsam für einen Assistenten, der für Nicht-Coder gedacht ist."

Ich glaube nicht, dass dieser Assistent für Nicht-Programmierer gedacht ist.

Er könnte Ihnen (dem Programmieranfänger) einen Fuß in die notwendigen ersten Schritte bringen, um etwas zu erstellen.

Das MQL5-Framework bietet eine Menge Potenzial, und einiges davon könnte mit dem Assistenten entdeckt werden

aber ich denke, um etwas Komplexeres wie dieses Beispiel zu erstellen, braucht man immer die Grundlagen der Programmierung.

Aber ich stimme zu, dass es notwendig sein sollte, die offensichtlichen Dinge einzubeziehen, wenn man von einer Basisklasse ableitet...

Sie haben wahrscheinlich Recht, aber ich dachte, der MQL5-Assistent wurde in erster Linie für Nicht-Programmierer entwickelt. Wie auch immer, das Problem ist wie ein Fehler hier, da Sie Code manuell hinzufügen müssen, um den von Wizard erstellten Code zu kompilieren.

MQL5 Wizard: Creating Expert Advisors without Programming
  • 2011.01.11
  • MetaQuotes Software Corp.
  • www.mql5.com
Do you want to try out a trading strategy while wasting no time for programming? In MQL5 Wizard you can simply select the type of trading signals, add modules of trailing positions and money management - and your work is done! Create your own implementations of modules or order them via the Jobs service - and combine your new modules with existing ones.
 

Mir ist aufgefallen, dass in der Bibliothek der Benutzer-GUIs (Panels) ein meiner Meinung nach nicht ganz gelungenes Ereignismodell kopiert wird:

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
    ...
}

Erstens haben nicht alle Ereignisse einen Satz von Variablen, die den Typen int, long, double und string entsprechen. Irgendwo mag es mehr Variablen geben, die das Ereignis beschreiben, irgendwo weniger, irgendwo stimmen sie nicht mit den vorgeschlagenen Grundtypen überein. In der Tat gibt es ständige Konvertierungen wie int -> bool, string -> int, double -> int usw. Und wenn man aus der Sicht der prozeduralen Programmierung praktisch nichts tun kann (weil man nicht für jeden hypothetischen Fall 1 000 000 überladene Funktionen erstellen wird), dann kann man im Rahmen der OOP alles viel einfacher und eleganter machen.

Das Hauptproblem von OnEvent ist jedoch, dass dieser Event-Handler dazu gedacht ist, Ereignisse zu behandeln, die vom Chart empfangen werden, während das Ereignis alles Mögliche sein kann, wie das Öffnen einer neuen Position oder das Ändern von Kursen. Im Allgemeinen sieht OnEvent(...) irgendwie nicht wie ein universeller Event-Handler aus, IMHO. Vielleicht haben die Entwickler es irgendwie geschafft, ihre eigenen Ereignisse auf der Basis des bestehenden CWnd zu behandeln, aber für mich ist die Verwendung der Standardbibliothek der Panels immer noch problematisch.

Как использовать торговые классы Стандартной библиотеки при написании советника
Как использовать торговые классы Стандартной библиотеки при написании советника
  • 2010.11.10
  • Samuel
  • www.mql5.com
В статье рассказывается о том, как использовать основной функционал торговых классов Стандартной библиотеки при написании советников, в которых применяется открытие, закрытие и модификация позиции, проверка свободной маржи перед размещением торговых ордеров, размещение и удаление отложенных ордеров. Показано, как использовать торговые классы для получения свойств ордеров и сделок.
 

Danke, ich habe es studiert, es ist nützlich! Ein paar Augenblicke: gibt es irgendwelche Pläne, eine Art Konstruktor zu erstellen, so dass Panels im Formular-Konstruktor wie in VS zusammengesetzt werden könnten? weil es nicht ganz bequem ist, alles von Hand zu zählen, vielleicht ist es ein Zeichen von Professionalität, aber es dauert lange)).

mit Makros haben sie es offensichtlich übertrieben...