Есть пользовательский индикатор в виде гистограммы. В документации MQL описана функция iCustom() для взятия значиния из выбранного буфера, используемого в этом индикаторе. В индикаторе 10 входных параметров. И каждый вызов функции системе приходится обрабатывать все эти параметры, а это уже накладно. А мне нужно к тому же каждый тик запускать проход по этому массиву значений. К тому же индикаторов несколько.
Вопрос: есть ли способ обратиться напрямую к массиву с значениями гистограммы, типа как myIndicatorBuffer_0[5]?
Есть пользовательский индикатор в виде гистограммы. В документации MQL описана функция iCustom() для взятия значиния из выбранного буфера, используемого в этом индикаторе. В индикаторе 10 входных параметров. И каждый вызов функции системе приходится обрабатывать все эти параметры, а это уже накладно. А мне нужно к тому же каждый тик запускать проход по этому массиву значений. К тому же индикаторов несколько.
Не видя кода трудно что-то сказать. И скорее всего дело даже не в том что у индикатора 10 входных параметров. Возможно здесь надо смотреть в сторону оптимизации кода индикатора..
Вопрос: есть ли способ обратиться напрямую к массиву с значениями гистограммы, типа как myIndicatorBuffer_0[5]?
если массив объявлен в другой программе, то нет.
Вы о пятерке речь ведёте?
Вы о пятерке речь ведёте?
Да
Просто тема находится в ветке MQL4.
Да
Только не начинай говорить о старости терминала и не начинай навязывать переход через Альпы не примите за рекламу, я имел ввиду горы:)))))))))))
Читайте внимательно справку по iCustom().
Вот и почитайте сами справку к iCustom() для MQL4. Ни каких хэндлов нет. В параметрах функции есть shift, то есть номер элемента в массиве, из которого достаётся единственное значение double. Хэндл в каких-то других функциях есть. Опять таки, идёт копирование значений, это раз. Во-вторых: я читаю и вижу, что это функции для копирования только данных графика цены, а про копирования из буферов индикаторов я там не вижу.
А мне тупо нужен указатель на буфер индикатора. Как-то так.
PS: раздел, в котором я создал данную тему называется MQL4 и MetaTrader 4.
А что мешает создать массив и в него записать нужное количество, один раз, а потом переписывать только значения нулевого бара. При появлении нового бара копировать массив сам в себя со сдвигом на одну ячейку и значения нулевого бара продолжать писать в тот-же нулевой индекс массива.
Ключевая фраза "копировать". Зачем копировать, когда можно не копировать? Зачем лишние вычисления? Вот я обращаюсь к Volume[] или Time[] ни чего не копируя.
С точки зрения языка могла бы быть функция, возвращающая указатель на массив, а я бы к нему приделывал скобочки с цыферькой внутри и дело бы пошло.
А так у меня есть библиотечка mql4-lib и у ней есть Vector.
Ключевая фраза "копировать". Зачем копировать, когда можно не копировать? Зачем лишние вычисления? Вот я обращаюсь к Volume[] или Time[] ни чего не копируя.
С точки зрения языка могла бы быть функция, возвращающая указатель на массив, а я бы к нему приделывал скобочки с цыферькой внутри и дело бы пошло.
- Функция копирования массива на много менее затратна чем iCustom и никаких лишних вычислений.
- Я не зря просил Артёма не советовать переход... Я сам посоветую ПЕРЕХОДИТЕ на MQL5 и будет вам счастье.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть пользовательский индикатор в виде гистограммы. В документации MQL описана функция iCustom() для взятия значиния из выбранного буфера, используемого в этом индикаторе. В индикаторе 10 входных параметров. И каждый вызов функции системе приходится обрабатывать все эти параметры, а это уже накладно. А мне нужно к тому же каждый тик запускать проход по этому массиву значений. К тому же индикаторов несколько.
Вопрос: есть ли способ обратиться напрямую к массиву с значениями гистограммы, типа как myIndicatorBuffer_0[5]?