c'è un bug in mt5 ObjectDelete?

 

Ciao, sto scrivendo un indicatore in MQL5, ma qualsiasi cosa io scriva come nome di stringa ObejectDelete restituisce true! anche su un grafico vuoto senza oggetti!

int ObjCount = ObjectsTotal(ChartID(),/*0=sottofinestra principale*/0,/*tutti gli objectTypes*/-1);

bool deleteResult=ObjectDelete(ChartID(), "oggetto non esistente");

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

ecco il risultato:

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

non dovrebbe restituire false?


 
Farzin Sadeghi:

Ciao, sto scrivendo un indicatore in MQL5, ma qualsiasi cosa io scriva come nome di stringa ObejectDelete restituisce true! anche su un grafico vuoto senza oggetti!

int ObjCount = ObjectsTotal(ChartID(),/*0=sottofinestra principale*/0,/*tutti gli objectTypes*/-1);

bool deleteResult=ObjectDelete(ChartID(), "oggetto non esistente");

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

ecco il risultato:

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

non dovrebbe restituire false?


Ecco il risultato dello stesso codice in mt4:

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

quindi mt5 sta lavorando male!

 
Farzin Sadeghi:

ecco il risultato dello stesso codice in mt4 :

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

quindi mt5 sta lavorando male!

Che build di MT5 stai usando? L'attuale build disponibile è la 1495 (09 dicembre 2016)!
 
Fernando Carreiro:
Quale build di MT5 stai usando? L'attuale build disponibile è la 1495 (09 dicembre 2016)!
sì, la mt5 è la build 1495, 2016.dec.09, e anche metaeditor è 1495.
 
Farzin Sadeghi:
Sì, la mt5 è la build 1495, 2016.dec.09, e anche metaeditor è 1495.

Per favore, fornisci un piccolo script di prova/codice indicatore completo che possiamo compilare e testare dalla nostra parte per vedere se produce lo stesso effetto?

Se produce lo stesso effetto da noi, allora puoi segnalarlo al Service Desk come possibile bug!

Allegalo come file completo, nel tuo prossimo post!

 
Fernando Carreiro:

Per favore, fornisci un piccolo script di prova/codice indicatore completo che possiamo compilare e testare dalla nostra parte per vedere se produce lo stesso effetto?

Se produce lo stesso effetto sul nostro lato, allora potete segnalarlo al Service Desk come possibile bug!

Allegalo come file completo, nel tuo prossimo post!

Ecco lo stesso codice sia in mt5 che in mt4. i risultati sono diversi ma il file di aiuto dice lo stesso.

ObjectDelete

La funzione rimuove l'oggetto con il nome specificato dal grafico specificato.

boolObjectDelete(
longchart_id,// identificatore del grafico
string name// nome dell'oggetto
);

Parametri

chart_id

[Identificatore del grafico. 0 significa il grafico corrente.

nome

[in] Nome dell'oggetto da cancellare.

Valore di ritorno

Restituiscetrue se la rimozione ha avuto successo, altrimenti restituisce false.

 
Farzin Sadeghi: Ecco lo stesso codice sia in mt5 che in mt4. i risultati sono diversi ma il file di aiuto dice lo stesso.
In seguito, per assicurarmi che non fosse un bug nel codice sorgente dell'OP, ho ricreato il mio codice e ho ottenuto lo stesso effetto con il seguente codice Indicator, e anche io ho ottenuto lo stesso risultato dell'OP:
#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);
}
L'output era il seguente:
2016.12.11 11:12:29.999 TestObjectDelete (EURUSD.m,H4)  Result of Deleteing non-existing Chart Object: true
Quindi, questo sembra davvero un bug che deve essere segnalato al Service Desk.
 
Fernando Carreiro:
In seguito, per assicurarmi che non fosse un bug nel sorgente dell'OP, ho ricreato il mio codice e ho ottenuto lo stesso effetto con il seguente codice Indicator, e anche io ho ottenuto lo stesso risultato dell'OP:
#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);
}
L'output era il seguente:
2016.12.11 11:12:29.999 TestObjectDelete (EURUSD.m,H4)  Result of Deleteing non-existing Chart Object: true
Quindi, questo sembra davvero un bug che deve essere segnalato al Service Desk.
grazie per il tuo tempo :)
 
Farzin Sadeghi:
grazie per il tuo tempo :)
Hai intenzione di segnalarlo al Service Desk?
 
Fernando Carreiro:
Hai intenzione di segnalarlo al Service Desk?
Sì, ho intenzione di scriverlo. Aspettavo la tua conferma. grazie.
 
Farzin Sadeghi:
Sì, ho intenzione di scriverlo. Aspettavo la tua conferma, grazie.
Lo farò anch'io per aiutare a rafforzare la questione!