Вопрос по хэндлам индикаторов - страница 2

 
Oleg Remizov:

Только хэндл пришлось тоже сделать статическим, а то он сбрасывался при каждом вызове.

Логично, не усмотрел

 
Oleg Remizov:

Перечитал справку по индикаторным хэндлам и вычитал что: 

Технические индикаторы

Нельзя обратиться к данным индикатора сразу после его создания, так как на расчет значений индикатора требуется некоторое время, и поэтому создавать хэндлы индикаторов лучше всего в OnInit().

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

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

В вашем случае следовало бы использовать массив для структур символ-хэндл. Как потребуется индикатор по какому-то символу - пройтись по массиву, может он там уже есть. Если нет - то загрузить индикатор. Перед использование хэндла - проверить, посчитан ли индикатор. 

Установить предел массиву. Если он занят, то выгружать индикатор, который дольше всех не использовался и загрузить новый.

 
JRandomTrader:
Можно и без хэндлов, сделать свою функцию, которая сама считает значение данного индикатора в данной точке графика(или двух-трёх последних, а не всей истории) для данного символа.

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

 
Dmitry Fedoseev:

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

Для EMA и подобных такая функция не будет эффективной, но это возможно. Её можно начинать считать не с начала доступной истории, а где-то за 5 периодов EMA до нужной точки, значение практически не будет отличаться.

А вот для SMA, BB, ATR и т.п. такой подход можно использовать.