#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(Graphical object not found)でなかった場合
//--- エラーを報告して終了する
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;
}
//--- オブジェクトが作成された場合は、これを操作ログで報告し、
//--- 1秒待ってから作成されたグラフィックオブジェクトを削除する
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.
*/
}
|