Diskussion zum Artikel "MQL als Darstellungsmittel für graphische Schnittstellen von MQL-Programmen. Teil 1"

 

Neuer Artikel MQL als Darstellungsmittel für graphische Schnittstellen von MQL-Programmen. Teil 1 :

Dieser Artikel schlägt ein neues Konzept zur Beschreibung der Fenster-Schnittstelle von MQL-Programmen vor, wobei die Strukturen von MQL verwendet werden. Spezielle Klassen transformieren das sichtbare MQL-Markup in die GUI-Elemente und erlauben es, diese zu verwalten, ihre Eigenschaften einzustellen und die Ereignisse in einer einheitlichen Weise zu verarbeiten. Es enthält auch einige Beispiele für die Verwendung des Markups für die Dialoge und Elemente einer Standardbibliothek.

Warum wird das Layout vom Code getrennt und in einer speziellen Sprache beschrieben? Hier sind die grundlegenden Vorteile eines solchen Ansatzes.

  • Visuelle Darstellung von hierarchischen Beziehungen zwischen Elementen und Containern;
  • Logische Gruppierung;
  • Einheitliche Definition von Layout und Ausrichtung;
  • Einfaches Schreiben der Eigenschaften und ihrer Werte;
  • Deklarationen ermöglichen die Implementierung der automatischen Generierung des Codes unter Beibehaltung des Lebenszyklus und der Kontrolle der Elemente, wie z.B. Erstellen, Einrichten, Interagieren und Löschen;
  • Verallgemeinerte Abstraktionsebene, d.h. allgemeine Eigenschaften, Zustände und Initialisierungs-/Verarbeitungsphasen, was die Entwicklung der GUI unabhängig von der Codierung ermöglicht;
  • Wiederholte (mehrfache) Verwendung von Layouts, d.h. dasselbe Fragment kann mehrfach in verschiedenen Dialogen enthalten sein;
  • Dynamische Inhaltsimplementierung/-generierung on-the-fly, ähnlich wie beim Wechsel zwischen Registerkarten, wobei für jede Registerkarte ein spezifischer Satz von Elementen verwendet wird;
  • Dynamische Erzeugung von "Steuerelementen" innerhalb des Layouts, wobei sie in einem einzigen Array von Zeigern auf die Basisklasse gespeichert werden, wie z.B. CWnd im Falle der Standard-MQL-Bibliothek; und
  • Verwendung eines speziellen Grafikeditors für das interaktive Oberflächendesign — in diesem Fall fungiert das spezielle Format zur Beschreibung der Layouts als Bindeglied zwischen der Außendarstellung des Programms und seinem ausführenden Teil in der Programmiersprache.

Für die MQL-Umgebung wurden nur einige wenige Versuche unternommen, einige dieser Probleme zu lösen. Insbesondere wird ein visueller Dialogdesigner in dem Artikel Wie man Objektklassen entwirft und baut vorgestellt. Er arbeitet auf der Grundlage der Bibliothek MasterWindows. Die Möglichkeiten zur Anordnung von Layouts und die Liste der unterstützten Elementtypen sind darin jedoch erheblich eingeschränkt.

Ein fortschrittlicheres Layoutsystem, wenn auch ohne visuellen Designer, wird in den Artikeln Verwendung von Layouts und Containern für GUI Controls: Die CBox Klasse und Die CGrid-Klasse . Sie unterstützt alle Standard-Steuerelemente und andere, die von CWndObj oder CWndContainer geerbt wurden, überlässt aber dennoch dem Benutzer die Routinekodierung zum Erstellen und Anordnen von Komponenten.

Konzeptionell ist dieser Ansatz mit Containern sehr fortschrittlich (wenn es ausreicht, seine Popularität in praktisch allen Markup-Sprachen zu erwähnen). Daher werden wir ihn beherzigen. In einem meiner früheren Artikel (Anwendung von OLAP im Handel (Teil 2): Die Visualisierung der Ergebnisse der interaktiven, mehrdimensionalen Datenanalyse) schlug ich eine Modifikation der Container CBox und CGrid sowie einige Steuerelemente zur Unterstützung der "Gummi"-Eigenschaften vor. Im Folgenden werden wir diese Entwicklungen nutzen und verbessern, um das Problem der automatischen Anordnung von Elementen am Beispiel der Objekte einer Standardbibliothek zu lösen.

