文章 "“傻瓜式”MQL:如何设计和构建对象类" - 页 2

 

为了确保万无一失,我刚把终端升级到可下载的版本。

更新了库,这是肯定的。

运行终端,打开文件,就是它了。

我很喜欢按钮的分组 =))))))

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 

请您将此应用程序所需的所有文件上传到一个压缩包中,并尊重压缩包的结构,使其只有一个 MQL5 文件夹。

我已检查过所有文件都能正常打开,内容可读。

 
CoreWinTT:

请将此应用程序所需的所有文件上传到一个存档中,并遵守结构,以便有一个 MQL5 文件夹。

我已检查过所有文件都能正常打开,内容可读。

已通过私人消息发送给您。
 

谢谢。

现在一切正常了,编译也正常了,问题可能出在上传到服务器的位文件上,或者是下载时出错了,但我没有注意到。

一般来说,单独下载超过 5 个文件是非常不方便的,如果能制作一个存档或整个安装程序就更好了。

我会继续了解,并尝试将其放到某个地方,我会报告结果。

总的来说,我非常喜欢十字按钮的功能。

但最小化按钮令人失望 ........

不工作,而且在我的理解中,它应该在以下几行下面最小化?

 

总的来说,这篇文章信息量很大,只是大量引用了 "维基百科"。

于是,它变成了这样一个菜单的专业构造函数,在上面点击并添加一切内容,总的来说,它是有效的。

如果能有一些简单的手册,说明如何访问这个奇迹的单元格,那就更好了。

让我们假设 Expert Advisor 在 tick 事件中读取单元格中的值。

在启动过程中,这些单元格将填入输入参数。

或者,我必须自己编写这样的程序????。

并将其作为可视化构造函数?

 

感谢您提出的宝贵意见。我已经仔细琢磨了这些意见,并将努力解决其中的大部分问题。

 

的类型,形成一系列结构

结构数组,供整个程序使用

并以这种格式存储数据

并能将这些值

作为标题[1].2 列。

至少使用字符串数据类型

我发现这里已经有类似的东西了。

string Mstr[][3]=
  {
     {"MACD","",""},
     {"NEW1","metod",""},
     {"elders","new2",""},
     {"Fast","new3",""},
     {"Slow","new4",""},
     {"Signal","new5",""},
     {}
  };

比如二维数组。

如果你这样做,它就会责备你。

     {"NEW1",""+TrailingStop+"",""},


可能 getter 和 setter 无法拆分封装。

 

每个单元格都有自己独特的名称。将鼠标光标悬停在对象上即可看到。ClassMasterWindowsEXE.mqh 文件展示了如何访问单元格。

//+------------------------------------------------------------------+
// // 拦截和处理事件的方法 OnChartEvent()
//+------------------------------------------------------------------+
void CMasterWindowsEXE::OnEvent(const int id,
                                const long &lparam,
                                const double &dparam,
                                const string &sparam)
  {
   if(on_event) // 事件处理已启用
     {
      //--- 按主窗口中的 START(开始)按钮
      if(id==CHARTEVENT_OBJECT_CLICK
         && StringFind(sparam,"CWin1",0)>=0
         && StringFind(sparam,"STR19",0)>0
         && StringFind(sparam,".Button",0)>0)
        {
         Generator();
        }
      //--- 在 EDIT STR18 编辑器中编辑变量
      if(id==CHARTEVENT_OBJECT_ENDEDIT
         && StringFind(sparam,"CWin1",0)>=0
         && StringFind(sparam,"STR18",0)>0)
        {
         string textedit=ObjectGetString(0,sparam,OBJPROP_TEXT);
         if(StringFind(textedit,".",0)>=0)
           {
            ObjectSetString(0,sparam,OBJPROP_TEXT,"");
            ChartRedraw();
            MessageBox("文件名不得包含句号!","文件名错误"。,MB_OK);
           }
         else nameFile=textedit;
        }
 

但在这里,所有字符串参数都变成了

也就是说,每个按钮都需要编写一个事件,如

  if(id==CHARTEVENT_OBJECT_CLICK
         && StringFind(sparam,CWin1.STR2.RowType3.Button3,0)>=0
         && StringFind(sparam,"STR19",0)>0
         && StringFind(sparam,".Button",0)>0)
        {
         Generator();
        }

按钮 +

从诸如此类的字符串中提取值,转换为整数,加一并放回。

在事件 ontic 中

然后

从诸如此类的字符串中提取值,然后将其转换为整数等等。

总之,如果有这样一种结构,您就可以设置存储对象的类型,并在类中实现将值转换为字符串的模块。

我的理解是正确的,例如可以通过在事件中插入代码 来跟踪加号单元格。

  if(id==CHARTEVENT_OBJECT_CLICK
         && StringFind(sparam,"CWin1.STR2.RowType3.Button3",0)>=0)
        {
         Generator();
        }

 
我还想知道最小化按钮是否有效。