y a-t-il un bug dans mt5 ObjectDelete ?

 

Bonjour, je suis en train d'écrire un indicateur en MQL5, mais quoi que j'écrive comme nom de chaîne ObejectDelete retourne vrai ! même sur un graphique vide sans objets !

int ObjCount = ObjectsTotal(ChartID(),/*0=main subwindow*/0,/*all objectTypes*/-1) ;

bool deleteResult=ObjectDelete(ChartID(), "objet non existant") ;

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

voici le résultat :

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

ne devrait-il pas retourner false ?


 
Farzin Sadeghi:

Bonjour, je suis en train d'écrire un indicateur en MQL5, mais quoi que j'écrive comme nom de chaîne ObejectDelete retourne vrai ! même sur un graphique vide sans objets !

int ObjCount = ObjectsTotal(ChartID(),/*0=main subwindow*/0,/*all objectTypes*/-1) ;

bool deleteResult=ObjectDelete(ChartID(), "objet non existant") ;

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

voici le résultat :

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

ne devrait-il pas retourner false ?


voici le résultat du même code dans mt4 :

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

donc mt5 fonctionne mal !

 
Farzin Sadeghi:

voici le résultat du même code dans mt4 :

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

donc mt5 fonctionne mal !

Quelle version de MT5 utilisez-vous ? La build actuellement disponible est 1495 (09 déc 2016) !
 
Fernando Carreiro:
Quelle build de MT5 utilisez-vous ? La build actuellement disponible est 1495 (09 Dec 2016) !
oui , le mt5 est build 1495 , 2016.dec.09 , et metaeditor est 1495 aussi.
 
Farzin Sadeghi:
oui , le mt5 est build 1495 , 2016.dec.09 , et metaeditor est 1495 aussi.

Veuillez fournir un petit script de test/code indicateur complet que nous pouvons compiler et tester de notre côté pour voir s'il produit le même effet.

Si cela produit le même effet de notre côté, alors vous pouvez le signaler au Service Desk comme un possible bug !

Joignez-le comme un fichier complet, dans votre prochain post !

 
Fernando Carreiro:

Veuillez fournir un petit script de test/code indicateur complet que nous pouvons compiler et tester de notre côté pour voir s'il produit le même effet.

S'il produit le même effet de notre côté, alors vous pouvez le signaler au Service Desk comme un possible bug !

Attachez-le comme un fichier complet, dans votre prochain post !

Voici le même code dans mt5 et mt4. Les résultats sont différents mais le fichier d'aide dit la même chose.

ObjectDelete

Cette fonction supprime l'objet avec le nom spécifié du graphique spécifié.

boolObjectDelete(
longchart_id,// identifiant du graphique
string name// nom de l'objet
) ;

Paramètres

chart_id

[in] Identifiant du graphique. 0 signifie le graphique actuel.

name

[in] Nom de l'objet à supprimer.

Valeur de retour

Renvoie true si la suppression a réussi, sinon renvoie false.

 
Farzin Sadeghi: Voici le même code dans mt5 et mt4. Les résultats sont différents mais le fichier d'aide dit la même chose.
Pour m'assurer qu'il ne s'agissait pas d'un bug dans le code source de l'OP, j'ai recréé mon propre code et obtenu le même effet avec le code Indicator suivant, et j'ai effectivement obtenu le même résultat que l'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);
}
La sortie était la suivante :
2016.12.11 11:12:29.999 TestObjectDelete (EURUSD.m,H4)  Result of Deleteing non-existing Chart Object: true
Donc, cela ressemble effectivement à un bug qui doit être signalé au Service Desk.
 
Fernando Carreiro:
Pour m'assurer qu'il ne s'agissait pas d'un bogue dans le code source de l'OP, j'ai recréé mon propre code et obtenu le même effet avec le code Indicator suivant, et j'ai effectivement obtenu le même résultat que l'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);
}
La sortie était la suivante :
2016.12.11 11:12:29.999 TestObjectDelete (EURUSD.m,H4)  Result of Deleteing non-existing Chart Object: true
Donc, cela ressemble effectivement à un bug qui doit être signalé au Service Desk.
Merci pour votre temps :)
 
Farzin Sadeghi:
Merci pour votre temps :)
Allez-vous le signaler au Service Desk ?
 
Fernando Carreiro:
Allez-vous le signaler au Service Desk ?
Oui, je vais l'écrire. J'attendais votre confirmation. Merci.
 
Farzin Sadeghi:
Oui, je vais l'écrire. J'attendais votre confirmation. Merci.
Je vais le faire aussi pour aider à renforcer la question !