Создание робота - страница 6

 
SanAlex:

для удаления - там функция посложней 

и ещё нужно правильно прописать имя - есть индикаторы что и цифры прописывают, вот и цифры тогда нужно вписывать 

вот на картинке имена индикаторов у меня 

Файлы:
vn0wia.PNG  16 kb
 
SanAlex:

для удаления - там функция посложней 

А как же тогда пользоваться справочником MQL5, если там всё чётко прописано:

ObjectsDeleteAll

Удаляет все объекты в указанном графике, указанном подокне указанного графика, указанного типа. Существует два варианта функции:

int  ObjectsDeleteAll( 
   long  chart_id,            // идентификатор графика 
   int   sub_window=-1,       // индекс окна 
   int   type=-1              // тип объекта для удаления 
   ); 

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

int  ObjectsDeleteAll( 
   long           chart_id,   // идентификатор графика 
   const string     prefix,   // префикс имени объекта 
   int       sub_window=-1,   // индекс окна 
   int      object_type=-1    // тип объекта для удаления 
   );

Параметры

chart_id

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

prefix

[in]  Префикс, по которому будут удалены все объекты, чьи имена начинаются с данного набора символов. 
Префикс можно указывать как 'name' или 'name*' – оба варианта работают одинаково. 
Если в качестве префикса указана пустая строка, то будут удалены объекты с любым именем.

sub_window=-1

[in]  Номер подокна графика. 0 означает главное окно графика, -1 означает все подокна графика, включая главное окно.

type=-1

[in]  Тип объекта. Значение может быть одним из значений перечисления ENUM_OBJECT. -1 означает все типы.

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

Возвращает количество удаленных объектов. Для получения дополнительной информации об ошибке необходимо вызвать функцию функцию GetLastError().

Примечание

Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, 
которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. 
Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

По префиксу же и удаляю. Или чего-то недопонимаю?

С уважением, Владимир.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
 
MrBrooklin:

А как же тогда пользоваться справочником MQL5, если там всё чётко прописано:

По префиксу же и удаляю. Или чего-то недопонимаю?

С уважением, Владимир.

я справочником не когда не пользовался - методом тыканья, пока не заработает 

Вот скрипт слепил 

Файлы:
 

Уважаемые специалисты форума!

Может кто-нибудь подскажет о том, что не правильно понимаю значение слова префикс в программировании?

С уважением, Владимир.

 
MrBrooklin:

Уважаемые специалисты форума!

Может кто-нибудь подскажет о том, что не правильно понимаю значение слова префикс в программировании?

С уважением, Владимир.

Тоже самое что и в Русском https://www.linguee.com/english-russian/translation/code+prefix.html

Например: ENUM_ORDER_TYPE_FILLING -> префиксом в этом случае является перечисление, потом _ордер_тип_функция
code prefix - Russian translation – Linguee
code prefix - Russian translation – Linguee
  • www.linguee.com
surname or family name, t h e prefix o f w hich was separated в именном указ а тел е в связи с фа ми ли ей, префикс которой Настрой к и префикса: В Ы можете создать список номер о в префиксных но ме ров и установи т ь определенные пр еф иксные имена пользователя , дл я международных к одо в доступа и ко до в города. scientific education, an eth...
 
MrBrooklin:

А как же тогда пользоваться справочником MQL5, если там всё чётко прописано:

По префиксу же и удаляю. Или чего-то недопонимаю?

С уважением, Владимир.

Индекс окна вроде нет у Вас.

 
Valeriy Yastremskiy:

Индекс окна вроде нет у Вас.

Здравствуйте, Валерий!

В строке кода прописал chart_id окна "0", т.е. текущий график

   ObjectsDeleteAll(0,"Examples\\ZigzagColor");

или Вы имеете ввиду то, что ещё остсутствует "-1" после префикса? Вот так?

   ObjectsDeleteAll(0,"Examples\\ZigzagColor",-1);

Если так, то тоже пробовал - всё-равно не удаляет.

С уважением, Владимир.

 
MrBrooklin:

Здравствуйте, Валерий!

В строке кода прописал chart_id окна "0", т.е. окно главного графика

или Вы имеете ввиду то, что ещё остсутствует "-1" после префикса? Вот так?

Если так, то тоже пробовал - всё-равно не удаляет.

С уважением, Владимир.

Обычно я пошагово через принт или алерты, после получения хендла вывести его в алерт, и если можно название индикатора и индекс окна и идентификатор графика, после удаления вывести в алерт возврат функции удаления. И первый ноль это идентификатор графика, а после префикса индекс окна.

int DelObjV=ObjectsDeleteAll(0,"Examples\\ZigzagColor",-1,-1);
Alert ("DelObjV= " DelObjV);
 
Обычно хендл и расчётную часть в OnDeinit чищу и всё удаляется. Объект это не индикатор.
   IndicatorRelease(h_zz);
   ArrayFree(zz_buf);

https://www.mql5.com/ru/docs/chart_operations/chartindicatordelete

"Удаление индикатора с графика не означает, что расчетная часть индикатора также будет удалена из памяти терминала. Для освобождения хэндла индикатора используйте функцию IndicatorRelease()."

Документация по MQL5: Доступ к таймсериям и индикаторам / IndicatorRelease
Документация по MQL5: Доступ к таймсериям и индикаторам / IndicatorRelease
  • www.mql5.com
//|                                        Test_IndicatorRelease.mq5 | //|                        Copyright 2010, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Valeriy Yastremskiy:

Обычно я пошагово через принт или алерты, после получения хендла вывести его в алерт, и если можно название индикатора и индекс окна и идентификатор графика, после удаления вывести в алерт возврат функции удаления. И первый ноль это идентификатор графика, а после префикса индекс окна.

 Удаляем индикатор с графика с помощью функции 


bool  ChartIndicatorDelete( 

   long           chart_id,              // идентификатор графика 

   int            sub_window             // номер подокна 

   const string   indicator_shortname    // короткое имя индикатора 

   );

Причина обращения: