MQL4对象操作函数(二)详解

在MT4编程中,对象操作函数是构建图表交互的重要工具。本篇介绍第二部分的函数,这些函数在山海证券ZFX官网的MT4环境中同样适用,能帮助交易者灵活管理图形对象。

ObjectCreate() – 创建对象

ObjectDelete() – 删除对象

ObjectDescription() – 获取对象描述

ObjectFind() – 查找指定对象

ObjectGet() – 获取指定对象的属性值

ObjectSet() – 修改指定对象属性值

ObjectGetFiboDescription() – 获取斐波纳契对象描述

ObjectSetFiboDescription() – 设置斐波纳契对象描述

ObjectGetShiftByValue() – 计算并返回柱体索引

ObjectGetValueByShift() – 计算并返回指定柱体价格值

ObjectMove() – 移动对象

ObjectName() – 获取对象名

ObjectsDeleteAll() – 删除指定对象

ObjectSetText() – 设置对象描述

ObjectsTotal() – 获取指定类型对象总数

ObjectType() – 获取对象类型

下面针对几个常用函数进行详细说明,使开发者能够更清晰地理解其用法。

ObjectGetShiftByValue() – 计算并返回柱体索引

int ObjectGetShiftByValue(string name, double value) 该函数根据给定的价格值计算出对应的柱体索引(相对于当前柱的偏移量)。柱体索引通过第一坐标和第二坐标运用线性方程得出,适用于趋势线等相似对象。

参见 ObjectGetValueByShift() 函数。

参数:

name – 对象名称。value – 价格值。示例:

int shift=ObjectGetShiftByValue("MyTrendLine#123", 1.34);

ObjectGetValueByShift() – 计算并返回指定柱体价格值

double ObjectGetValueByShift(string name, int shift) 该函数计算并返回指定柱体的价格(相对于当前柱的偏移量)。柱索引由第一和第二坐标通过线性方程计算得出,适合趋势线等对象。

参见 ObjectGetShiftByValue() 函数。

参数:

name – 对象名称。shift – 柱体索引。示例:

double price=ObjectGetValueByShift("MyTrendLine#123", 11);

ObjectMove() – 移动对象

bool ObjectMove(string name, int point, datetime time1, double price1) 此函数可在图表中移动对象的坐标。对象根据类型不同可拥有1至3个坐标。若执行成功返回TRUE,否则返回FALSE。

对象坐标从0开始计数。

参数:

name – 对象名称。point – 坐标索引(0-2)。time1 – 新时间值。price1 – 新价格值。示例:

ObjectMove("MyTrend", 1, D'2005.02.25 12:30', 1.2345);

ObjectName() – 获取对象名

string ObjectName(int index) 该函数依据对象列表中的索引返回对应对象名称。

参数:

index – 对象列表中的索引,必须大于等于0且小于 ObjectsTotal() 的值。示例:

int obj_total=ObjectsTotal();
string name;
for(int i=0;i{
name=ObjectName(i);
Print(i,"物件名称为 " + name);
}

ObjectsDeleteAll() – 删除指定对象

int ObjectsDeleteAll(void window, void type) 在指定图表子窗口中删除特定类型的全部对象,并返回已删除的对象个数。

注:子窗口(若包含指标)编号从1开始。主窗口索引固定为0。若窗口索引错误或为-1,则删除所有图表中的对象。

若type值为-1或该参数缺失,则删除指定子窗口中的所有对象。

参数:

window – 可选参数,对象所在窗口索引,须≥-1(EMPTY默认)且小于WindowsTotal()值。type – 可选参数,要删除的对象类型,可为对象类型枚举或用EMPTY表示全部类型。示例:

ObjectsDeleteAll(2, OBJ_HLINE); // 删除第二子窗口全部水平线
ObjectsDeleteAll(2); // 删除第二子窗口所有对象
ObjectsDeleteAll(); // 删除图表中全部对象

ObjectSetText() – 设置对象描述

bool ObjectSetText(string name, string text, int font_size, void font, void text_color) 修改对象描述。对于OBJ_TEXT和OBJ_LABEL对象,该说明作为图表上的文本行显示。成功返回TRUE,否则返回FALSE。

font_size(字体大小)、font_name(字体名称)和text_color(文本颜色)参数仅用于OBJ_TEXT和OBJ_LABEL对象,其他类型忽略。

参数:

name – 对象名称。text – 描述文本。font_size – 字体大小。font – 字体名称。text_color – 文本颜色。示例:

ObjectSetText("text_object", "Hello world!", 10, "Times New Roman", Green);

ObjectsTotal() – 获取指定类型对象总数

int ObjectsTotal(void type) 返回图表中指定类型的对象总数。例如,在山海证券ZFX官网的MT4终端中,开发者常利用此函数遍历图形对象。

参数:

type – 可选参数,要统计的对象类型,可为任意对象类型枚举值,或用EMPTY表示全部类型。示例:

int obj_total=ObjectsTotal();
string name;
for(int i=0;i{
name=ObjectName(i);
Print(i,"对于 #的对象名称",i," is " + name);
}

ObjectType() – 获取对象类型

int ObjectType(string name) 该函数返回指定对象的类型值。

参数:

name – 对象名称。示例:

if(ObjectType("line_object2")!=OBJ_HLINE) return(0);