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 !
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)!
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!
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.
Die Funktion entfernt das Objekt mit dem angegebenen Namen aus dem angegebenen Chart.
boolObjectDelete( |
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.
Die Ausgabe war wie folgt:#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);
}
Dies sieht also tatsächlich nach einem Fehler aus, der dem Service Desk gemeldet werden muss.2016.12.11 11:12:29.999 TestObjectDelete (EURUSD.m,H4) Result of Deleteing non-existing Chart Object: true
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:
Die Ausgabe war wie folgt:#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);
}
Das sieht also tatsächlich nach einem Fehler aus, der dem Service Desk gemeldet werden muss.2016.12.11 11:12:29.999 TestObjectDelete (EURUSD.m,H4) Result of Deleteing non-existing Chart Object: true
danke für Ihre Zeit :)
Werden Sie es dem Service Desk melden?
Ja, ich werde es schreiben. Ich habe auf Ihre Bestätigung gewartet. Danke.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
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?