下载MetaTrader 5

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

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

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

程序库

ObjectCreateAndSet - MetaTrader 5程序库

| Chinese English Русский Español Deutsch 日本語 Português

显示:
810
等级:
投票: 21
已发布:
2015.09.24 15:30
已更新:
2016.11.22 07:33
\MQL5\Include\\MQL5\Scripts\

附件 *.mqh 文件包含用于创建各种对象和修改对象属性的函数。当我需要快速编写在图表上创建对象并/或修改现存对象属性的测试代码时, 它特别有用。

其它文件是用例脚本 (创建文本标签, 文本逐渐旋转 90 度, 并一路改变它的颜色)。

I. 用于创建对象的函数:

这些函数均基于在 MQL5 参考 里描述的标准函数。与标准函数的主要区别:

  • 加入几行用于在不同时间帧上设置工具提示和设置对象可见性;
  • 删除几行用于创建无需设置坐标, 价格, 锚点 (除了 VLineCreate(...) 和 EventCreate(...)) 的函数;
  • 用于设置 (修改) 对象属性的基准函数在此程序库里实现, 检查设置属性成功的附加条件已经添加。

用于创建对象的函数清单:

名称
简要描述
对象类型

VLineCreate

创建垂直线

OBJ_VLINE

HLineCreate

创建水平线

OBJ_HLINE

TrendCreate

创建一条给定坐标的趋势线

OBJ_TREND

ArrowedLineCreate

创建一个给定坐标的箭头

OBJ_ARROWED_LINE

ChannelCreate

创建一个给定坐标的等距通道

OBJ_CHANNEL

RectangleCreate

创建一个给定坐标的长方形

OBJ_RECTANGLE

TriangleCreate

创建一个给定坐标的三角形

OBJ_TRIANGLE

EllipseCreate

创建一个给定坐标的椭圆形

OBJ_ELLIPSE

ArrowCreate

创建 OBJ_ARROW

OBJ_ARROW
TextCreate

创建文本对象

OBJ_TEXT

LabelCreate

创建文本标签

OBJ_LABEL

ButtonCreate

创建一个按钮

OBJ_BUTTON

BitmapCreate

在图表窗口里创建一个位图

OBJ_BITMAP

BitmapLabelCreate

创建一个位图标签对象

OBJ_BITMAP_LABEL

EditCreate

创建一个编辑对象

OBJ_EDIT

EventCreate

在图表上创建一个事件对此象

OBJ_EVENT

RectLabelCreate

创建一个长方形标签

OBJ_RECTANGLE_LABEL

 

II. 用于设置对象属性的函数:

使用 ObjectSetDouble(...), ObjectSetInteger(...)ObjectSetString(...) 无需指定修饰符:


