#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
#define OBJ_NAME "TestObjectFind"
#define WND 0
/+------------------------------------------------------------------+
//| Script program start function |
/+------------------------------------------------------------------+
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;
}
//--- OBJ_NAME 객체가 chart_id가 있는 차트에 없다는 것을 저널에 보고합니다.
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.
*/
}
|