Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1520

 
lynxntech #:

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

или создавать структуры монстров в игре

далее 

пример из справки.. наименования поменял

Спасибо за подсказку. Теперь начинаю осознавать ценность в использовании пользовательской структуры.

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

 
и всетаки как советник может по хэндлу индикатора удалить его с графика в OnDeinit
 
MrBrooklin #:

Вам обязательно нужно по хэндлу? А то есть функция, которая удаляет с указанного окна графика индикатор с указанным именем. 

IndicatorDelete(int,const string) - Ценовые графики - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5

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

Проще взять функцию чем СБ…

bool  ChartIndicatorDelete( 
   long           chart_id,              // идентификатор графика 
   int            sub_window             // номер подокна 
   const string   indicator_shortname    // короткое имя индикатора 
   );
 
MrBrooklin #:

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

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

Володя, сейчас обнаружил что мои знания и подсказки по замерам скорости несколько устарели.
Раньше пользовался функциями таймера высокого разрешения (миллисекунды) EventSetMillisecondTimer(), который нужно было устанавливать в OnInit() и далее использовать функцию GetTickCount()  в скрипте / советнике / индикаторе.
Сейчас в ветке https://www.mql5.com/ru/forum/170952/page255 увидел что появилась (а м.б. она была и раньше) функция GetMicrosecondCount(). С ней работать чуть проще и разрешение выше на 3 порядка.
Пример использования по ссылке выше на ветку и в документации.

Документация по MQL5: Работа с событиями / EventSetMillisecondTimer
Документация по MQL5: Работа с событиями / EventSetMillisecondTimer
  • www.mql5.com
Указывает клиентскому терминалу, что для данного эксперта или индикатора необходимо генерировать события таймера с периодичностью менее одной...
 
Grigori.S.B #:

Володя, сейчас обнаружил что мои знания и подсказки по замерам скорости несколько устарели.
Раньше пользовался функциями таймера высокого разрешения (миллисекунды) EventSetMillisecondTimer(), который нужно было устанавливать в OnInit() и далее использовать функцию GetTickCount()  в скрипте / советнике / индикаторе.
Сейчас в ветке https://www.mql5.com/ru/forum/170952/page255 увидел что появилась (а м.б. она была и раньше) функция GetMicrosecondCount(). С ней работать чуть проще и разрешение выше на 3 порядка.
Пример использования по ссылке выше на ветку и в документации.

Огромное спасибо! На выходных попробую измерить скорость. )) Тем более, что в документации приведён пример.

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

 
MrBrooklin #:

Огромное спасибо! На выходных попробую измерить скорость. )) Тем более, что в документации приведён пример.

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

Только скорость надо замерять на миллион итераций цикла. Иначе будет погрешность очень высокая.

 
Alexey Viktorov #:

Только скорость надо замерять на миллион итераций цикла. Иначе будет погрешность очень высокая.

Привет, Алексей! Спасибо за уточнение. ))

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

 
MrBrooklin #:

Вам обязательно нужно по хэндлу? А то есть функция, которая удаляет с указанного окна графика индикатор с указанным именем. 

IndicatorDelete(int,const string) - Ценовые графики - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5

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

это работает только в коде индикатора либо я не соображу как эт  сделать, дайте пожалуйста пример добавления и удаления аллигатора

 
Посмотрите на этот пример и внесите необходимые изменения в коде:
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- удалим подокно  
   ChartIndicatorDelete(0,subwindow_ID,"Subwindow");
//--- удалим с главного окна индикатор PriceChannel: его короткое имя с параметрами по умолчанию - "Price Channel(22)"
   ChartIndicatorDelete(0,0,"Price Channel(22)");
  }
//+------------------------------------------------------------------+

По моему в коде всё предельно ясно закомментировано. Первая строка кода удаляет подокно, а вторая строка удаляет индикатор с главного окна, только нужно правильно написать короткое имя удаляемого индикатора.

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