Удаляете в советнике или в эксперте? Удаляете на каждом тике или в OnDelete? Эти объекты нарисовала программа которая пытается удалить или Ваша программ пытается удалить чужие объекты? Удаление инициализируете при смене таймфрейма или когда выгружаете терминал из ОЗУ? Удаление инициализируете при удалении графика?
В общем опишите подробно, ЧТО, КТО, КАК и ГДЕ.
Удаляю в советнике. Эти объекты нарисовала моя программа и пытается удалить по окончании работы в OnDeinit
IuriiPrugov: Удаляю в советнике. Эти объекты нарисовала моя программа и пытается удалить по окончании работы в OnDeinit
Причина OnDeinit: вырвали шнур компьютера из розетки, переключили таймфрейм (или сменили символ), вручную (или другой програмой) закрыли график на котором расположена Ваша программа???
Тип Вашей программы: ???
Сколько объектов стрелок создаёт Ваша программа? В настройках терминала сколько указано отображать баров? Объекты (стрелки) попадают в область слева графика за границу количество отображаемых баров?
Сколько времени между созданием объектов и началом удаления проходит?
Торговая платформа обладает множеством настроек, что позволяет организовать работу в ней так, как это удобно именно вам. Выполните команду " Настройки" меню "Сервис" или нажмите "Ctrl+O". Графики — общая настройка отображения ценовых графиков, а также настройка параметров управления объектами: выделение объектов после их создания, немедленная...
Код создания индикаторов. Интересует, как именно Вы задаёте путь к индикатору в iCustom и/или IndicatorCreate
Билд 2530.
В советнике:
staticstring zigzag="ZigZag_Channel";
staticint depth=5000; //Кол-во баровstaticint tf=PERIOD_CURRENT; //Таймфреймstaticbool WriteInfo=false; //Записывать данные в конец инф. буферовstaticstring BuferUpInd="donchian_channel_pMTF"; //Имя индикатора верхней границы каналаstaticint upbuffer=0; //Номер буфера верхней границы каналаstaticstring paramsUp="i:47,i:0"; //Строка с настройками индикатора верхней границы канала -- период и тайм фрейм// static string paramsUp="i:"+DonZZ_Period+",i:0"; //Строка с настройками индикатора верхней границы канала -- период и тайм фреймstaticstring BuferDnInd="donchian_channel_pMTF"; //Имя индикатора нижней границы каналаstaticint dnbuffer=1; //Номер буфера нижней границы каналаstaticstring paramsDn="i:47,i:0"; //Строка с настройками индикатора верхней границы канала -- период и тайм фрейм// static string paramsDn="i:"+DonZZ_Period+",i:0"; //Строка с настройками индикатора верхней границы канала -- период и тайм фрейм
handle_DonZZ=iCustom(_Symbol,_Period,zigzag,depth,tf,WriteInfo,BuferUpInd,upbuffer,paramsUp,BuferDnInd,dnbuffer,paramsDn);
if(handle_DonZZ==INVALID_HANDLE)
{
PrintFormat("Failed to create handle of the handle_DonZZ indicator for the symbol %s/%s, error code %d",
Symbol(),EnumToString(Period()),GetLastError());
return(INIT_FAILED);
}
Из индикатора вызывается другой индикатор, указанный в настройках советника, в индикаторе:
Из индикатора вызывается другой индикатор, указанный в настройках советника, в индикаторе:
Раньше всё работало корректно - сейчас не пойму, это ошибка неработоспособности или просто предупреждение?
Как решить проблему?
Представленных данных все равно недостаточно, поэтому проверьте сами как пишется имя инидкатора и соответствует ли оно новому алгоритму поиска индикатора в https://www.mql5.com/ru/forum/342947
Представленных данных все равно недостаточно, поэтому проверьте сами как пишется имя инидкатора и соответствует ли оно новому алгоритму поиска индикатора в https://www.mql5.com/ru/forum/342947
MQL5: Изменен алгоритм загрузки пользовательских индикаторов с помощью iCustom.
Если перед именем пользовательского индикатора указан обратный слеш '\', то EX5-файл индикатора ищется относительно корневой папки MQL5. Таким образом при вызове iCustom(Symbol(), Period(), "\FirstIndicator"...) индикатор будет загружаться как MQL5\FirstIndicator.ex5. Если по этому пути файла не окажется, вернется ошибка 4802 (ERR_INDICATOR_CANNOT_CREATE).
Если же путь не начинается с '\', то поиск и загрузка индикатора производятся в следующей последовательности:
Сначала EX5-файл индикатора ищется в той же папке, где находится EX5-файл вызывающей программы. Например, советник CrossMA.EX5 находится в папке MQL5\Experts\MyExperts и содержит вызов iCustom(Symbol(), Period(), "SecondIndicator"...) – тогда поиск индикатора производится по пути MQL5\Experts\MyExperts\SecondIndicator.ex5.
Если индикатор не найден в том же каталоге, то поиск производится относительно корневой директории индикаторов MQL5\Indicators. То есть ищется файл MQL5\Indicators\SecondIndicator.ex5. Если индикатор не найден по обоим путям, то функция вернет INVALID_HANDLE и будет взведена ошибка 4802 (ERR_INDICATOR_CANNOT_CREATE).
Если путь к индикатору задан в поддиректории, например как MyIndicators\ThirdIndicator, то сначала поиск ведется в папке вызывающей программы (советник находится в папке MQL5\Experts\MyExperts) по пути MQL5\Experts\MyExperts\MyIndicators\ThirdIndicator.ex5, а затем в случае неуспеха ищется файл MQL5\Indicators\MyIndicators\ThirdIndicator.ex5. При этом разделителем в пути нужно обязательно указывать двойной обратный слеш '\\', например, iCustom(Symbol(), Period(), "MyIndicators\\ThirdIndicator"...).
Также при обнаружении в коде программы вызова пользовательского индикатора через iCustom, компилятор будет неявно добавлять директиву "#property tester_indicator XXX", если таковая отсутствует.
Как видно из кода, у меня нет обратного слеш, а значит индикатор в советнике ищется не из корневой папки, а должен искаться в папке с советником, а потом в папке с индикаторами.
В индикаторе индикатор создается через IndicatorCreate .
Поэтому вопрос остается актуальным.
К тому же, я так и не понял, как понимать это сообщение в логе, как ошибку или как окончательное заключение, что индикатор не найден?
Кроме того, из советника напрямую не вызывается индикатор donchian_channel_pMTF, он вызывается из индикатора!
Как видно из кода, у меня нет обратного слеш, а значит индикатор в советнике ищется не из корневой папки, а должен искаться в папке с советником, а потом в папке с индикаторами.
Нет, ничего не видно. Ищите сами, пожалуйста
Из индикатора вызывается другой индикатор, указанный в настройках советника, в индикаторе:
Как я могу найти? Вы цитируете код индикатора про изменение IndicatorCreate ничего не говорилось. К сожалению код индикатора не мой, и я его почти не понимаю :(
Или вот пишет при оптимизации совсем другого советника.
2020.07.2115:40:24.690 Tester expert file F:\FX\Открытие Брокер_Demo\MQL5\Experts\ZigZag_Channel.ex5 open error [2]
А код вызова тут явный, ранее приводил.
staticstringzigzag="ZigZag_Channel";
staticint depth=5000; //Кол-во баровstaticint tf=PERIOD_CURRENT; //Таймфреймstaticbool WriteInfo=false; //Записывать данные в конец инф. буферовstaticstring BuferUpInd="donchian_channel_pMTF"; //Имя индикатора верхней границы каналаstaticint upbuffer=0; //Номер буфера верхней границы каналаstaticstring paramsUp="i:47,i:0"; //Строка с настройками индикатора верхней границы канала -- период и тайм фрейм// static string paramsUp="i:"+DonZZ_Period+",i:0"; //Строка с настройками индикатора верхней границы канала -- период и тайм фреймstaticstring BuferDnInd="donchian_channel_pMTF"; //Имя индикатора нижней границы каналаstaticint dnbuffer=1; //Номер буфера нижней границы каналаstaticstring paramsDn="i:47,i:0"; //Строка с настройками индикатора верхней границы канала -- период и тайм фрейм// static string paramsDn="i:"+DonZZ_Period+",i:0"; //Строка с настройками индикатора верхней границы канала -- период и тайм фрейм
handle_DonZZ=iCustom(_Symbol,_Period,zigzag,depth,tf,WriteInfo,BuferUpInd,upbuffer,paramsUp,BuferDnInd,dnbuffer,paramsDn);
if(handle_DonZZ==INVALID_HANDLE)
{
PrintFormat("Failed to create handle of the handle_DonZZ indicator for the symbol %s/%s, error code %d",
Symbol(),EnumToString(Period()),GetLastError());
return(INIT_FAILED);
}
Пара часов работы - очень хорошо. Соберу стату - дам знать.
HistorySelect
SymbolInfoTick
Удаляете в советнике или в эксперте? Удаляете на каждом тике или в OnDelete? Эти объекты нарисовала программа которая пытается удалить или Ваша программ пытается удалить чужие объекты? Удаление инициализируете при смене таймфрейма или когда выгружаете терминал из ОЗУ? Удаление инициализируете при удалении графика?
В общем опишите подробно, ЧТО, КТО, КАК и ГДЕ.
Как это понимать при оптимизации?
Почему индикаторы ищет в корне MQL5?
Предоставьте пожалуйста больше деталей:
Интересует, как именно Вы задаёте путь к индикатору в iCustom и/или IndicatorCreate
Удаляю в советнике. Эти объекты нарисовала моя программа и пытается удалить по окончании работы в OnDeinit
Причина OnDeinit: вырвали шнур компьютера из розетки, переключили таймфрейм (или сменили символ), вручную (или другой програмой) закрыли график на котором расположена Ваша программа???
Тип Вашей программы: ???
Сколько объектов стрелок создаёт Ваша программа? В настройках терминала сколько указано отображать баров? Объекты (стрелки) попадают в область слева графика за границу количество отображаемых баров?
Сколько времени между созданием объектов и началом удаления проходит?ObjectsDeleteAll(0,"Arrow",0,OBJ_ARROW);
может удалить часть стрелок,может все,а может не удалить ни одну
а так?: ObjectsDeleteAll(0,"Arrow");
когда-то давно (1900е билды) был такой глюк. помогал вызов ObjectsTotal(0); перед ObjectsDeleteAll().
Предоставьте пожалуйста больше деталей:
Интересует, как именно Вы задаёте путь к индикатору в iCustom и/или IndicatorCreate
Билд 2530.
В советнике:
Из индикатора вызывается другой индикатор, указанный в настройках советника, в индикаторе:
Раньше всё работало корректно - сейчас не пойму, это ошибка неработоспособности или просто предупреждение?
Как решить проблему?
Билд 2530.
В советнике:
Из индикатора вызывается другой индикатор, указанный в настройках советника, в индикаторе:
Раньше всё работало корректно - сейчас не пойму, это ошибка неработоспособности или просто предупреждение?
Как решить проблему?
Представленных данных все равно недостаточно, поэтому проверьте сами как пишется имя инидкатора и соответствует ли оно новому алгоритму поиска индикатора в https://www.mql5.com/ru/forum/342947
Представленных данных все равно недостаточно, поэтому проверьте сами как пишется имя инидкатора и соответствует ли оно новому алгоритму поиска индикатора в https://www.mql5.com/ru/forum/342947
Могу сбросить индикатор в личку - сбросить?
Из ссылки, что дали:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 2485: улучшения в iCustom и общая оптимизация в MQL5
MetaQuotes, 2020.06.05 08:41
Если перед именем пользовательского индикатора указан обратный слеш '\', то EX5-файл индикатора ищется относительно корневой папки MQL5. Таким образом при вызове iCustom(Symbol(), Period(), "\FirstIndicator"...) индикатор будет загружаться как MQL5\FirstIndicator.ex5. Если по этому пути файла не окажется, вернется ошибка 4802 (ERR_INDICATOR_CANNOT_CREATE).
Если же путь не начинается с '\', то поиск и загрузка индикатора производятся в следующей последовательности:
Также при обнаружении в коде программы вызова пользовательского индикатора через iCustom, компилятор будет неявно добавлять директиву "#property tester_indicator XXX", если таковая отсутствует.
Как видно из кода, у меня нет обратного слеш, а значит индикатор в советнике ищется не из корневой папки, а должен искаться в папке с советником, а потом в папке с индикаторами.
В индикаторе индикатор создается через IndicatorCreate .
Поэтому вопрос остается актуальным.
К тому же, я так и не понял, как понимать это сообщение в логе, как ошибку или как окончательное заключение, что индикатор не найден?
Кроме того, из советника напрямую не вызывается индикатор donchian_channel_pMTF, он вызывается из индикатора!
Могу сбросить индикатор в личку - сбросить?
Могу сбросить индикатор в личку - сбросить?
Из ссылки, что дали:
Как видно из кода, у меня нет обратного слеш, а значит индикатор в советнике ищется не из корневой папки, а должен искаться в папке с советником, а потом в папке с индикаторами.
Нет, ничего не видно. Ищите сами, пожалуйста
Из индикатора вызывается другой индикатор, указанный в настройках советника, в индикаторе:
Нет, ничего не видно. Ищите сами, пожалуйста
Как я могу найти? Вы цитируете код индикатора про изменение IndicatorCreate ничего не говорилось. К сожалению код индикатора не мой, и я его почти не понимаю :(
Или вот пишет при оптимизации совсем другого советника.
А код вызова тут явный, ранее приводил.