Код слишком "запутанный" и возможно пока очень не рациональный. Постараюсь более подробно изложить ситуацию.
В индикатор подаются исходные данные (несколько валютных пар) , их количество не постоянное. Сразу возникает вопрос возможно ли иметь переменное число обрисовываемых буферов (массивов) (согласно "#property indicator_plots" не возможно) ? При вычисление результатов используются динамические массивы классов, содержащие динамические массивы структур. Вопрос: что делать с "#property indicator_buffers", и для чего вообще нужен тип "INDICATOR_CALCULATIONS"? Для чего нужно указывать сколько буферов (массивов) используются именно в промежуточных вычислениях?
Заранее благодарю.
p.s. Опыт написания нескольких десятков индикаторов на мт4 и мт5, имеется.
tmp1204:
и для чего вообще нужен тип "INDICATOR_CALCULATIONS"?
Тогда почему при написании эксперта не указываем количество используемых массивов? Почему в эксперте не нужно в индикаторе нужно "бронировать" память, как тогда быть с динамическими массивами?
- www.mql5.com
Тогда почему при написании эксперта не указываем количество используемых массивов?
Потому что советники не являются индикаторами. У каждого типа mql5-программ свое основное предназначение. Читайте Документацию, пожалуйста.
Спасибо за поддержку. Использование "сложных" динамических массивов в индикаторе без привязки к SetIndexBuffer INDICATOR_DATA срабатывает вполне корректно. Но иногда приходится использовать INDICATOR_DATA.
Вопрос. На INDICATOR_DATы устанавливаю неопределенное количество (в зависимости оп входных параметров) массивов. В #property indicator_buffers 20 и #property #property indicator_plots 10 задаю значения с "запасом". Влияет ли как-то этот "запас" на ресурсные требования, или может есть какие варианты не "жесткого" определения #property indicator_buffers?
- www.mql5.com
Вопрос. На INDICATOR_DATы устанавливаю неопределенное количество (в зависимости оп входных параметров) массивов. В #property indicator_buffers 20 и #property #property indicator_plots 10 задаю значения с "запасом".
1) Влияет ли как-то этот "запас" на ресурсные требования, или
2) может есть какие варианты не "жесткого" определения #property indicator_buffers?
1) Влияет
2) Определения только жёсткие. Если указано 20, значит 20. Выяснить программным путем количество прописанных буферов нельзя, как и изменить динамически.
"Если указано 20, значит 20" - или не более 20?
Из хелпа:
bool SetIndexBuffer(
int index, // индекс буфера
double buffer[], // массив
ENUM_INDEXBUFFER_TYPE data_type // что будем хранить
);
Параметры
index
[in] Номер индикаторного буфера. Нумерация начинается с 0. Номер должен быть меньше значения, объявленного в #property indicator_buffers.
.....
т.е. делаем выводы, что "меньше или равно" а не строго равно (я это использую), и вопрос: чем чреват избыток в #property indicator_buffers?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем доброго времени. В индикаторе есть "#property indicator_buffers 1 #property indicator_plots 1".
Можно ли в качестве расчетных буферов использовать массивы структур (классов), содержащие внутри себя дополнительные массивы данных? Похоже у меня из-за этого возникли заморочки.
Заранее благодарю.