Autor: Stanislav Korotky

 
Sehr, sehr klug geschrieben. Gleichzeitig wird aber auch sofort klar, dass der Autor noch ganz am Anfang seiner Reise steht und die Grundlagen der Technik noch nicht kennt.

Zum Beispiel die Tatsache, dass Verschachtelung und Hierarchie von Elementen eigentlich nicht vorhanden sind. Ein Fensterelement ist keine Hierarchie. Und Basis-Text-Symbol? - Haben sie eine Menge gemeinsamer Eigenschaften? Es gibt sie, aber es ist ineffizient, ein "hässliches" Bündel verschiedener Klassen mit Vererbung weniger übereinstimmender Eigenschaften zu erstellen.

Die Vererbung ist in diesem Konzept fast irrelevant und eher ein "Overkill", weil es keine Tiefe und Vielfalt der Objekte gibt. Sie sind eher parallel als verschachtelt.

Was die Elemente angeht: Ja, die Vielfalt ist groß, aber auch hier gibt es keinen Grund für Vererbung. Sie sind alle unterschiedlich und es ist unnötig, sie zu einem "Klumpen" zu formen.

Und ich würde nicht dazu raten, sich zu sehr auf Kleinigkeiten wie Variablennamen zu versteifen, denn Sie werden nicht genug Zeit haben, um ein solches Projekt allein zu bewältigen. Ein zu professioneller Ansatz wird sich über Jahre hinziehen. Sie müssen amateurhaft sein, und dann können Sie vielleicht den vis.editor erreichen.

 

Ich habe den Artikel noch einmal sorgfältig gelesen und konnte das Konzept der Auszeichnungssprache nicht finden. Es gibt einige Gedanken über Implementierungen in anderen Sprachen und Möglichkeiten, einige Bibliotheken auszuleihen, aber der Autor hat das Konzept noch nicht erstellt. Ohne dieses Konzept macht es keinen Sinn, etwas auszuleihen oder zu verändern.

Das Konzept sollte in einfachen und klaren Worten beschrieben werden, ohne Codes, und das Wesentliche der Technologie erklären - was und wie es funktionieren soll. Aber in dem Artikel gibt es einige Codes, Beispiele, etc.... Worum handelt es sich dabei?

Das Kapitel:"Entwurf einer Auszeichnungssprache" enthält nicht das Konzept einer Auszeichnungssprache. Autor, achten Sie darauf, dass Sie nichts über die Technologie von Auszeichnungssprachen geschrieben haben, sondern direkt in die Details gehen, wie, wo und was ausgeliehen werden kann. Dann sprechen Sie über eine Hierarchie von Controllern (die Sie nicht wirklich beschreiben) und gehen auf nicht verwandte Einzelheiten ein.

Es ist notwendig, mit dem Konzept der zu schaffenden Technologie zu beginnen, und ein solches Konzept gibt es noch nicht.

 

Guter Artikel und gute Entscheidungen, schön zu lesen.

Um es 5+, ein wenig war nicht genug - eine kurze Überprüfung der "was ist schlecht / gut in den Rest der Welt" :-) Der Autor hat es eindeutig drauf und schreibt nicht aus dem Nichts ...

Ich erwarte von den folgenden Teilen: so etwas wie Geometry & Style Managers (das ist, um loszuwerden, die Berechnung von Koordinaten und Verteilung der Farben), die Arbeit der GUI in Bezug auf die Interaktion mit der grundlegenden Logik.

 

eine weitere Dichtung.

Wie viele Stücke werden es sein, 38 oder 55?

 
Dmitry Fedoseev:

Und wie viele Teile werden es sein, 38 oder 55?

nicht jeder kann "Krieg und Frieden" in Artikeln auf dem MQL-Forum schreiben.

Der Autor von mehr als einem Zyklus von 4 Artikeln ist nicht vor )))) gesehen worden.


Das Material des Artikels scheint gut gelesen werden, aber es gibt einige Beschwerden, irgendwo weiß ich nicht , was es auf der Grundlage - XAML wird als Grundlage genommen? - leider habe ich nicht studiert und nicht verwenden, sowie außer WinForms und verwenden Sie nicht andere Funktionen von C #.

Im Großen und Ganzen interessant, mal sehen, wie es weitergeht, der einzige Wunsch ist ein wenig mehr Bilder, meiner Meinung nach sieht das Material sehr trocken aus, wenn man es nur liest.

 

