Получение в советнике данных с нескольких индикаторов по чужим символам

 

Задача такая: есть советник и в нём по какому-то события (клик по кнопке, клик по чарту, ...) нужно получать данные с индикаторов по чужим символам. Символов несколько (точнее несколько десятков :) ).

...

 
Vladimir Karputovнужно получать данные с индикаторов по чужим символам
Владимир, Вы меня удивили таким вопросом.
Либо я не понял сути.
Буду наблюдать.
 
Andrei Fandeev:
Владимир, Вы меня удивили таким вопросом.
Либо я не понял сути.
Буду наблюдать.

Монтёры попортили мои планы. Свет дали только в три ночи :).

В общем задача такова: есть массив символов и по каждому создаётся индикатор (пусть та же iMA) - то есть индикаторы по чужим символам. В советнике нужно получать, в случайном порядке, каждый раз массив значений с двух любых символов.

 
Vladimir Karputov:

В общем задача такова: есть массив символов и по каждому создаётся индикатор (пусть та же iMA) - то есть индикаторы по чужим символам. В советнике нужно получать, в случайном порядке, каждый раз массив значений с двух любых символов.

Я опять не понял.
Что мешает получить значение индикатора любого инструмента любого бара через стандартную конструкцию типа
znach=iRSI(Arrow_Symbol[ii],Arrow_TF[iii],Indicator_Period,PRICE_CLOSE,i);
Я в 4ке работаю. Не знаю как там в 5ке.
Тупо в цикле, да, но работает ведь. "Ехать важнее чашечек"

Меня терзают смутные сомнения, что я не понимаю сути вопроса.
Поясните пожалуйста.
 

Для работы с чужими символами нужно периодически "дёргать" историю по этим символам. Я это делаю в OnTimer (59 секунд).

Теперь сам эксперимент.

Открыт один график: AUDCAD, W1.

Настройки терминала: Макс. баров в окне: 50000

В папке [data folder]\bases\MetaQuotes-Demo\history только одна папка: AUDCAD.

Терминал: 37 Mb ОЗУ и 17 потоков (смотреть в "Диспетчере задача", вкладка "Подробности").

Запуск советника ...

Сначала стала закачиваться первичная история (вызов из OnInit()) ...

После первичной подкачки создание хендлов заняло 63 ms. 

Переход в OnTick().

Здесь уже проверяются все индикаторы на возврат BarsCalculated. Пока хоть по одному индикатору будет ответ "-1" или "0" - счётчик будет считать (и принтовать) затраченное время - пока идёт подкачка истории индикаторы постоянно пересчитываются и поэтому возвращают или "-1" (данных совсем мало для расчёта) или "0" - в случае первого запуска или подкачки истории.

Полная закачка истории по используемым символам заняла ~ 400 секунд.

Терминал: 85 Mb ОЗУ и 33 потока


А теперь второй и последующие старты:

Создание хендлов заняло 0 ms. 

Время на преодоление условия: "BarsCalculated<=0" заняло 1 ms.

 

Версия 1.002: теперь в OnDeinit() очищаем график, в OnInit() на первом месте добавляем используемые символы в "Обзор рынка" и в OnInit() добавлено несколько информационных сообщений:

2017.10.19 11:45:49.108 Get indicators from others symbols (AUDCAD,H1)  OnInit, start copy close symbols
2017.10.19 11:45:49.108 Get indicators from others symbols (AUDCAD,H1)  OnInit, start creating handles

ds

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