函数名
枚举
属性
简要描述
属性类型
1. ObSetDouble ENUM_OBJECT_PROPERTY_DOUBLE OBJPROP_SCALE 标尺 (江恩和菲波纳奇扇形对象的属性) double
OBJPROP_ANGLE
角度。若从程序里创建的无需指定角度的对象, 该值等于 EMPTY_VALUE
double
OBJPROP_DEVIATION 标准方差通道的的方差
double
2. ObSetIntegerAlign ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_ALIGN 在编辑对象 (OBJ_EDIT) 里的水平文本对位
ENUM_ALIGN_MODE
3. ObSetIntegerAncorPoint ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_ANCHOR
锚点位置, 用于 OBJ_LABEL, OBJ_BITMAP_LABEL 和 OBJ_TEXT 对象
ENUM_ANCHOR_POINT
4.
ObSetIntegerArrowAncor
ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_ANCHOR 锚点位置, 用于 OBJ_ARROW 对象
ENUM_ARROW_ANCHOR
5. ObSetIntegerArrowCode
ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_ARROWCODE 箭头代码, 用于 OBJ_ARROW
char
6. ObSetIntegerBool ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_BACK
背景对象
bool
OBJPROP_FILL 对象填充颜色 (用于 OBJ_RECTANGLE, OBJ_TRIANGLE, OBJ_ELLIPSE, OBJ_CHANNEL, OBJ_STDDEVCHANNEL,OBJ_REGRESSION) bool
OBJPROP_HIDDEN 禁止在对象列表里显示图形对象的名字, 来自终端菜单 "图表" - "对象" - "对象列表"。"true" 在列表里隐藏一个对象。省缺, "true" 设为显示日历事件对象, 交易历史以及来自 MQL5 程序创建的对象。为了查看图形对象并访问它们的属性, 点击
"对象列表" 窗口里的 "所有" 按钮。
bool
OBJPROP_SELECTED
对象已被选择 bool
OBJPROP_READONLY
在编辑对象里编辑文本的能力 bool
OBJPROP_SELECTABLE
对象可用性 bool
OBJPROP_RAY_LEFT
左方向射线 bool
OBJPROP_RAY_RIGHT 右方向射线 bool
OBJPROP_RAY 垂线贯穿图表的所有窗口 bool
OBJPROP_ELLIPSE 显示菲波纳奇扇形对象 (OBJ_FIBOARC) 的完整椭圆形 bool
OBJPROP_DRAWLINES 显示埃洛特波浪标记的线条 bool
OBJPROP_STATE 按钮状态 (按下/释放) bool
OBJPROP_DATE_SCALE 图表对象的时间标尺显示标志 bool
OBJPROP_PRICE_SCALE 图表对象的价格标尺显示标志 bool
7. ObSetIntegerBorderType ENUM_OBJECT_PROPERTY_INTEGER
OBJPROP_BORDER_TYPE
长方形标签对象的边框类型
ENUM_BORDER_TYPE
8. ObSetIntegerColor ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_COLOR 颜色 (根据对象类型, 控制线条, 文本等颜色) color
OBJPROP_BGCOLOR 背景颜色, 用于 OBJ_EDIT, OBJ_BUTTON, OBJ_RECTANGLE_LABEL color
OBJPROP_BORDER_COLOR 边框颜色, 用于 OBJ_EDIT 和 OBJ_BUTTON color
9. ObSetIntegerCorner
ENUM_OBJECT_PROPERTY_INTEGER
OBJPROP_CORNER 图表拐角, 用于加载图形对象
ENUM_BASE_CORNER
10. ObSetIntegerInt ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_WIDTH 线宽 int
OBJPROP_LEVELS 级别数字 int
OBJPROP_FONTSIZE 字体大小 int
OBJPROP_TIMEFRAMES 一个对象在时间帧上的可见性 (一个设置标志) int
OBJPROP_XDISTANCE 自锚点拐角沿 X 轴的距离像素 (参见 MQL5 参考里的注释) int
OBJPROP_YDISTANCE 自锚点拐角沿 Y 轴的距离像素 (参见 MQL5 参考里的注释)
int
OBJPROP_XSIZE 对象沿 X 轴的宽度像素。特别用于 OBJ_LABEL (只读), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL int
OBJPROP_YSIZE 对象沿 Y 轴的高度像素。特别用于 OBJ_LABEL (只读), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL int
OBJPROP_XOFFSET 位图标签和位图图形对象 (OBJ_BITMAP_LABEL 和 OBJ_BITMAP) 长方形可视区域左上角的 X 坐标。此数值设置相对于原始图像左上角的像素 int
OBJPROP_YOFFSET 位图标签和位图图形对象 (OBJ_BITMAP_LABEL 和 OBJ_BITMAP) 长方形可视区域左上角的 Y 坐标。此数值设置相对于原始图像左上角的像素 int
OBJPROP_CHART_SCALE 图表对象的标尺 (从 0 到 5) int
11. ObSetIntegerLineStyle ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_STYLE
风格
ENUM_LINE_STYLE
12. ObSetIntegerLong ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_ZORDER 图形对象接收图表点击事件的优先级 (CHARTEVENT_CLICK)。当创建对象时省缺设为零值, 但若需要可以提升优先级。当应用对象其一覆盖其它时, 仅有它们之中优先级最高的一个将接收 CHARTEVENT_CLICK 事件。
long

