Crowdsourced GUI. Offene Betatests.

 

Ich biete der Community einen GUI-Builder für MQL-Programmezur freien Verwendung an.

  • Der GUI-Builder ist eine geschlossene .ex5-Datei, um seine Entwicklung zu zentralisieren und Verwirrung bei der Verteilung von Versionen zu vermeiden.
  • Die GUI-Engine ist mit einer offenen Datei .mqh verbunden, aber! -Ich empfehle nicht, den Code auf eigene Faust zu ändern, ohne mich zu konsultieren, da dies zu Fehlern und Funktionsverlusten führen kann.
  • Bitte informieren Sie mich über Bugs und Defekte.

Ich bin Ihnen für Ihre konstruktive Mitarbeit dankbar.

P.S. Das Projekt ist crowdsourced, d.h. wir werden es gemeinsam umsetzen.

//-----------------------------------------------------------------------------------------------------------------

KONSTRUKTION:

  • KIB.ex5 - GUI-Erstellung.
  • Datei GUI_DRIVE.mqh - GUI-Engine in der Benutzeranwendung. Sie ist mit der Datei verbunden.
  • Indikator KIB-source.mqh - Markierung von Code-Transmittern aus Benutzerprojektdateien für den Konstruktor.

ANWEISUNGEN FÜR DIE INSTALLATION:

Schritt 1 - Auspacken:

  • Legen Sie den KIB.ex5-Berater in den Ordner "Expert". (Nicht in Unterordnern ablegen).
  • Legen Sie die Datei GUI_DRIVE.mqh in den Include-Ordner. (Nicht in Unterordnern ablegen).
  • Legen Sie den Indikator KIB-source.mqh in den Ordner Indicators. (Nicht in Unterordnern ablegen).

Schritt 2 - Dateien installieren:

  • Installieren Sie den Expert Advisor KIB.ex5 auf einem freien Chart.
  • Öffnen Sie den Indikator KIB-source.mqh in MetaEditor und kompilieren Sie ihn, um eine .ex5-Datei zu erhalten.
  • Installieren Sie die resultierende Datei KIB-source.ex5 auf demselben Chart wie den Expert Advisor KIB.ex5.

Schritt 3 - Vorbereitung auf die Arbeit:

  • Erstellen Sie einen Ordner "MyProjects" für Ihr neues GUI-Projekt innerhalb des Include-Ordners.
  • Erstellen Sie die Datei Window_1.mqh, um das Markup zu schreiben. Öffnen Sie die Datei.
  • Geben Sie die Verbindung dieser Datei am Ende von KIB-source.mqh innerhalb der Initialisierung des Arrays "source" an (#include <MyProjects\Window_1.mqh>).

Schritt 4 - die ersten Schritte:

  • Schreiben Sie den einfachsten Code:

//----------------------------------------------------------------------------------
NEW_WINDOW,  W_NAME, " Hello World! ",  W_ICON, "::Images\\16x16\\Folder.bmp",  W_TYPE, SETTINGS, ALWAYS_ON_TOP,
//----------------------------------------------------------------------------------
GROUP, "Кнопка",

__,BUTTON, "Hello World!",

END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 10,
//----------------------------------------------------------------------------------
END_WINDOW,

  • Kompilieren Sie die Datei KIB-source.mqh. Im Diagramm sollte ein Fenster mit einer Schaltfläche erscheinen.

Schritt 5 - Entwerfen Sie die grafische Benutzeroberfläche:

  • Im zusätzlichen Zweig werden Tutorials und Codebeispiele zur Verfügung gestellt, die bei der Erstellung der gewünschten GUI helfen.

Schritt 6 - Speichern Sie die benutzerdefinierte GUI:

  • Rufen Sie das Kontextmenü des Konstruktors durch Doppelklick auf die Grafik auf.
  • Wählen Sie den letzten Punkt "Projekt speichern und API-Datei drucken".
  • Der Ordner Files enthält zwei Dateien: "CORES.mqh" und "Internal_API.mqh".
  • Verschieben Sie diese Dateien manuell in den Ordner MyProjects aus dem Ordner "Files".
  • Das Projekt wird gespeichert.

Schritt 7 - Verbinden Sie die Benutzer-GUI mit dem Expert Advisor:

//+------------------------------------------------------------------+
//|                                                   GUI Expert.mq5 |
//|                                                      Peter Konow |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Peter Konow"
//--------------------------------------------------------------------
#include<GUI_DRIVE.mqh>
#include<MyProject_1\CORES.mqh>
#include<MyProject_1\Internal_API.mqh> 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   //--- create timer
   EventSetMillisecondTimer(25);
   //-------------------------
   D_OnInit();
   //-------------------------
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
   //-------------------------
   D_OnDeinit();
   //-------------------------
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   //ВАШ КОД-----------------
   //ВАШ КОД-----------------
   //ВАШ КОД-----------------
   //ВАШ КОД-----------------
   //ВАШ КОД-----------------
   //УСТАНОВИТЬ ВЫЗОВ В САМОМ НИЗУ, ПОД ПОЛЬЗ.КОДОМ.------------------
   //---------------------------
   RMSG(1);
   //---------------------------
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   //УСТАНОВИТЬ ВЫЗОВ НА САМОМ ВЕРХУ, НАД ПОЛЬЗ.КОДОМ.---------------
   //----------------------------------------------------------------
   D_OnChartEvent(id,lparam,dparam,sparam);
   //----------------------------------------------------------------
  }