Die Professionalität des Autors gibt Anlass zur Hoffnung, sofern er das Konzept und die Umsetzung von Anfang bis Ende in den Griff bekommt. Der erste Artikel deutet die Absicht an, eine fertige Bibliothek zu nehmen, sie zu modifizieren und in eine Auszeichnungssprache zu verwandeln. Ich glaube nicht an den Sinn einer solchen Lösung. Die Bibliothek selbst ist begrenzt, und die Auszeichnungssprache wird schwach sein. Ohne eine qualitativ neue Ebene der Technologie und Controller auf der Leinwand - "Schafspelz" ist es nicht wert, und wenn der Autor nimmt die gezeichneten Elemente - müssen Sie die Grundlagen neu zu machen. All dies erfordert ein sehr tiefes Verständnis der Technologie und eine Menge Zeit. Gemessen an der Art und Weise der Autor klammert sich an die Namen der Variablen (die Tausende sein wird), Syntax, Regeln - ich fürchte, wird nicht erreichen Fertigstellung....

ABER! Dies ist nur der erste Artikel. Schauen wir mal...

 
Igor Makanu:

nicht jeder kann im MQL-Forum in Artikeln "Krieg und Frieden" schreiben

der Autor von mehr als einem Zyklus von 4 Artikeln wurde noch nicht gesehen ))))


Das Material des Artikels scheint gut zu lesen, aber es gibt einige Unbehagen, irgendwo weiß ich nicht , was es auf der Grundlage - XAML wird als Grundlage genommen? - leider habe ich nicht studiert und nicht verwenden, sowie außer WinForms und verwenden Sie nicht andere Funktionen von C #

Im Großen und Ganzen interessant, mal sehen, wie es weitergeht, der einzige Wunsch wäre ein wenig mehr Bilder, meiner Meinung nach wirkt das Material sehr trocken, wenn man es nur liest.

Ich habe versucht, XAML zu studieren, aber nur von Anfang an, und ich habe den Witz des Humors nicht verstanden - warum soll man eine weitere Sprache studieren, und auch noch extrem eng spezialisiert, was außerdem die Möglichkeiten nicht erweitert, sondern einschränkt. Wie auch immer, eines Tages werden Sie etwas "optimieren" wollen, wenn das Programm funktioniert, oder die Schnittstelle flexibler gestalten, also werden Sie studieren müssen, wie alles auf direktem Wege ohne Pads gemacht wird. Der Nutzen der Auszeichnungssprache ist unbedeutend, und wenn man bedenkt, dass man sie erst noch lernen muss, ist das sehr zweifelhaft. Oder ich habe die Ideologie von XAML nicht verstanden.

 
Dmitry Fedoseev:

Und ich habe versucht, XAML zu studieren, aber nur von Anfang an, und ich habe den Witz nicht verstanden - warum sollte man eine andere Sprache studieren, und noch dazu eine sehr eng spezialisierte, die zudem die Möglichkeiten nicht erweitert, sondern einschränkt. Wie auch immer, eines Tages werden Sie etwas "optimieren" wollen, wenn das Programm funktioniert, oder die Schnittstelle flexibler gestalten, also werden Sie studieren müssen, wie alles auf direktem Wege ohne Pads gemacht wird. Der Nutzen der Auszeichnungssprache ist unbedeutend, und wenn man bedenkt, dass man sie erst noch lernen muss, ist das sehr zweifelhaft. Oder ich habe die Ideologie von XAML nicht verstanden.

wir werden für den Autor des Artikels warten, kann die Richtung der Suche geben, was bequem ist XAML, vielleicht werde ich lesen, obwohl die Hauptsache, in der Tat - was das Ergebnis des Artikels sein wird, wie bequem und funktional es sein wird, in diesem Stadium bin ich mit SB für grafische Primitive zufrieden - die Quellen sind verfügbar und lesbar.

SZY: über neue Sprachen, nun, alles ist relativ, ich wollte SB benutzen, um ein paar Diagramme in .bmp zu speichern... Ich habe es nicht an einem Tag verstanden, ich habe gegoogelt, ich habe mich in 15 Minuten mit Google Charts vertraut gemacht und statt .bmp generiere ich .html - sogar offline kann man Diagramme betrachten, d.h. Benutzerfreundlichkeit ist der Schlüssel zur Benutzung! ;)

 
Dmitry Fedoseev:

