#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
*/
}
|