- 显示:
- 2209
- 等级:
- 已发布:
- 2016.04.28 12:35
- 已更新:
- 2016.11.22 07:33
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
"MQL5 初学者: 如何设计和创建对象类"的系列文章中描述了您可以如何为您的程序创建用户友好的界面,交互窗口的实现就是基于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. 库的基本选项和功能
例如, 对于文章"在 MQL5 中测试移动平均计算的效率"中,我们已经使用该库创建了以下界面。
图 3. 使用 MasterWindows 库的一个实例
推荐:
- 为了更好地显示所创建的界面窗口,请使用黑色背景的图形界面格局。
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/15059

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

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

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

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