Und ich habe versucht, XAML zu studieren, aber nur von Anfang an, und ich habe den Witz nicht verstanden - warum sollte man eine andere Sprache studieren, und noch dazu eine sehr eng spezialisierte, die zudem die Möglichkeiten nicht erweitert, sondern einschränkt. Wie auch immer, eines Tages werden Sie etwas "optimieren" wollen, wenn das Programm funktioniert, oder die Schnittstelle flexibler gestalten, also werden Sie studieren müssen, wie alles auf direktem Wege ohne Pads gemacht wird. Der Nutzen der Auszeichnungssprache ist unbedeutend, und wenn man bedenkt, dass man sie erst noch lernen muss, ist das sehr zweifelhaft. Oder ich habe die Ideologie von XAML nicht verstanden.

Der große Wert von XAML besteht darin, dass es die Entwicklung aller Arten von Dialogfenstern und anderem Unsinn vereinfacht. In MFC ist es nicht einfach, eine Liste zu erstellen, die sich im Aussehen von der Standardliste unterscheidet, man muss sich schon sehr anstrengen, aber hier geht es ein oder zwei Mal. Ich habe damit herumgespielt, es ist umwerfend, aber wenn man Schnittstellen erstellen muss, kann man es beherrschen. Und man braucht es nicht zu lernen, es ist nur ein Stück Sharp. Es beginnt wirklich Zeit zu sparen, nicht sofort, aber wenn man es lernt.

 

Leute, warum stürzt ihr euch auf eine Person aus dem ersten Artikel, wenn ihr das Ergebnis nicht sehen könnt? Ich habe hier noch nie einen Kommentar geschrieben, aber Ihrer hat mich dazu gebracht.

Ich bin kein professioneller Programmierer, sondern ein Amateur. Und viele Artikel hier, auch erfolglose, bringen mich dazu, nach besseren Lösungen zu suchen, Programmiersprachen tiefer zu studieren. Zu verstehen, warum der Autor diese bestimmte Art der Problemlösung implementiert hat. Um etwas in meinen eigenen Entwicklungen anzuwenden. Jeder Artikel bringt mich dazu, mein Wissen um ein Vielfaches zu erweitern, als wenn ich nur Bücher und Dokumentationen lese.

Hier ist ein einfaches Beispiel. Es gibt hier schon eine Reihe von Artikeln über GUI, aber alles ist zwar mit Hilfe von Klassen implementiert, aber im prozeduralen Stil. Das ist umständlich und unpraktisch. Man muss den gesamten Code vom Anfang bis zum Ende verstehen. Das brachte mich dazu, mich mit anderen Sprachen wie C++ und C# zu befassen, wo man durch Überschreiben einer virtuellen Methode, z. B. doubleclick, implementieren kann, was man will, ohne sich in die Wildnis zu begeben.

Ich begann, Design Patterns und dynamische Datenstrukturen zu studieren. Da es in mql keine Delegates gibt, musste ich verstehen, was dieses Gericht ist und womit es gegessen wird. Ich musste alle Standardklassen neu schreiben. Ich fing von vorne an, mit CObject. Am Ende schrieb ich eine einfache Implementierung von OnTradeTransaction, OnChartEvent, OnTimer Event Handling mit "echtem" OOP. Ich bin nicht vertraut mit XAML Markup, wenn ich versuchte, es zu studieren schien sehr mühsam, aber jetzt werde ich in sie zu bekommen, um zu verstehen, was der Autor zu vermitteln will, und hatte die Gelegenheit, einige seiner Ideen für mich zu implementieren.

Bevor Sie also einen Artikel scharf kritisieren, denken Sie daran, dass es Menschen wie mich gibt, die eine andere Sichtweise auf dasselbe Thema brauchen. Schlagen Sie vor, leiten Sie an, wenn Sie tieferes Wissen haben. Bilden Sie ein Team. Das wird produktiver sein, als auf einen Artikel zu scheißen.

Создание мульти-экспертов на основе торговых моделей
Создание мульти-экспертов на основе торговых моделей
  • www.mql5.com
Технические возможности терминала MetaTrader 5 и его тестера стратегий определяют работу и тестирование мультивалютных торговых автоматов. Сложность разработки подобных систем для среды MetaTrader 4 обуславливалась, в первую очередь, невозможностью одновременного потикового тестирования сразу нескольких торговых инструментов. К тому же...