Здравствуйте, я пишу индикатор на 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 работает неправильно!
вот результат того же кода в mt4 :
2016.12.11 14:00:10.141 Far-TestObjDelete EURUSD_e,H1: 38-false | ObjCount=0
Так что mt5 работает неправильно!
Какую сборку MT5 вы используете? Текущая доступная сборка - 1495 (09 декабря 2016 года)!
Да, mt5 - сборка 1495, 2016.dec.09, и metaeditor - тоже 1495.
Пожалуйста, предоставьте полный небольшой тестовый сценарий/код индикатора, который мы могли бы скомпилировать и протестировать на нашей стороне, чтобы увидеть, производит ли он такой же эффект?
Если на нашей стороне он будет работать так же, то вы можете сообщить об этом в службу поддержки как о возможной ошибке!
Прикрепите его как полный файл в следующем сообщении!
Пожалуйста, предоставьте полный небольшой тестовый сценарий/код индикатора, который мы могли бы скомпилировать и протестировать на нашей стороне, чтобы увидеть, производит ли он такой же эффект?
Если на нашей стороне он будет работать так же, то вы можете сообщить об этом в Service Desk как о возможной ошибке!
Прикрепите его как полный файл, в вашем следующем сообщении!
Вот один и тот же код в mt5 и mt4. Результаты разные, но в файле справки написано одно и то же.
ObjectDelete
Функция удаляет объект с указанным именем с указанного графика.
boolObjectDelete( |
Параметры
chart_id
[in] Идентификатор графика. 0 означает текущий график.
имя
[in] Имя удаляемого объекта.
Возвращаемое значение
Возвращает true, если удаление прошло успешно, в противном случае возвращает false.
Результат был следующим:#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
В продолжение, чтобы убедиться, что это не ошибка в источнике 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
Спасибо, что уделили время :)
Собираетесь ли вы сообщить об этом в Service Desk?
Да, я собираюсь написать. Я ждал вашего подтверждения. Спасибо.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте, я пишу индикатор на 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?