请观看如何免费下载自动交易

有趣的脚本?
因此发布一个链接 -
让其他人评价

喜欢这个脚本? 在MetaTrader 5客户端尝试它

显示:
863
等级:
投票: 28
已发布:
2016.04.28 12:35
已更新:
2016.11.22 07:33
\MQL5\Include\
ClassRow.mqh (22.18 KB)预览
ClassWin.mqh (8.13 KB)预览
\MQL5\Experts\
test1.mq5 (9.14 KB)预览
test2.mq5 (6.85 KB)预览
test3.mq5 (7.73 KB)预览

"MQL5 初学者: 如何设计和创建对象类"的系列文章中描述了您可以如何为您的程序创建用户友好的界面,交互窗口的实现就是基于MasterWindows类库的使用。

图 1. 使用 MasterWindows 库的实例

图 1. 使用 MasterWindows 库的实例

MasterWindows 库包含了三个基类:

  • CCell 基类:
    //+------------------------------------------------------------------+
    //| CELL 基类 class CCell                         |
    //+------------------------------------------------------------------+
    class CCell
      {
    private:
    protected:
       bool              on_event;      // 事件处理标签
       ENUM_OBJECT       type;          // 单元类型
    public:
       WinCell           Property;      // 单元属性
       string            name;          // 单元名称
       //+---------------------------------------------------------------+
       // 类的构造函数
       void              CCell();
       virtual     // 方法: 画出一个对象
       void              Draw(string m_name,
                              int m_xdelta,
                              int m_ydelta,
                              int m_bsize);
       virtual     // OnChartEvent 事件处理函数
       void              OnEvent(const int id,
                                 const long &lparam,
                                 const double &dparam,
                                 const string &sparam);
      };
    
  • CRow 基类, 包含了 CCell 类的单元:
    //+------------------------------------------------------------------+
    //| ROW(行) 基类 class CRow                        |
    //+------------------------------------------------------------------+
    class CRow
      {
    protected:
       bool              on_event;      // 事件处理标签
    public:
       string            name;          // Row 名称
       WinCell           Property;      // Row 属性
       //+---------------------------------------------------------------+
       // 类的构造函数
       void              CRow();
       virtual     // 方法: 画出一行
       void              Draw(string m_name,
                              int m_xdelta,
                              int m_ydelta,
                              int m_bsize);
       virtual     // OnChartEvent 事件处理函数
       void              OnEvent(const int id,
                                 const long &lparam,
                                 const double &dparam,
                                 const string &sparam);
      };
    
  • CWin 基类, 包含多行 CRow 类:
    //+------------------------------------------------------------------+
    //| Windows(窗口)基类 class CWin                     |
    //+------------------------------------------------------------------+
    class CWin
      {
    private:
       void              SetXY(int m_corner);// 用于计算坐标的方法
    protected:
       bool              on_event;   // 事件处理标志
    public:
       string            name;       // 窗口名称
       int               w_corner;   // 锚点角落
       int               w_xdelta;   // 垂直缩进
       int               w_ydelta;   // 水平缩进
       int               w_xpos;     // 锚点的 X 坐标
       int               w_ypos;     // 锚点的 Y 坐标
       int               w_bsize;    // 窗口的宽度
       int               w_hsize;    // 窗口的高度
       int               w_h_corner; // 隐藏模式的锚点角落
       WinCell           Property;   // 窗口属性
       //---
       CRowType1         STR1;       // 声明 class row
       CRowType2         STR2;       // 声明 class row
       CRowType3         STR3;       // 声明 class row
       CRowType4         STR4;       // 声明 class row
       CRowType5         STR5;       // 声明 class row
       CRowType6         STR6;       // 声明 class row
       //+---------------------------------------------------------------+
       // 类的构造函数
       void              CWin();
       // 数据获取方法
       void              SetWin(string m_name,
                                int m_xdelta,
                                int m_ydelta,
                                int m_bsize,
                                int m_corner);
       virtual     // 方法: 画出窗口
       void              Draw(int &MMint[][3],
                              string &MMstr[][3],
                              int count);
       virtual     // OnEventTick 事件处理方法
       void              OnEventTick();
       virtual     // OnChartEvent 事件处理函数
       void              OnEvent(const int id,
                                 const long &lparam,
                                 const double &dparam,
                                 const string &sparam);
      };
    

以及10个派生类。

附件中包含了模板和使用MasterWindows库的示例代码,所有的代码都是使用MasterWindows for MQL5可视化构造工具生成的,测试程序只是模型,也就是说,没有具体功能 (除了两个功能: 关闭和隐藏窗口)。

在一个窗口中您可以使用任何数量和组合的行,图中显示了行的基本版和窗口的标题:

图 2. 窗口界面的基本版本

图 2. 库的基本选项和功能

例如, 对于文章"在 MQL5 中测试移动平均计算的效率"中,我们已经使用该库创建了以下界面。

图 3. 库的应用实例

图 3. 使用 MasterWindows 库的一个实例

推荐:

  • 为了更好地显示所创建的界面窗口,请使用黑色背景的图形界面格局。

本文译自 MetaQuotes Software Corp. 撰写的俄文原文
官方代码: https://www.mql5.com/ru/code/15059

价格 价格

在价格右方加上的含有可调整参数的价格标签。

XMA_BBx7_Cloud_Digit XMA_BBx7_Cloud_Digit

基于移动平均的三个布林带通道,使用彩色云的形式绘制,在标签中显示了最新的价格,并且可以把布林带的水平四舍五入到某小数位数。

XMA_BBx7_Cloud_Digit_HTF XMA_BBx7_Cloud_Digit_HTF

在输入参数中带有时段选择选项的 XMA_BBx7_Cloud_Digit 指标。

XMA_KLx7_Cloud XMA_KLx7_Cloud

基于移动平均的三条 Keltner 通道,以彩色云的形式画出,在标签处显示了最新的价格。