forked from rosh/MQL5Book
55 lines
2.3 KiB
MQL5
55 lines
2.3 KiB
MQL5
//+------------------------------------------------------------------+
| |||
//| ObjectCleanup1.mq5 |
| |||
//| Copyright 2021, MetaQuotes Ltd. |
| |||
//| https://www.mql5.com |
| |||
//| |
| |||
//| The script deletes all objects with specific name prefix. |
| |||
//+------------------------------------------------------------------+
| |||
#property script_show_inputs
| |||
| |||
input bool UseCustomDeleteAll = false;
| |||
| |||
#include "ObjectPrefix.mqh"
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| Script program start function |
| |||
//+------------------------------------------------------------------+
| |||
void OnStart()
| |||
{
| |||
const int n = UseCustomDeleteAll ?
| |||
CustomDeleteAllObjects(0, ObjNamePrefix) :
| |||
ObjectsDeleteAll(0, ObjNamePrefix);
| |||
| |||
PrintFormat("%d objects deleted", n);
| |||
}
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| Self-made equivalent of ObjectsDeleteAll |
| |||
//+------------------------------------------------------------------+
| |||
int CustomDeleteAllObjects(const long chart, const string prefix,
| |||
const int window = -1, const int type = -1)
| |||
{
| |||
int count = 0;
| |||
const int n = ObjectsTotal(chart, window, type);
| |||
| |||
// NB: loop objects backwards in the chart internal list
| |||
// to preserve numbering while deleting from the tail
| |||
for(int i = n - 1; i >= 0; --i)
| |||
{
| |||
const string name = ObjectName(chart, i, window, type);
| |||
| |||
// straightforward approach is not useful much...
| |||
if(StringLen(prefix) == 0 || StringFind(name, prefix) == 0)
| |||
// until we need to select objects by special properties,
| |||
// such as coordinates, color, anchor point, etc,
| |||
// which we don't know yet - here is just a clue (see ObjectCleanup2.mq5)
| |||
// && ObjectGetInteger(0, name, OBJPROP_COLOR) == clrRed
| |||
// && ObjectGetInteger(0, name, OBJPROP_ANCHOR) == ANCHOR_TOP)
| |||
{
| |||
count += ObjectDelete(chart, name);
| |||
}
| |||
}
| |||
ChartRedraw();
| |||
return count;
| |||
}
| |||
//+------------------------------------------------------------------+
|