Если этот индикатор не работает у вас. И в MetaEditor вашего торгового терминала при компиляции файла с этим индикатором выходят такие сообщения об ошибках (это может быть, например, при его компиляции для 1150-го билда MetaTrader5):
То для компиляции и работы этого индикатора:
1. Скопируйте эту функцию и добавьте её в конец кода индикатора:
//+------------------------------------------------------------------+ //| Удаление объектов по общему префиксу в именах объектов | //|(и типу объекта, при необходимости): | //| 2014 (последние изменения: 14.07.2015), Dina Paches | //| https://login.mql5.com/ru/users/dipach | //+------------------------------------------------------------------+ //| string prefix_obj = общий префикс в именах объектов | //| long chart_ID = идентификатор графика | //| int sub_window=-1 = индекс окна | //| int type=-1 = тип объекта (либо вместо int - тип объекта по | //| перечислению ENUM_OBJECT) | //| int start_pos=-1 = начальная позиция подстроки общего префикса в | //| имени объектов | //+------------------------------------------------------------------+ void ObDeleteN(string prefix_obj,int chart_ID=0,int sub_window=-1, int type=-1,int start_pos=0) { int quantObj=ObjectsTotal(chart_ID,sub_window,type); if(quantObj>0) { int count=0; int prefixLen=StringLen(prefix_obj); string name[]; ArrayResize(name,quantObj,quantObj+1); ArraySetAsSeries(name,true); for(int i=quantObj;i>=0;i--) { string objNameX=ObjectName(chart_ID,i,sub_window,type); string findValue=StringSubstr(objNameX,start_pos,prefixLen); if(StringCompare(findValue,prefix_obj,true)==0) { count=count+1; name[count-1]=objNameX; } } if(count>0) { ArrayResize(name,count,count+1); for(int i=count-1;i>=0; i--) { ObjectDelete(chart_ID,name[i]); } } } else return; } //+------------------------------------------------------------------+
2. Поставьте в разделах кода OnDeinit() и OnChartEvent() двойную косую черту "//" прямо перед этой строчкой:
ObjectsDeleteAll(0,prefixObj,0,-1);
3. Скопируйте и внесите в код индикатора эту строку (поставьте её под строкой выше и, поскольку строка выше встречается два раза в коде, то и эту строчку надо поставить в двух местах):
ObDeleteN(prefixObj,0,0);
4. В итоге, участки кода с не рабочей, к примеру, в билде 1150 разновидностью функции, станут выглядеть как-то так в коде:
//ObjectsDeleteAll(0,prefixObj,0,-1); ObDeleteN(prefixObj,0,0);
5. После этого скомпилируйте код. Сообщения об ошибках исчезнут и индикатор будет готов к работе на чартах билда 1150 MetaTrader5.
P./S.: Будут вопросы - пишите здесь в обсуждении или в личку.
Уф... как камень с души свалился. "Кто ищет - тот всегда найдёт"(с) сработало, к счастью, в этот раз.
Нашла всё-таки прототипы варианта функции выше.
И теперь могу сказать адресно большое спасибо за подробную схему Ковалёву, автору учебника, Артёму и неизвестному мне по имени 7777877
P./S.: В своё время, разбирая прототипы этой функции для себя, вникая в смысл и проводя эксперименты, умудрилась не сохранить сразу (не специально!) её источники из MQL4, на основе которых она, получается в итоге, была у меня составлена и применялась в разном виде для своих кодов на MQL4 и MQL5. Публично или в открытом виде ранее я код этой функции (или другие его варианты) не публиковала.
Помню, что по очень неудачным совпадениям сталкивалась с работами на сайте/не работающим поиском (либо было, что искала, как сейчас понимаю, не верно), когда совесть напоминала, что нужно найти источники. В т.ч., помня, что видела инфу по схеме на форуме, напрочь не помнила об учебнике. Соответственно, откладывала на "потом".
Так-то, относясь с уважением к чужому труду, стараюсь по возможности сразу копировать себе инфу, откуда/от кого что взяла.
Поэтому искренне рада, что без каких-либо намеков или напоминаний со стороны, всё-таки нашла первоисточники-прототипы этой функции для себя.
Просьба выложить код индикатора с внесенными изменениями, для меня темный лес а очень нужен! У самого не получается. Если не сложно то скомпелированный файл для мт5!!
Заменена версия индикатора в Кодобазе на версию 1.01, с уже внесёнными изменениями, и теперь она доступна к скачиванию прямо со страницы этого индикатора.
В думках о замене кода, умудрилась удалить своё пояснение, что:
Заменённая на другую в версии 1.01 функция ObjectsDeleteAll(), для удаления объектов по префиксу их имён,
работает побыстрее, что способствует и увеличению
быстродействия работы кода.
Поэтому после официального перехода с 1150-го билда (вышедшего в то время, когда возможность функции ObjectsDeleteAll() удалять объекты по префиксу их имён ещё не была закреплена в Документации) на другой билд, оптимальнее будет изменить версию кода индикатора на с применением ObjectsDeleteAll():
Обновила-освежила код этого индикатора. В том числе, обнаружив, исправила огрехи при включении/выключении показа линий индикатора на графике (было, что не срабатывало включение показа линий после отключения).
Текущая версия: 1.39
Обнаружила, что в коде этого индикатора для МТ5 (версии 1.39), я не добавила дополненный пересчёт значений при prev_calculated=0, подобный тому, что есть в коде такого индикатора для МТ4. То есть, при работе версии 1.39 есть вероятность ситуаций, когда при prev_calculated=0 в таблице индикатора могут появляться нулевые значения.
Sorry.
Сейчас отправила на публикацию новую версию (1.42)
Поскольку модераторы CodeBase люди занятые и обновление может быть не скоро опубликовано, то прикреплю исправленную версию пока и здесь.
Спасибо большое модератору CodeBase.
Код обновлён днём до версии 1.42
P./S.: Прикреплённый выше файл удалила.
Вчера вышло обновление до версии 1.45 (я сейчас только зашла на сайт)
Из основного: Заменила функцию удаления индикатора с графика - исправила значение одного из её входных параметров.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
ID Lite Info MA:
Индикатор показывает значения Moving Averages (MA), дельты между значениями и дельты между МА.
Автор: Dina Paches