香港:
  • 纽约:
  • 伦敦:
  • 东京:
  • 悉尼:
  • 香港:
  • 新加坡:
首页> 资讯> 最新 >正文

第四单元(4-1) - 认识图形对象

William 2024-06-17 20:14:07 关注
初步认识MQL4图形对象

文章来源:123财经导航 | 

图形对象概述:

图形对象是 MQL4 中用于在交易图表上显示各种可视化元素的编程工具。包括线条、箭头、文本框、按钮,位图,矩形背景等多种类型。是用于构建用户界面的常用方法;图形对象可以与交易逻辑以及指标计算进行交互,增强图表可视化交互性与使用体验,是一种把内部信息通过图形对象直观展现的方式。例如我们常用的交易面板 - BBdata就是使用这种方式开发。

图示:创建几个简单的图形对象

  • 对象创建:使用 ObjectCreate() 函数创建各种类型的图形对象。
  • 事件捕捉:使用 OnChartEvent() 函数捕捉图形对象的事件,如单击、拖拽等。可以作为输入控件,接收鼠标或键盘操作。根据图形对象的事件,触发相应的交易逻辑和功能。
  • 应用场景:创建可视化的交易信号和指标。开发交互式的交易界面和控制面板。实现图表上的标记、注释等功能。提高交易系统的可视化和用户体验。

图形对象分类

MQL4中自带的图形对象种类高达40余种,你能想到的类型基本都有,但多数在我们实际使用中的频率很低,本单元教学将列举使用频率最高的几种讲解。

1、OBJ_EDIT - 文本编辑框对象:edit为可编辑的意思,用于创建可编辑的文本输入框,监听编辑框的事件,如文本输入修改等操作。

2、OBJ_LABEL - 文本标签对象:用于创建静态文本标签,通常用于在图表上固定显示一些提示性文字。

3、OBJ_TEXT - 动态文本标签:和静态的功能相同,只不过显示内容吸附在图表或K线上

4、OBJ_BUTTON - 按钮对象:用于创建可点击的按钮控件,对象属性包含按下和弹起两种状态,可以通过监听按钮的点击事件,触发相应的交易逻辑,比如平仓开仓等功能实现。

5、OBJ_BITMAP_LABEL - 位图标签对象:用于在图表上显示位图图像,通常用于显示一些图标或logo,或者特定风格的图片。

6、OBJ_RECTANGLE_LABEL - 矩形标签对象:可以看做是一个矩形背景控件,通常同于衬托其他对象的美观度

图形对象的主要函数

在MQL4中,可以说每一种图形对象都包含了独立的常量属性,属性数量上百种。状态函数也是高达几十种;但是函数基本通用,可以使用函数进行创建和设置特定的图形对象。下面为大家列举最基础的4个主要函数:

  • ObjectCreate 创建对象函数
  • ObjectSetInteger 对象设置函数:具有int类型的对象属性,比如宽度高度颜色等
  • ObjectSetDouble 对象设置函数:具有double类型的属性,比如价格等
  • ObjectSetString 对象设置函数:具有string类型的属性,比如文本信息

到这里你可能会觉得对于图形对象的创建实在是太复杂了,有那么多属性怎么学?还还记答题的时候关于空间想象力的题目吧?学习图形化交互其实只需要具备空间想象力即可,对象属性可以随用随查MQL4帮助手册,千万不需要死记硬背,我们为大家准备了中文的MQL4中文版手册可以使用,另外MQL5的图形对象也和MQL4的使用方式一致。

MQL4/5帮助手册中为我们准备的现成代码,直接复制过来稍做改动即可:

void PANEL(const  string name,                              // 名称
           const  int    x,                                                // X坐标
           const  int    y,                                                // Y坐标
           const  color  back_clr,                                    // 背景色
           const  int    w,                                                // 宽
           const  int    h,                                                // 高
           const  color  line_clr,                                     // 边色
           const  int    linesize,                                       // 线粗
           const  ENUM_BORDER_TYPE type   = BORDER_FLAT,                 // 边框类型
           const  ENUM_BASE_CORNER corner = CORNER_LEFT_UPPER,     // 锚点
           const  ENUM_LINE_STYLE  style  = STYLE_SOLID)                        // 边框样式                
  {
     if(ObjectFind(name) < 0){ 
        ObjectCreate(0,name,OBJ_RECTANGLE_LABEL,0,0,0);
     }
     ObjectSetInteger(0,name,OBJPROP_XSIZE,w);                             // 宽度
     ObjectSetInteger(0,name,OBJPROP_YSIZE,h);                             // 高度
     ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);                    // X轴
     ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);                    // Y轴
     ObjectSetInteger(0,name,OBJPROP_BGCOLOR,back_clr);           // 背景颜色
     ObjectSetInteger(0,name,OBJPROP_WIDTH,linesize);                // 边框粗细
     ObjectSetInteger(0,name,OBJPROP_COLOR,line_clr);                 // 边框颜色:
     ObjectSetInteger(0,name,OBJPROP_BORDER_TYPE,type);          // 边框类型
     ObjectSetInteger(0,name,OBJPROP_CORNER,corner);                 // 锚点
     ObjectSetInteger(0,name,OBJPROP_STYLE,style);                        // 边框样式
     //---
     ObjectSetInteger(0, name, OBJPROP_BACK, FALSE);                       // 置于背景
     ObjectSetInteger(0, name, OBJPROP_ZORDER,0);                          // 鼠标点击优先级
     ObjectSetInteger(0, name, OBJPROP_SELECTABLE, FALSE);            // 是否可选择
     ObjectSetInteger(0, name, OBJPROP_SELECTED, FALSE);                // 是否被选中
     ObjectSetInteger(0, name, OBJPROP_HIDDEN, TRUE);                   // 是否隐藏          
  }

初步理解对象的各种属性

在每一种对象中,具有独有的属性也具有相同的属性,比如按钮和输入框,都包含了长度、宽度、横坐标、纵坐标颜色等属性,部分属性常量大体相似。
对于坐标,你可以先从屏幕分辨率理解,把1920X1080的屏幕理解成由1920x1080个像素个构成一个矩形的界面,而MT4的图表,也可以比作一个单独的屏幕,横坐标和纵坐标都是从0开始。以屏幕左上角为锚点,越往右,横坐标就越大;越往下,纵坐标就越大。
下图以OBJ_LABEL对象为例,属性中就是该对象的锚点和坐标。



下面的信息为该对象的名称、显示内容、字体、字体大小、显示颜色等属性。这些属性都可以通过编程写入样式来显示。

【免责声明】123财经导航所发布的信息内容仅供交易投资者参考,并不构成投资建议“据此操作,风险自担”。网站上部分信息内容及图片来自于网络/注册作者/投稿人,版权归原作者所有,如有侵权,请您与我们联系关闭,邮箱:938123@qq.com。
第三方账号登录
第三方账号登录
第三方账号登录
  • *站点:
  • *网址:
  • 类型:
  • 联系方式:
  • 简介:

  • RRH123欢迎您的加入!如有问题请添加咨询管理员【微信号:938123】
  • *类型:
  • *问题:
  • 图片说明:
  • 联系方式:

  • RRH123感谢您的反馈!如有问题请添加咨询管理员【微信号:938123】