您的当前位置: 首页 > 交易产品 > 股票

MQL4对象操作函数基础解析

时间:2026-04-21 09:33:30

ObjectCreate() – 创建图表对象

ObjectDelete() – 删除指定对象

ObjectDescription() – 获取对象描述信息

ObjectFind() – 查找图表中的指定对象

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

ObjectSet() – 修改对象属性值

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

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

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

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

ObjectMove() – 移动图表对象位置

ObjectName() – 获取对象名称

ObjectsDeleteAll() – 删除全部指定对象

ObjectSetText() – 设置对象的文本描述

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

ObjectType() – 获取对象的类型标识

ObjectCreate() – 创建对象

bool ObjectCreate(string name, int type, int window, datetime time1, double price1, void time2, void price2, void time3, void price3) 此函数用于在指定的图表窗口中,根据给定的名称、类型和初始坐标创建对象。不同对象类型所需的坐标数量在1到3个之间。若函数执行成功,则返回TRUE,否则返回FALSE。如需了解具体错误详情,可调用GetLastError()函数。

对于OBJ_LABEL类型的对象,其坐标参数可忽略,应使用 ObjectSet() 函数来设定OBJPROP_XDISTANCE和OBJPROP_YDISTANCE属性。

请注意,图表子窗口(若其中加载了技术指标)的编号从1开始。图表主窗口始终存在,其索引值为0。

坐标参数必须以成对的方式传递:时间与价格。例如,OBJ_VLINE对象虽然仅需时间参数,但价格参数(可为任意值)也必须一同传递。

参数说明:

name - 对象的唯一名称。type - 对象类型,可从对象类型列表中选取。window - 要添加对象的窗口索引,该值需大于等于0且小于WindowsTotal()。time1 - 第一个点的时间。price1 - 第一个点的价格值。time2 - 第二个点的时间。price2 - 第二个点的价格值。time3 - 第三个点的时间。price3 - 第三个点的价格值。

示例代码:

// 创建新的文本对象 if(!ObjectCreate("text_object", OBJ_TEXT, 0, D'2004.02.20 12:30', 1.0045)) { Print("错误: 无法创建文本对象! 错误代码 #",GetLastError()); return(0); } // 创建新的标签对象 if(!ObjectCreate("label_object", OBJ_LABEL, 0, 0, 0)) { Print("错误: 无法创建label_object! 错误代码 #",GetLastError()); return(0); } ObjectSet("label_object", OBJPROP_XDISTANCE, 200); ObjectSet("label_object", OBJPROP_YDISTANCE, 100);

ObjectDelete() – 删除对象

bool ObjectDelete(string name) 此函数用于删除指定名称的对象。操作成功返回TRUE,失败则返回FALSE。

参数说明:

name - 要删除对象的名称。

示例:

ObjectDelete("text_object");

ObjectDescription() – 获取对象描述

string ObjectDescription(string name) 此函数返回指定对象的描述信息。对于OBJ_TEXT和OBJ_LABEL类型的对象,将返回为其设置的文本内容。

相关函数可参考 ObjectSetText()

参数说明:

name - 对象的名称。

示例:

// 将图表对象列表信息写入文件 int handle, total; string obj_name,fname; // 定义文件名称 fname="objlist_"+Symbol(); handle=FileOpen(fname,FILE_CSV|FILE_WRITE); if(handle!=false) { total=ObjectsTotal(); for(int i=0;i

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

double ObjectGet(string name, int index) 此函数返回指定对象的属性数值。如需错误详情,请调用GetLastError()函数。

相关函数可参考 ObjectSet()

参数说明:

name - 对象的名称。index - 对象属性的索引,可从对象属性枚举值中选取。

示例:

color oldColor=ObjectGet("hline12", OBJPROP_COLOR);

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

bool ObjectSet(string name, int index, double value) 此函数用于修改指定对象的属性值。操作成功返回TRUE,失败返回FALSE。调用GetLastError()可获取错误信息。

相关函数可参考 ObjectGet()

参数说明:

name - 对象的名称。index - 对象属性的索引,可从对象属性枚举值中选取。value - 要设定的新属性值。

示例:

// 将第一个坐标移动到最新柱的时间 ObjectSet("MyTrend", OBJPROP_TIME1, Time[0]); // 设置第二个斐波那契水平线数值 ObjectSet("MyFibo", OBJPROP_FIRSTLEVEL+1, 1.234); // 设置对象可视范围,使其在15分钟和1小时图表上显示 ObjectSet("MyObject", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15 | OBJ_PERIOD_H1);

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

string ObjectGetFiboDescription(string name, int index) 此函数返回斐波那契对象特定水平线的描述文本。水平线数量取决于对象类型,最多可达32条(索引0至31)。

调用GetLastError()函数可获取详细错误信息。

相关函数可参考 ObjectSetFiboDescription()

参数说明:

name - 对象的名称。index - 斐波那契水平线的索引(0-31)。

示例:

#include ... string text; for(int i=0;i<32;i++) { text=ObjectGetFiboDescription(MyObjectName,i); //---- 检查对象是否拥有少于32条水平线 if(GetLastError()!=ERR_NO_ERROR) break; Print(MyObjectName," 水平线 ",i," 描述: ",text); }

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

bool ObjectSetFiboDescription(string name, int index, string text) 此函数用于为斐波那契对象的指定水平线设置新的描述文本。水平线数量最多为32条(索引0至31)。

参数说明:

name - 对象的名称。index - 斐波那契水平线的索引(0-31)。text - 新的水平线描述文本。

示例:

ObjectSetFiboDescription("MyFiboObject",2,"第二条线");

掌握这些MQL4对象操作函数,对于在MetaTrader 4平台上进行自动化交易脚本开发至关重要。开发者可以通过系统学习来构建更复杂的图表分析工具。如需了解更多专业的交易平台知识与资源,可以参考兴业外汇官网提供的相关技术文档和社区支持。

Copyright © 2012-2026 兴业外汇 版权所有 网站地图