есть ли ошибка в mt5 ObjectDelete?

 

Здравствуйте, я пишу индикатор на MQL5, но что бы я не написал в качестве строкового имени ObejectDelete возвращает true! даже на пустом графике без объектов!

int ObjCount = ObjectsTotal(ChartID(),/*0=основное подокно*/0,/*все типы объектов*/-1);

bool deleteResult=ObjectDelete(ChartID(), "несуществующий объект");

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

вот результат :

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

Разве это не должно возвращать false?


 
Farzin Sadeghi:

Здравствуйте, я пишу индикатор на MQL5, но что бы я не написал в качестве строкового имени ObejectDelete возвращает true! даже на пустом графике без объектов!

int ObjCount = ObjectsTotal(ChartID(),/*0=основное подокно*/0,/*все типы объектов*/-1);

bool deleteResult=ObjectDelete(ChartID(), "несуществующий объект");

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

вот результат :

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

Разве это не должно возвращать false?


вот результат того же кода в mt4 :

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

Так что mt5 работает неправильно!

 
Farzin Sadeghi:

вот результат того же кода в mt4 :

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

Так что mt5 работает неправильно!

Какую сборку MT5 вы используете? Текущий доступный билд - 1495 (09 Dec 2016)!
 
Fernando Carreiro:
Какую сборку MT5 вы используете? Текущая доступная сборка - 1495 (09 декабря 2016 года)!
Да, mt5 - билд 1495, 2016.dec.09, и metaeditor - тоже 1495.
 
Farzin Sadeghi:
Да, mt5 - сборка 1495, 2016.dec.09, и metaeditor - тоже 1495.

Пожалуйста, предоставьте полный небольшой тестовый сценарий/код индикатора, который мы могли бы скомпилировать и протестировать на нашей стороне, чтобы увидеть, производит ли он такой же эффект?

Если на нашей стороне он будет работать так же, то вы можете сообщить об этом в службу поддержки как о возможной ошибке!

Прикрепите его как полный файл в следующем сообщении!

 
Fernando Carreiro:

Пожалуйста, предоставьте полный небольшой тестовый сценарий/код индикатора, который мы могли бы скомпилировать и протестировать на нашей стороне, чтобы увидеть, производит ли он такой же эффект?

Если на нашей стороне он будет работать так же, то вы можете сообщить об этом в Service Desk как о возможной ошибке!

Прикрепите его как полный файл, в вашем следующем сообщении!

Вот один и тот же код в mt5 и mt4. Результаты разные, но в файле справки написано одно и то же.

ObjectDelete

Функция удаляет объект с указанным именем с указанного графика.

boolObjectDelete(
longchart_id,// идентификатор графика
string name// имя объекта
);

Параметры

chart_id

[in] Идентификатор графика. 0 означает текущий график.

имя

[in] Имя удаляемого объекта.

Возвращаемое значение

Возвращает true, если удаление прошло успешно, в противном случае возвращает false.

 
Farzin Sadeghi: вот один и тот же код в mt5 и mt4. результаты разные, но в файле справки написано одно и то же.
В продолжение, чтобы убедиться, что это не ошибка в исходном коде OP, я воссоздал свой собственный код и получил тот же эффект с помощью следующего кода индикатора, и я тоже получил тот же результат, что и 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);
}
Результат был следующим:
2016.12.11 11:12:29.999 TestObjectDelete (EURUSD.m,H4)  Result of Deleteing non-existing Chart Object: true
Таким образом, это действительно похоже на ошибку, о которой необходимо сообщить в службу поддержки.
 
Fernando Carreiro:
В продолжение, чтобы убедиться, что это не ошибка в источнике OP, я воссоздал свой собственный код и получил тот же эффект с помощью следующего кода индикатора, и я тоже получил тот же результат, что и 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);
}
Результат был следующим:
2016.12.11 11:12:29.999 TestObjectDelete (EURUSD.m,H4)  Result of Deleteing non-existing Chart Object: true
Таким образом, это действительно похоже на ошибку, о которой необходимо сообщить в службу поддержки.
Спасибо за ваше время :)
 
Farzin Sadeghi:
Спасибо, что уделили время :)
Вы собираетесь сообщить об этом в Service Desk?
 
Fernando Carreiro:
Собираетесь ли вы сообщить об этом в Service Desk?
Да, я собираюсь написать об этом. Я ждал вашего подтверждения. спасибо.
 
Farzin Sadeghi:
Да, я собираюсь написать. Я ждал вашего подтверждения. Спасибо.
Я тоже так сделаю, чтобы помочь усилить проблему!
Причина обращения: