Подскажите, пожалуйста, если в коде советника MT4 прописан индикатор, но он не вызывается (пользователь не сделал вызов в настройках или алгоритм это не предусматривает или предусматривает на выбор постоянно вызывать индикатор А или Б), то будет ли под него выделена память?
Но, если это не так, то почему бы не объединить информацию от индикатора в один паток?
Предлагаю провести на эту тему эксперимент с замеров производительности советника.
Для этого потребуется взять пользовательский индикатор с буфером более 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 цифры, которые можно в дальнейшем использовать для работы советника.
Кто-то может сравнить скорость работы такого подхода, есть ли в нём рациональное зерно?
Не так давно проверил эту теорию - оказалось, что у графического буфера серьезные ограничения, которые не позволяют сделать склейку значений других буферов, особенно если те отображают цену инструмента. Однако, сделал метод по такому же принципу расчета функции индикатора, встроил функцию в советник и теперь за один запрос я получаю сразу три буфера виртуального индикатора - прирост производительности в этом случае пропорционален количеству ответов функции на запрос.
Спасибо.
Это для МТ4 так. В МТ5 во обеих случаях будет один экземпляр
Ясно.
Так как Ренат молчит и не известно, когда баг с памятью пофиксят, я решил заплатить за перенос кода скрипта в эксперт.
Но, если это не так, то почему бы не объединить информацию от индикатора в один паток?
Предлагаю провести на эту тему эксперимент с замеров производительности советника.
Для этого потребуется взять пользовательский индикатор с буфером более 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 цифры, которые можно в дальнейшем использовать для работы советника.
Кто-то может сравнить скорость работы такого подхода, есть ли в нём рациональное зерно?