ObSetString ENUM_OBJECT_PROPERTY_STRING OBJPROP_NAME 对象名
string
OBJPROP_TEXT 对象描述 (在对象里包含的文本) string
OBJPROP_TOOLTIP 工具提示文本。如果属性未设置, 则自动生成显示工具提示。为了禁止工具提示, 为它设置数值 "\n" (新行) string
OBJPROP_FONT 字体 string
OBJPROP_SYMBOL 图表对象的符号 string

 

使用 ObjectSetDouble(...), ObjectSetInteger(...)ObjectSetString(...) 配合一个指定修饰符:


名称
枚举 属性 简要描述 属性类型
1. ObSetDoubleMod ENUM_OBJECT_PROPERTY_DOUBLE OBJPROP_PRICE 价格坐标 - double, 修饰符=锚点号 double
OBJPROP_LEVELVALUE 级别值 -double, 修饰符=级别号
double
2.
ObSetIntegerLevelColorMod ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_LEVELCOLOR 级别线颜色 - color, 修饰符=级别号
color
3.
ObSetIntegerLevelStyleMod
ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_LEVELSTYLE
级别线风格 ENUM_LINE_STYLE, 修饰符=级别号
ENUM_LINE_STYLE
4.
ObSetIntegerLevelWidthMod
ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_LEVELWIDTH
级别线宽度 - int, 修饰符=级别号
int
5. ObSetIntegerTimeMod ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_TIME
时间坐标 - datetime, 修饰符=锚点号
datetime
6. ObSetStringMod ENUM_OBJECT_PROPERTY_STRING OBJPROP_LEVELTEXT 级别描述 - string, 修饰符=级别号 string
OBJPROP_BMPFILE
BMP 文件名, 用于位图级别对象 - string。参见参考里的 资源。修饰符: 0-开状态, 1-关状态 string

 

附加函数:



bool ObDelete (long chart_ID,string name)
删除指定名称的单个对象

 

III. 用法:

您可以将它用作包含文件, 或您可以从中拷贝确定的函数到您的源代码里。

如果您选择第二种方法, 我认为第一种作为包含文件的方法更好。一旦您实现了所有必要的函数调用, 您可以删除包含指示符 (#include...)。

之后, 编译器将指出哪些函数您需要从包含文件里拷贝。

作为包含文件使用:

  1. 保存附件文件 ObjectCreateAndSet.mqh 至 "Include" 文件夹。为此, 您可以使用在 MetaEditor 中的 浏览 窗口。在 浏览 窗口里, 右键点击 "Include" 文件夹并选择 "打开文件夹"。

  2. 为了在您的代码里使用程序库, 从文件开始拷贝 #include... 行, 并将之粘贴到您的源代码里:
    #include <ObjectCreateAndSet.mqh>
    附件里的脚本提供里一个包含程序库的例子。

  3. 之后, 编译您的代码。它将在您开始输入包含函数的名字时, 在工具提示里看到匹配信息:

在输入其头几个字母后, 工具提示里出现函数的完整名称

图例.1. 在输入其头几个字母后, 工具提示里出现函数的完整名称


图例.2. 在工具提示里的函数参数

通过此种方法, 您可以使用 MetaEditor 工具提示里的 函数列表 按钮, 以便快速查看当前文件里的函数列表:

图例.3. 显示当前使用文件里的函数列表的按钮

当您按此按钮时, 会出现一个下拉清单。为了移至特定函数, 在清单里点击它的名字。

图例.4. 按下按钮 打开文件里的函数清单 (对于快速移动到确定函数极其有用)

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

ColorLinearRegSlope_V2_HTF ColorLinearRegSlope_V2_HTF

指标 ColorLinearRegSlope_V2 在输入参数中有时间帧选项。

ColorLeManTrend_HTF ColorLeManTrend_HTF

指标 ColorLeManTrend 在输入参数中有时间帧选项。

ColorMomentum_AMA_HTF ColorMomentum_AMA_HTF

指标 ColorMomentum_AMA 在输入参数中有时间帧选项。

ColorMaRsi-Trigger_HTF ColorMaRsi-Trigger_HTF

指标 ColorMaRsi-Trigger 在输入参数中有时间帧选项。