Как экспертом удалить индикатор? - страница 2 12 Новый комментарий alrane 2015.04.28 20:42 #11 Попадаю.Хм, 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,1,0); Print(IDs); Print(ShortName); ChartIndicatorDelete( IDs, 0, ShortName ); Print(GetLastError()); } } alrane 2015.04.28 20:47 #12 перезапустил:2015.04.28 21:46:48.524 2015.04.01 17:26:00 123452015.04.28 21:46:48.527 2015.04.01 17:26:20 Momentum(14)2015.04.28 21:46:48.527 2015.04.01 17:26:20 4014 Mikhail Filimonov 2015.04.28 21:02 #13 alrane: перезапустил:2015.04.28 21:46:48.524 2015.04.01 17:26:00 123452015.04.28 21:46:48.527 2015.04.01 17:26:20 Momentum(14)2015.04.28 21:46:48.527 2015.04.01 17:26:20 4014Установите индикатор в OnInit(),а его удаление в OnDeinit() alrane 2015.04.29 00:17 #14 Тоже самое Mikhail Filimonov 2015.04.29 00:35 #15 alrane: Тоже самоеА у меня, почему-то работает://+------------------------------------------------------------------+ //| iTest.mq5 | //| Copyright 2014, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2014, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" // int mom_handle; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- mom_handle = iMomentum( _Symbol, PERIOD_CURRENT, 14, PRICE_CLOSE ); if ( mom_handle == INVALID_HANDLE ) { Print("Индикатор не создан!"); return(INIT_FAILED); } else { ChartIndicatorAdd( 0, 1, mom_handle ); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- if ( mom_handle != INVALID_HANDLE ) { string ShortName=ChartIndicatorName( 0, 1, 0 ); IndicatorRelease( mom_handle ); ChartIndicatorDelete( 0, 1, ShortName ); } } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ DimaBilanko 2017.02.04 18:16 #16 Написал свою функцию, она по очереди удаляет все найденные индикаторы в основном окне. Для вызова функции нужно передать в нее общее число найденных индикаторов:DeleteAllIndicators(ChartIndicatorsTotal(0,0));Вот сама функция (можно сделать её типом void, если вам не надо ничего возвращать):bool DeleteAllIndicators(int ToalIndicatorsNumber) { if(ToalIndicatorsNumber>0) { for(int iii=0;iii<ToalIndicatorsNumber;iii++) { ChartIndicatorDelete(0,0,ChartIndicatorName(0,0,0)); // Удаляем найденный индикатор ChartRedraw(0); // Обновляем окно графика } } if(ChartIndicatorsTotal(0,0)==0) { Print("Все индикаторы удалены успешно!"); return true; } else { Alert("Ошибка в функции DeleteAllIndicators. Ошибка: %d",GetLastError()); return false; } } MQL4 Добавление индикатора на Любые вопросы новичков по Как узнать, запущен ли Vitalie Postolache 2017.02.05 21:15 #17 alrane: Есть ли способ полностью очистить график? От всего что на нем естьСамое простое - заранее создать и, когда надо, подгрузить пустой шаблон - ChartApplyTemplate(0,"default.tpl")). Понятно, что идентификатор графика нужно подставлять правильный, если работаете не на текущем графике. 12 Новый комментарий
Попадаю.
Хм, ShortName - пустая строка....
перезапустил:
2015.04.28 21:46:48.524 2015.04.01 17:26:00 12345
2015.04.28 21:46:48.527 2015.04.01 17:26:20 Momentum(14)
2015.04.28 21:46:48.527 2015.04.01 17:26:20 4014
перезапустил:
2015.04.28 21:46:48.524 2015.04.01 17:26:00 12345
2015.04.28 21:46:48.527 2015.04.01 17:26:20 Momentum(14)
2015.04.28 21:46:48.527 2015.04.01 17:26:20 4014
Установите индикатор в OnInit(),
а его удаление в OnDeinit()
Тоже самое
А у меня, почему-то работает:
Написал свою функцию, она по очереди удаляет все найденные индикаторы в основном окне.
Для вызова функции нужно передать в нее общее число найденных индикаторов:
Вот сама функция (можно сделать её типом void, если вам не надо ничего возвращать):
{
if(ToalIndicatorsNumber>0)
{
for(int iii=0;iii<ToalIndicatorsNumber;iii++)
{
ChartIndicatorDelete(0,0,ChartIndicatorName(0,0,0)); // Удаляем найденный индикатор
ChartRedraw(0); // Обновляем окно графика
}
}
if(ChartIndicatorsTotal(0,0)==0)
{
Print("Все индикаторы удалены успешно!");
return true;
}
else
{
Alert("Ошибка в функции DeleteAllIndicators. Ошибка: %d",GetLastError());
return false;
}
}
Есть ли способ полностью очистить график? От всего что на нем есть
Самое простое - заранее создать и, когда надо, подгрузить пустой шаблон - ChartApplyTemplate(0,"default.tpl")).
Понятно, что идентификатор графика нужно подставлять правильный, если работаете не на текущем графике.