Проблема следующая:
Как только не пытался - графики все равно остаются
IndicatorRelease(Handl); - тоже не работает
https://www.mql5.com/ru/forum/12372 - это читал, перешерстил полгугла, так решения и не нашел.
Не пойму почему ChartIndicatorDelete выдает "Системная функция не разрешена для вызова", на кой тогда вообще нужна эта функция? Вроде все варианты ее использования перепробовал.
P.S.: подойдет так же решение вида "снос всех индикаторов с графика без разбора", если такое есть)
Заранее спасибо.
P.P.S.: Mql5
В какой функции Вы создаёте хэндл индикатора? И это у Вас индикатор создаёт индикатор или советник создаёт индикатор?
А откуда такая уверенность, что Ваш индикатор в списке индикаторов находится именно в первом подокне да и ещё на месте номер "0":
Stoc1ShortName=ChartIndicatorName(IDs,1,0);
А откуда такая уверенность, что Ваш индикатор в списке индикаторов находится именно в первом подокне да и ещё на месте номер "0":
Как определить номер подокна? https://www.mql5.com/ru/docs/standardlibrary/chart_object_classes/cchartobject/cchartobjectwindow - Window() - функция не определяется.
Даже если индикатор всего один - он не удаляется:
(пробовал даже циклом перебрать номера подокон :D )
int Handl; long IDs; int CWF; string ShortName; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- Handl=iMomentum(Symbol(),PERIOD_CURRENT,14,PRICE_CLOSE); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- Sleep(20*1000); IDs=ChartID(); ShortName=ChartIndicatorName(IDs,1,0); CWF=ChartWindowFind(IDs,ShortName); ChartIndicatorDelete(IDs,CWF,ShortName); }

- www.mql5.com
Чтобы что-то удалить с графика, это что-то нужно сначала туда покласть.

- www.mql5.com
Либо я чего-то не понимаю:
но, в любом случае выдает ошибку 4014
int Handl; long IDs; int CWF; string ShortName; int win; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- Handl=iMomentum(Symbol(),PERIOD_CURRENT,14,PRICE_CLOSE); IDs=ChartID(); ChartIndicatorAdd(IDs,0,Handl); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- Sleep(20*1000); ShortName=ChartIndicatorName(IDs,0,0); ChartIndicatorDelete(IDs,0,ShortName); Print(GetLastError()); } //+------------------------------------------------------------------+
У Вас же есть хендл индикатора:
if ( Handl != INVALID_HANDLE ) { IndicatorRelease( Handl ); ShortName=ChartIndicatorName(IDs,0,0); ChartIndicatorDelete( IDs, 0, ShortName ); }
Не удаляется
void OnTick() { //--- if(win==0){ Handl=iMomentum(Symbol(),PERIOD_CURRENT,14,PRICE_CLOSE); IDs=ChartID(); ChartIndicatorAdd(IDs,0,Handl); win++; } Sleep(20*1000); if ( Handl != INVALID_HANDLE ) { IndicatorRelease( Handl ); ShortName=ChartIndicatorName(IDs,0,0); ChartIndicatorDelete( IDs, 0, ShortName ); } }
Не удаляется
У меня удаляется.
Посмотрите, что у Вас в IDs и ShortName
И "попадаете" ли Вы в IndicatorRelease();

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как только не пытался - графики все равно остаются
IndicatorRelease(Handl); - тоже не работает
https://www.mql5.com/ru/forum/12372 - это читал, перешерстил полгугла, так решения и не нашел.
Не пойму почему ChartIndicatorDelete выдает "Системная функция не разрешена для вызова", на кой тогда вообще нужна эта функция? Вроде все варианты ее использования перепробовал.
P.S.: подойдет так же решение вида "снос всех индикаторов с графика без разбора", если такое есть)
Заранее спасибо.
P.P.S.: Mql5