Gibt es einen Fehler in mt5 ObjectDelete?

 

Hallo, ich schreibe einen Indikator in MQL5, aber was auch immer ich schreibe als String-Name ObejectDelete gibt true! auch auf einem leeren Diagramm mit keine Objekte!

int ObjCount = ObjectsTotal(ChartID(),/*0=Hauptteilfenster*/0,/*alle ObjektTypen*/-1);

bool deleteResult=ObjectDelete(ChartID(), "nicht vorhandenes Objekt");

Print(__LINE__,"-",deleteResult," | ObjCount=",ObjCount);

hier ist das Ergebnis :

2016.12.11 13:46:38.385 Far-Test (EURUSD,H1) 37-true | ObjCount=0

Sollte es nicht false zurückgeben?


 
Farzin Sadeghi:

Hallo, ich schreibe einen Indikator in MQL5, aber was auch immer ich schreibe als String-Name ObejectDelete gibt true! auch auf einem leeren Diagramm mit keine Objekte!

int ObjCount = ObjectsTotal(ChartID(),/*0=Hauptteilfenster*/0,/*alle ObjektTypen*/-1);

bool deleteResult=ObjectDelete(ChartID(), "nicht vorhandenes Objekt");

Print(__LINE__,"-",deleteResult," | ObjCount=",ObjCount);

hier ist das Ergebnis :

2016.12.11 13:46:38.385 Far-Test (EURUSD,H1) 37-true | ObjCount=0

Sollte es nicht false zurückgeben ?


Hier ist das Ergebnis des gleichen Codes in mt4 :

2016.12.11 14:00:10.141 Far-TestObjDelete EURUSD_e,H1: 38-false | ObjCount=0

mt5 arbeitet also falsch !

 
Farzin Sadeghi:

Hier ist das Ergebnis des gleichen Codes in mt4 :

2016.12.11 14:00:10.141 Far-TestObjDelete EURUSD_e,H1: 38-false | ObjCount=0

mt5 arbeitet also falsch !

Welches Build von MT5 verwenden Sie? Der aktuell verfügbare Build ist 1495 (09 Dec 2016)!
 
Fernando Carreiro:
Welches Build von MT5 verwenden Sie? Der aktuell verfügbare Build ist 1495 (09 Dec 2016)!
Ja, der MT5 ist Build 1495, 2016.dec.09, und Metaeditor ist auch 1495.
 
Farzin Sadeghi:
Ja, die mt5 ist Build 1495, 2016.dec.09, und Metaeditor ist auch 1495.

Bitte stellen Sie uns ein komplettes kleines Testskript/einen Indikatorcode zur Verfügung, das/den wir kompilieren und auf unserer Seite testen können, um zu sehen, ob es auch den gleichen Effekt erzeugt?

Wenn es auf unserer Seite dasselbe tut, können Sie es dem Service Desk als möglichen Fehler melden!

Fügen Sie sie als vollständige Datei in Ihrem nächsten Beitrag an!

 
Fernando Carreiro:

Bitte stellen Sie uns ein komplettes kleines Testskript/einen Indikatorcode zur Verfügung, das/den wir kompilieren und auf unserer Seite testen können, um zu sehen, ob es auch den gleichen Effekt erzeugt?

Wenn es auf unserer Seite dasselbe tut, können Sie es dem Service Desk als möglichen Fehler melden!

Fügen Sie es als vollständige Datei in Ihrem nächsten Beitrag ein!

Hier ist derselbe Code sowohl in mt5 als auch in mt4. Die Ergebnisse sind unterschiedlich, aber die Hilfedatei sagt dasselbe.

ObjectDelete

Die Funktion entfernt das Objekt mit dem angegebenen Namen aus dem angegebenen Chart.

boolObjectDelete(
longchart_id,// Kennung des Diagramms
string name// Objektname
);

Parameter

Diagramm_id

[in] Kennung des Diagramms. 0 bedeutet das aktuelle Diagramm.

name

[in] Name des zu löschenden Objekts.

Rückgabewert

Gibt true zurück, wenn der Löschvorgang erfolgreich war, andernfalls false.

 
Farzin Sadeghi: Hier ist derselbe Code sowohl in mt5 als auch in mt4. Die Ergebnisse sind unterschiedlich, aber die Hilfedatei sagt dasselbe.
Um sicherzugehen, dass es sich nicht um einen Fehler im Quellcode des Auftraggebers handelt, habe ich meinen eigenen Code nachgebaut und den gleichen Effekt mit dem folgenden Indikatorcode erzielt. Auch ich habe tatsächlich das gleiche Ergebnis wie der Auftraggeber erhalten:
#property strict
#property indicator_chart_window

int OnInit()
{
   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],
   const double &open[], const double &high[], const double &low[], const double &close[],
   const long &tick_volume[], const long &volume[], const int &spread[])
{
   static bool boolFirstTime = true;
  
   if( boolFirstTime )
   {
      boolFirstTime = false;
      bool boolDeleteResult = ObjectDelete( 0, "Non-existing Object" );
      Print("Result of Deleteing non-existing Chart Object: ", boolDeleteResult );
   }
  
   return(rates_total);
}
Die Ausgabe war wie folgt:
2016.12.11 11:12:29.999 TestObjectDelete (EURUSD.m,H4)  Result of Deleteing non-existing Chart Object: true
Dies sieht also tatsächlich nach einem Fehler aus, der dem Service Desk gemeldet werden muss.
 
Fernando Carreiro:
Um sicherzugehen, dass es sich nicht um einen Fehler im Quelltext des Autors handelt, habe ich meinen eigenen Code nachgebaut und den gleichen Effekt mit dem folgenden Indikatorcode erzielt, und auch ich habe tatsächlich das gleiche Ergebnis wie der Autor erzielt:
#property strict
#property indicator_chart_window

int OnInit()
{
   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],
   const double &open[], const double &high[], const double &low[], const double &close[],
   const long &tick_volume[], const long &volume[], const int &spread[])
{
   static bool boolFirstTime = true;
  
   if( boolFirstTime )
   {
      boolFirstTime = false;
      bool boolDeleteResult = ObjectDelete( 0, "Non-existing Object" );
      Print("Result of Deleteing non-existing Chart Object: ", boolDeleteResult );
   }
  
   return(rates_total);
}
Die Ausgabe war wie folgt:
2016.12.11 11:12:29.999 TestObjectDelete (EURUSD.m,H4)  Result of Deleteing non-existing Chart Object: true
Das sieht also tatsächlich nach einem Fehler aus, der dem Service Desk gemeldet werden muss.
Vielen Dank für Ihre Zeit :)
 
Farzin Sadeghi:
danke für Ihre Zeit :)
Werden Sie das Problem an den Service Desk melden?
 
Fernando Carreiro:
Werden Sie es dem Service Desk melden?
Ja, das werde ich tun. Ich habe auf Ihre Bestätigung gewartet. Danke.
 
Farzin Sadeghi:
Ja, ich werde es schreiben. Ich habe auf Ihre Bestätigung gewartet. Danke.
Ich werde das auch tun, um das Thema zu verstärken!