//+------------------------------------------------------------------+


Schritt 8 - Empfang von Ereignissen von den Steuerungen:

  • Die Ereignisse kommen zu einer Funktion in der Datei "Internal_API.mqh".

//========================================================================================================= 
void On_Gui_Event(int Element, string value, double Magic = 0)
{
 string action = value, selected_option = value; //DON'T CHANGE THIS LINE
//------------------------------------
 switch(Element)
   {
//=====================================================================================================================
//WINDOW:   Checkboxes | element: CHECKBOX  | name: Checkbox 1  |  Location: Window's Main Frame
//=====================================================================================================================
case CHECKBOX3___Checkbox_1:
               //------------------------------------------------------------------------------------------------------
               //What to do when checkbox checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                case checked:     break;
  
                case unchecked:     break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  
...

  • Schreiben Sie in ihren Fällen die erforderlichen Reaktionen der Benutzerfunktionen vor.


HH: Es gibt eine kompilierte Version des Builders mit integrierten Ressourcen auf dem Blog: https://www.mql5.com/ru/blogs/post/733356

Diese Version hat nur offenen Quellcode, weil die Ressourcen in verschiedenen Ordnern (Sounds und Unterordner mit Bildern) liegen und es keinen Sinn macht, alles hierher zu übertragen, mit einer großen Menge an Erklärungen.

Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Функция ArrayResize() позволяет задать для массива размер с некоторым запасом для его будущего увеличения без физического перераспределения памяти. Это сделано для улучшения быстродействия, так как операции по распределению памяти...
Dateien:
KIB-source.mq5  132 kb
GUI_DRIVE.mqh  2013 kb
KIB.zip  1470 kb
 

Geschlossener Code -> Marktplatz.

Code öffnen -> Forum.

 
Vladimir Karputov:

Geschlossener Code -> Marktplatz.

Code öffnen -> Forum.

Ja. Ich werde den Open-Source-Code des Konstruktors veröffentlichen. Aber ich brauche ein paar Tage, um sie aufzufrischen. Sind Sie bereit zu warten?

 
Реter Konow:

Gut. Ich werde den Open-Source-Code des Konstruktors veröffentlichen. Aber ich werde ein paar Tage brauchen, um sie durchzuarbeiten. Sind Sie bereit zu warten?

Ihr Thema wird nicht verschwinden.

 
"Shaw? Schon wieder?!)
 
Dmitriy Skub:
"Was? Schon wieder?!)
Ich habe es noch nicht gekämmt, warte mal.
 
Реter Konow:


Übrigens, versuchen Sie, ein Projekt zu erstellen:


 
Vladimir Karputov:

Übrigens, versuchen Sie, ein Projekt zu erstellen:


Ja. Nur zur Klarstellung. Der Konstruktor- oder Motorcode selbst umfasst über 20.000 Zeilen Code. In diesem Thread wollte ich den Leuten beibringen, wie man eine grafische Benutzeroberfläche in einer Auszeichnungssprache erstellt, und nicht, wie man den Code des Konstruktors selbst versteht. Deshalb möchte ich den Code des Konstruktors in einer Datei zusammenfassen, um den Benutzern die Arbeit zu erleichtern.

 
Реter Konow:

Also gut. Nur zur Klarstellung. Der Konstruktor- oder Motorcode selbst umfasst über 20.000 Zeilen Code. In diesem Thread wollte ich den Leuten beibringen, wie man eine grafische Benutzeroberfläche in einer Auszeichnungssprache erstellt, und nicht, wie man den Code des Konstruktors selbst versteht. Deshalb möchte ich den Konstruktorcode in einer einzigen Datei veröffentlichen, um den Benutzern die Arbeit zu erleichtern.

Nein. Auf diese Weise wird jeder Market Seller einen eigenen Zweig wie "Test my best EA" eröffnen.

 
Vladimir Karputov:

Nein. So wird jeder Marktverkäufer seinen eigenen "Teste meinen besten EA"-Thread starten.

(lacht) Okay. Wie auch immer. Ich werde es so veröffentlichen, wie es ist.

 
Реter Konow:

P.S. Das Projekt ist crowdsourced, das heißt, wir setzen es gemeinsam um.

Gibt es bei dem Projekt ein Crowdsourcing oder wird es eines geben?

Ich denke, Sie suchen nach Testern, nicht nach solchen, die sich zusammentun und den Code für die Produktion fertigstellen (selbst wenn der Code kostenlos ist).