众包的GUI。公开测试。

 

我为社区提供了一个MQL程序的GUI构建器,供大家免费使用

  • GUI生成器是一个封闭的.ex5文件,以便集中开发,避免在分发版本时出现混乱。
  • GUI引擎是由一个开放的文件.mqh连接的,但是!-我不建议在没有咨询我的情况下自行修改代码, 因为这可能导致错误和功能的丧失。
  • 请告知我有关错误和缺陷。

我将对你的建设性参与表示感谢。

P.S. 该项目是众包的,这意味着我们将一起实施。

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

构建。

  • KIB.ex5 - GUI构建器。
  • 文件GUI_DRIVE.mqh - 用户应用程序中的GUI引擎。它是由文件连接的。
  • 指标KIB-source.mqh - 标记代码传输器从用户项目文件到构造器。

安装说明。

第1步--开箱。

  • 将KIB.ex5顾问放在专家文件夹中。(不要放在子文件夹中)。
  • 将GUI_DRIVE.mqh文件放在include文件夹中。(不要放在子文件夹中)。
  • 将KIB-source.mqh指标放在指标文件夹中。(不要放在子文件夹中)。

第2步 - 安装文件。

  • 在一个自由图表上安装KIB.ex5专家顾问。
  • 在MetaEditor中打开KIB-source.mqh指标,并进行编译,得到.ex5文件。
  • 将生成的KIB-source.ex5文件与专家顾问KIB.ex5安装在同一图表上。

第3步--准备工作。

  • 在include文件夹内为你的新GUI项目创建一个 "MyProjects "文件夹。
  • 创建文件Window_1.mqh,用于编写标记。打开文件。
  • 在KIB-source.mqh底部的 "source "阵列初始化(#include <MyProjects\Window_1.mqh>)中规定这个文件的连接。

第4步--开始行动。

  • 编写最简单的代码。

//----------------------------------------------------------------------------------
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,

  • 编译KIB-source.mqh文件。图上应该出现一个带有按钮的窗口。

第5步 - 设计用户图形用户界面。

  • 在额外的分支中,将提供教程和代码示例,以帮助创建所需的图形用户界面。

第6步 - 保存自定义图形用户界面。

  • 通过双击图形调用构造器的上下文菜单。
  • 选择最后一项 "保存项目并打印API文件"。
  • 文件夹包含两个文件:"CORES.mqh "和 "Internal_API.mqh"。
  • 手动将这些文件从 "文件 "文件夹移入 "我的项目 "文件夹。
  • 该项目被保存。

第7步 - 将用户图形用户界面连接到专家顾问。

//+------------------------------------------------------------------+
//|                                                   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);
   //----------------------------------------------------------------
  }
//+------------------------------------------------------------------+


第8步--从控件中获取事件。

  • 事件来到 "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;
  
...

  • 在其情况下,规定用户功能的必要反应。


HH. 在博客上有一个集成了资源的编译版的构建器:https://www.mql5.com/ru/blogs/post/733356

这个版本只有开放源代码,因为资源位于不同的文件夹中(声音和带有图片的子文件夹),在这里转移所有的东西和大量的解释没有意义。

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

关闭代码 -> 市场。

打开代码->论坛。

 
Vladimir Karputov:

关闭代码 -> 市场。

打开代码->论坛。

好的。我将发布构造函数的开放源代码。但是,我需要几天的时间来刷新它。你会同意等待吗?

 
Реter Konow:

很好。我将公布构造函数的开放源代码。但是,我需要几天时间来梳理它。你会同意等待吗?

你的主题是不会消失的。

 
"肖?"又来了!)。
 
Dmitriy Skub:
"什么?"又来了!)。
还没梳理好,等一下。
 
Реter Konow:


顺便说一下,尝试创建一个项目


 
Vladimir Karputov:

顺便说一下,尝试创建一个项目。


好的。只是要澄清一下。构造器或引擎代码本身就有2万多行代码。在这个主题中,我想教人们如何用一种标记语言创建GUI,而不是如何理解构造函数本身的代码。因此,我想把构造函数的代码放在一个文件中,以方便用户。

 
Реter Konow:

好的。只是要澄清一下。构造器或引擎代码本身就有2万多行代码。在这个主题中,我想教人们如何用一种标记语言创建GUI,而不是如何理解构造函数本身的代码。这就是为什么我想把构造函数的代码发布在一个文件中,以方便用户使用。

不,这样一来,每个市场卖方都会建立自己的分支,如 "测试我最好的EA"。

 
Vladimir Karputov:

不,这就是每个市场供应商都会启动自己的 "测试我最好的EA "主题。

(笑) 好的。不管怎么样。我将按原样张贴。

 
Реter Konow:

P.S. 该项目是众包的,这意味着我们一起实施。

项目 中是否有或将有众包?

我认为你正在寻找测试人员,而不是那些将联合起来 "完成代码 "到生产的人(即使代码是免费的)。