Получение данных линий, которые расположены на соседнем графике.

 

Мы можем находить линии или объекты (и их цену), которые находятся на текущем графике (или подокне). А как найти объект (линию), которая находиться на соседнем графике, где установлен советник, который эти объекты рисует?

 
Dmitriy Epshteyn:

Мы можем находить линии или объекты (и их цену), которые находятся на текущем графике (или подокне). А как найти объект (линию), которая находиться на соседнем графике, где установлен советник, который эти объекты рисует?

Сначала перебором найти нужный график (ChartNext). Затем уже на нужном графике получить общий список объектов требуемого типа (ObjectsTotal) и перебором найти интересуемую линию (ObjectName). Останется получить свойства найденной линии.


 
Karputov Vladimir:

Сначала перебором найти нужный график (ChartNext). Затем уже на нужном графике получить общий список объектов требуемого типа (ObjectsTotal) и перебором найти интересуемую линию (ObjectName). Останется получить свойства найденной линии.


     Разбираю ChartNext.

//--- переменные для идентификаторов графиков
   long currChart,prevChart=ChartFirst();
   int i=0,limit=100;
   Print("ChartFirst = ",ChartSymbol(prevChart)," ID = ",prevChart);
   while(i<limit)// у нас наверняка не больше 100 открытых графиков
     {
      currChart=ChartNext(prevChart); // на основании предыдущего получим новый график
      if(currChart<0) break;          // достигли конца списка графиков
      Print(i,ChartSymbol(currChart)," ID =",currChart);
      prevChart=currChart;// запомним идентификатор текущего графика для ChartNext()
      i++;// не забудем увеличить счетчик
     }


То есть нужно найти график, на котором стоит советник, но это проблематично.

А если мы знаем имя объекта (навожу мышку на графике, отображается имя), знаем, на каком символе он находиться, например на евро/баксе, можно сразу по имени найти?

Все равно возвращаемся к идентификации графиков.. Как они исчисляются? идентификатор 0 - это первый график или последний в терминале?   

Просмотрел справку, как исчисляются нумерация графиков, так и не нашел


 
Dmitriy Epshteyn:

 

То есть нужно найти график, на котором стоит советник, но это проблематично.

А если мы знаем имя объекта (навожу мышку на графике, отображается имя), знаем, на каком символе он находиться, например на евро/баксе, можно сразу по имени найти?

Все равно возвращаемся к идентификации графиков.. Как они исчисляются? идентификатор 0 - это первый график или последний в терминале?   

Просмотрел справку, как исчисляются нумерация графиков, так и не нашел

График 0 это текущий график, на котором запущен скрипт. Остальным присваиваются целочисленные номера, но вовсе не инкрементом по порядку возрастания, то есть следующий будет не 1 а, скажем, что-то вроде 145648698.

В приведённом выше цикле надо объекты искать заданного типа и с заданным именем.

 

При вставке кода в сообщения применяйте встроенный функционал форума: Правильно вставляем код на форуме. Если Вы знаете имя линии то никаких проблем нет. Цикл по графикам и в этом цикле поиск на каждом графике объекта заданного типа и с искомым именем.

Скомпилируйте скрипт из примера (ChartNext) и увидите, как происходит перебор графиков.

 
Dmitriy Epshteyn:


Дмитрий, как связаться с вами? ящик не сменили?
 
santaktak:
Дмитрий, как связаться с вами? ящик не сменили?
Такие вопросы можно и через личные сообщения задавать :), а вот если есть вопросы по MQL5 - то смело задавайте здесь.
 
Dmitriy Epshteyn:

     Разбираю ChartNext.


То есть нужно найти график, на котором стоит советник, но это проблематично.

А если мы знаем имя объекта (навожу мышку на графике, отображается имя), знаем, на каком символе он находиться, например на евро/баксе, можно сразу по имени найти?

Все равно возвращаемся к идентификации графиков.. Как они исчисляются? идентификатор 0 - это первый график или последний в терминале?   

Просмотрел справку, как исчисляются нумерация графиков, так и не нашел