#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
#property script_show_inputs
enum ENUM_REMOVE_MODE
{
REMOVE_MODE_TRADE_ARROWS, // すべての矢印を削除する
REMOVE_MODE_AUTOTRADE // すべての自動売買矢印を削除する
};
input ENUM_REMOVE_MODE InpRemoveMethod = REMOVE_MODE_TRADE_ARROWS; /*Remove Method*/ // 削除対象(すべての矢印または自動売買矢印のみ)
//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数 |
//+------------------------------------------------------------------+
void OnStart()
{
//--- チャートIDおよび削除されたオブジェクトの数
long chart_id=ChartID();
int count=0;
ResetLastError();
//--- すべてのオブジェクトの削除が選択された場合
//--- OBJ_ARROW_BUYとOBJ_ARROW_SELLタイプのすべてのオブジェクトを削除し、これにより自動売買の取引アイコンも削除する
//--- チャート上に存在する同タイプの他のオブジェクトも削除する
if(InpRemoveMethod==REMOVE_MODE_TRADE_ARROWS)
{
count+=ObjectsDeleteAll(chart_id, -1, OBJ_ARROW_BUY);
count+=ObjectsDeleteAll(chart_id, -1, OBJ_ARROW_SELL);
}
//--- 自動売買の取引アイコンのみを削除することを選択した場合
//--- 名前に「autotrade」を含むオブジェクトをすべて削除し、
//--- 自動売買アイコンのみ削除し、他の矢印オブジェクトは残す
else
{
count=ObjectsDeleteAll(chart_id, "autotrade");
}
//--- グラフィックオブジェクトの削除中にエラーが発生した場合、報告して処理を終了する
if(GetLastError()!=ERR_SUCCESS)
{
PrintFormat("ObjectsDeleteAll() failed. Error %d. count=%d", GetLastError(), count);
return;
}
//--- チャートを即座に更新して変更を表示する
ChartRedraw(chart_id);
//--- 削除された矢印オブジェクトの数を操作ログで設定する
string type=(InpRemoveMethod==REMOVE_MODE_TRADE_ARROWS ?"OBJ_ARROW_BUY and OBJ_ARROW_SELL" : "with prefix \"autotrade\"");
PrintFormat("%d objects %s removed", count, type);
/*
result for InpRemoveMethod = REMOVE_MODE_TRADE_ARROWS:
116 objects OBJ_ARROW_BUY and OBJ_ARROW_SELL removed
result for InpRemoveMethod = REMOVE_MODE_AUTOTRADE:
131 objects with prefix "autotrade" removed
*/
}
|