Теория ускорения работы советника при использовании пользовательского индикатора (функция - iCustom) - страница 9

 
-Aleks-:
Спасибо.
Это для МТ4 так. В МТ5 во обеих случаях будет один экземпляр
 
Dmitry Fedoseev:
Это для МТ4 так. В МТ5 во обеих случаях будет один экземпляр

Ясно.

Так как Ренат молчит и не известно, когда баг с памятью пофиксят, я решил заплатить за перенос кода скрипта в эксперт. 

 
Подскажите, пожалуйста, если в коде советника MT4 прописан индикатор, но он не вызывается (пользователь не сделал вызов в настройках или алгоритм это не предусматривает или предусматривает на выбор постоянно вызывать индикатор А или Б), то будет ли под него выделена память?
 
-Aleks-:

Но, если это не так, то почему бы не объединить информацию от индикатора в один паток?

Предлагаю провести на эту тему эксперимент с замеров производительности советника.

Для этого потребуется взять пользовательский индикатор с буфером более 1 и добавить дополнительный буфер.

Алгоритм логический (без математического):

1. Преобразуем в индикаторе значение буферов в целые числа, в зависимости от числовых знаков на число, всего 3 буфера, было: 1,21101; 1,13; 5, стало: 121101;113;5

2. Считаем, сколько нужно вместить цифр после первого числа - в нашем случае 4, потом в последующее число следующее - 1, эти значения являются степенью множителя:

1,21101*10^4=1211010000

1.13*10^1=113

5*10^0=5 (делам проверку на 0)

3. Суммируем числа и получаем 1211011135

4. Записываем значение в 4 буфер

5. Запрашиваем в советнике 4 буфер индикатора и производим разложение значения на составляющие в обратном порядке - получаем 3 цифры, которые можно в дальнейшем использовать для работы советника.

Кто-то может сравнить скорость работы такого подхода, есть ли в нём рациональное зерно?

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