#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
#define OBJ_NAME "TestObjectFind"
#define WND 0
//+------------------------------------------------------------------+
//| 脚本程序起始函数 |
//+------------------------------------------------------------------+
void OnStart()
{
//--- 图表 ID
long chart_id=ChartID();
//--- 如果在 WND 窗口中的图表上发现了 OBJ_NAME 图形对象,
//--- 报告并完成工作
ResetLastError();
if(ObjectFind(chart_id, OBJ_NAME)==WND)
{
PrintFormat("A graphic object named \"%s\" exists on chart with ID %I64d", OBJ_NAME, chart_id);
return;
}
//--- 如果未发现对象
else
{
//--- 如果最近的错误不是 4202 ("图形对象未找到")
//--- 报告错误并退出
if(GetLastError()!=ERR_OBJECT_NOT_FOUND)
{
Print("ObjectFind() failed. Error ", GetLastError());
return;
}
//--- 在日志中报告 chart_id 对应的图表中没有 OBJ_NAME 对象
PrintFormat("There is no graphic object named \"%s\" on the chart with ID #%I64d. Let's create it.", OBJ_NAME, chart_id);
//--- 在 WND 窗口中创建名为 OBJ_NAME 的垂直线对象
ResetLastError();
if(!ObjectCreate(chart_id, OBJ_NAME, OBJ_VLINE, WND, TimeCurrent(), 0))
{
Print("ObjectCreate() failed. Error ", GetLastError());
return;
}
//--- 立即重绘图表以反映变化
ChartRedraw(chart_id);
//--- 检查是否存在已创建的对象
if(ObjectFind(chart_id, OBJ_NAME)!=WND)
{
Print("ObjectFind() failed. Error ", GetLastError());
return;
}
//--- 如果对象已创建,在日志中报告,
//--- 等待一秒并删除所创建的对象
PrintFormat("Now a graphic object named \"%s\" exists on the chart with ID #%I64d. Let's delete it.", OBJ_NAME, chart_id);
Sleep(1000);
ObjectDelete(chart_id, OBJ_NAME);
//--- 立即重绘图表以反映变化
ChartRedraw(chart_id);
}
/*
结果:
There is no graphic object named "TestObjectFind" on the chart with ID #133246248352168439. Let's create it.
Now a graphic object named "TestObjectFind" exists on the chart with ID #133246248352168439. Let's delete it.
*/
}
|