Как использовать внешний индикатор в mkl5?

 
Подскажите пожалуйста кто знает, Как использовать внешний индикатор в mkl5?
 
vitaliy9999999:
Подскажите пожалуйста кто знает, Как использовать внешний индикатор в mkl5?
Что есть «внешний индикатор»?

 
vitaliy9999999:
Подскажите пожалуйста кто знает, Как использовать внешний индикатор в mkl5?

Справка знает

Справочник MQL5 /Технические индикаторы - это в редакторе


Или на сайте https://www.mql5.com/ru/docs/indicators

Документация по MQL5: Технические индикаторы
Документация по MQL5: Технические индикаторы
  • www.mql5.com
Все функции типа iMA, iAC, iMACD, iIchimoku и т.п., создают в глобальном кеше клиентского терминала копию соответствующего технического индикатора. Если копия индикатора с этими параметрами уже существует, то новая копия не создается, а увеличивается счетчик ссылок на данную копию. Эти функции возвращают хэндл соответствующей копии индикатора...
 
vitaliy9999999:
Подскажите пожалуйста кто знает, Как использовать внешний индикатор в mkl5?

Выяснять короткое имя и хэндл индикатора, если он не один - перебрать в цикле все имеющиеся на графике, 

//--- количество окон на графике (всегда есть хотя бы одно главное окно)
   int windows=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);
//--- проходим по окнам графика
   for(int w=0;w<windows;w++)
     {
      //--- сколько индикаторов в данном окне/подокне
      int total=ChartIndicatorsTotal(0,w);
      //--- переберем все индикаторы в окне
      for(int i=0;i<total;i++)
        {
         //--- получим короткое имя индикатора
         string name=ChartIndicatorName(0,w,i);
         //--- получим хэндл индикатора
         int handle=ChartIndicatorGet(0,w,name);



далее функцией CopyBuffer() забираете из буфера выбранного индикатора значения в интересующий момент времени, и далее делаете с ними то, что хотели.

Возможно есть более простой и эффективный способ.

 
Vladimir Karputov:
Что есть «внешний индикатор»?

Вероятнее всего это тот, которого нет в стандартной поставке терминала и нет его исходного кода.

 

Вообще, внешний - это не входящий в терминал. То есть рукописный. У меня проблема с индикатором ZigZag он стандартный, но его хэндл можно получить только через функцию iCustom().

Затем с помощью CopyBuffer()  я копировал его данные в буфер. Но при выводе в журнал экстремумов показывает какую то ересь) определяет либо первой еще не сформировавшуюся вершинку. Либо 6 тоже еще не сформировавшуюся - те текущий экстремум. 

Подскажите профи плиз!

 
vitaliy9999999:

Вообще, внешний - это не входящий в терминал. То есть рукописный. У меня проблема с индикатором ZigZag он стандартный, но его хэндл можно получить только через функцию iCustom().

Затем с помощью CopyBuffer()  я копировал его данные в буфер. Но при выводе в журнал экстремумов показывает какую то ересь) определяет либо первой еще не сформировавшуюся вершинку. Либо 6 тоже еще не сформировавшуюся - те текущий экстремум. 

Подскажите профи плиз!

В ветке про ЗЗ я дал Вам код, где используется индикатор ЗЗ, что там не понятно?

 
Aleksey Vyazmikin:

В ветке про ЗЗ я дал Вам код, где используется индикатор ЗЗ, что там не понятно?

спсибо! просто я редко сюда захожу и посмотрел эту ветку первой. буду разбираться) думаю осилю.. 

 
vitaliy9999999:

спсибо! просто я редко сюда захожу и посмотрел эту ветку первой. буду разбираться) думаю осилю.. 

Пожалуйста.

Ставьте звездочку - тема добавится в избранное и Вас уведомят.

 
Aleksey Vyazmikin:

Пожалуйста.

Ставьте звездочку - тема добавится в избранное и Вас уведомят.

спасибо! разобрался) точнее получчил данные индикатора) тлько вот не понятно почему его именно в цикле нужно перебирать?... и почему когда я копировал из буфера данные с помощью  CopyBuffer() и выводил их в журнал у меня выходили нули... сейчас пока работает) благодаря вашему коду)

 
vitaliy9999999:

спасибо! разобрался) точнее получчил данные индикатора) тлько вот не понятно почему его именно в цикле нужно перебирать?... и почему когда я копировал из буфера данные с помощью  CopyBuffer() и выводил их в журнал у меня выходили нули... сейчас пока работает) благодаря вашему коду)

Перебирать в цикле нужно, что б узнать, где не пустые значения и их сбросить в отдельный буфер для удобства дальнейшей работы - а как иначе? Вообще у меня была задумка в индикатор добавить буфера и класть туда значение пиков без промежутков, но это пока не реализовано.

Ваш код не анализировал, поэтому не знаю, почему там были нули, может они и должны там были быть, если значения то не было....

Причина обращения: