Как увеличить размер массива[] в индикаторе если он привязан к индексу буфера и его размер более количества баров в истории???

 

Здравствуйте, будьте добры подскажите, каким образом увеличить размер одномерного массива в индикаторе

При условии, что: - он привязан к индексу буфера для вызова(ну или если есть еще какие варианты, для последующего его вызова в советнике)

                              - и размер массива превышает количество баров

 Изначально задача стоит достать массив из индикатора в советнике

 
Top2n:

Изначально задача стоит достать массив из индикатора в советнике

Несколько вариантов получения массива из индикатора

 

Зачем увеличивать один? Возьмите два.

 
Dmitry Fedoseev:

Зачем увеличивать один? Возьмите два.


Буферов не хватит, массив большой

 
Top2n:

Буферов не хватит, массив большой


Тогда передавать в эксперта только то, что ему нужно. 

 
Dmitry Fedoseev:

Тогда передавать в эксперта только то, что ему нужно. 

Спасибо за внимание, но нет, уже думал!


Может подскажете как прописать параметр "Применить к" - Median Prise в самом индекаторе, в место умолчания цены Close, тогда появилась бы возможность обойти предыдущую задачу.

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

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
      sm.Solve(rates_total,prev_calculated,price);
 
Top2n:

Может подскажете как прописать параметр "Применить к" - Median Prise в самом индекаторе, в место умолчания цены Close, тогда появилась бы возможность обойти предыдущую задачу.

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

"Применить к" - эквивалентен вызову индикатора, а не его исполнению. Указывать цену MEDIAN нужно при вызове iCustom.
 
Top2n:

Спасибо за внимание, но нет, уже думал!


Может подскажете как прописать параметр "Применить к" - Median Prise в самом индекаторе, в место умолчания цены Close, тогда появилась бы возможность обойти предыдущую задачу.

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


Можно использовать другой вариант OnCalculate(), тот, который с open, high, low, close. Создать дополнительный буфер для вычислений, заполнить его значениями этой медианной цены, и дальше все вычисления производить над этим буфером, вместо массива price.

 
Stanislav Korotky:
"Применить к" - эквивалентен вызову индикатора, а не его исполнению. Указывать цену MEDIAN нужно при вызове iCustom.

Неподходит, тогда встает задача, как очистить задействованные ресурсы - оперативную память

ТОесть индикатор после того как произвел рассчет, подчищает оперативку с условием в необходимый момент опять произвести рассчет


Вообще первичная задача вытащить из индикатора масив[][] 

 
Dmitry Fedoseev:

Можно использовать другой вариант OnCalculate(), тот, который о open, high, low, close. Создать дополнительный буфер для вычислений, заполнить его значениями этой медианной цены, и дальше все вычисления производить над этим буфером, вместо массива price.


Благодарю Вас, пытался сделать, но плюнул, ваш ответ внушил уверенность в правильности идеи попробую

 
Top2n:

Неподходит, тогда встает задача, как очистить задействованные ресурсы - оперативную память

ТОесть индикатор после того как произвел рассчет, подчищает оперативку с условием в необходимый момент опять произвести рассчет

Задача не ясна.

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

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