Wenn man einen Expert Advisor oder Indikator, Skript programmiert welcher auch Objekte z.b.
Pfeile, Texte, Linie... ins Chart Fenster zeichnet, müssen diese auch irgendwann wieder
gelöscht werden. Dafür gibt es eine einfache Funktion in MQL5 ObjectsDeleteAll()
Diese Funktion löschte alle Objekte des Charts leider auch diese, die vom
Expert Advisor garnicht erstellt wurden z.b.
von Hand erstellte Objekte. Ärgerlich!
Um solchen Ärger zu umgehen gibt es eine Funktion welche nur die Objekte löscht
die vor ihren Namen einen bestimmten Prefix enthalten.
z.b. erstellt dein Expert Advisor eine Trendlinie mit den Namen "WinLinie" nun wird
vor dem Namen ein vorher festgelegter Prefix jedesmal angefügt.
// legt den Prefix für alle deine Objekte fest und erstellt ein Objekt
string prefix = "tom-next.com";
ObjectCreate(0,prefix+"WinLinie",OBJ_TREND,0,time[6],high[],time[0],low[]);
Jetzt kann die folgende Löschfunktion nur die Objekte löschen mit dem enthalten Prefix.
// Funktion löscht alle Objekte auf dem Chart zum gehörenden Prefix
void obj_delete ( string prefix )
{
string name = "";
int total = ObjectsTotal(0) - 1;
for ( int i = total; i >= 0; i -- )
{
name = ObjectName( 0, i );
if ( StringFind( name, prefix ) >= 0 ) { ObjectDelete( 0, name ); }
}
}
Hier eine Lösung mit MQL5.
Wenn man einen Expert Advisor oder Indikator, Skript programmiert welcher auch Objekte z.b.
Pfeile, Texte, Linie... ins Chart Fenster zeichnet, müssen diese auch irgendwann wieder
gelöscht werden. Dafür gibt es eine einfache Funktion in MQL5 ObjectsDeleteAll()
Diese Funktion löschte alle Objekte des Charts leider auch diese, die vom
Expert Advisor garnicht erstellt wurden z.b.
von Hand erstellte Objekte. Ärgerlich!
Um solchen Ärger zu umgehen gibt es eine Funktion welche nur die Objekte löscht
die vor ihren Namen einen bestimmten Prefix enthalten.
z.b. erstellt dein Expert Advisor eine Trendlinie mit den Namen "WinLinie" nun wird
vor dem Namen ein vorher festgelegter Prefix jedesmal angefügt.
Jetzt kann die folgende Löschfunktion nur die Objekte löschen mit dem enthalten Prefix.
// Funktion löscht alle Objekte auf dem Chart zum gehörenden Prefix void obj_delete ( string prefix ) { string name = ""; int total = ObjectsTotal(0) - 1; for ( int i = total; i >= 0; i -- ) { name = ObjectName( 0, i ); if ( StringFind( name, prefix ) >= 0 ) { ObjectDelete( 0, name ); } } }