Кто подскажет замену для iMaOnArray()?

 

Подскажите, есть где-то готовая замена iMaOnArray(),

а то встроенная функция как-то кривовато работает.

 
Пример кривости покажите
 
Не кривая она, она переворачивает данные в массиве. Если используется экспоненциальное сглаживание, то данных очень много надо. Аналог - сумма значения поделенная на их количество (для простого сглаживания).
 
Vinin:
Пример кривости покажите

Expert - показывал уже.

Я не помню где и когда. Но смысл в том, что при запуске одного и того же индикатора с разных моментов времени,

между ними постепенно возникают расхождения, довольно заметные.

 
Eugene1:Подскажите, есть где-то готовая замена iMaOnArray()

дык iMaOnArray() и есть готовая замена для расчета скользящего среднего, не устраивает, тогда считайте сами по классической формуле, примерно так:

for(int i=limit; i>=0; i--){
      Buffer1[i]=0;
      for(int j=0; j<SMA_period; j++)
            Buffer1[i] +=Close[i+j];    //СЛОЖЕНИЕ ИНДЕКСОВ
      Buffer1[i] = Buffer1[i]/SMA_period;
}


 
Eugene1:

Expert - показывал уже.

Я не помню где и когда. Но смысл в том, что при запуске одного и того же индикатора с разных моментов времени,

между ними постепенно возникают расхождения, довольно заметные.

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

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

 

а индикатор содержит работу с EMA?
если "совсем не доверяете"- возьмите MA-индикатор из поставки МТ- переделайте в функцию.

насчет "переворачивает"- ArrayGetAsSeries / SetAsSeries.

 

Э нее. Есть описание функции, есть параметры. Абсолютно параллельно что там внутри, но она должна работать хотя бы одинаково для одинаковых вызовов.

Так что кривая.

"Перекуем баги на фичи" -- вот как это называется.

 
Я товарища понял так: пересчет куска с произвольного момента сильно отличается
от значения на пересчете всего- разве нет? А так себя ведет ЕМА.
Для нее это штатное поведение. Но первый раз это пугает.

Хотя что именно имел в виду автор ветки для меня загадка-
написано совершенно невразумительно.
Что-то от чего-то отличается - и если с разного времени,
то накапливается- код где-то когда-то выкладывал- эксперт называется эксперт.
 
jartmailru:
Хотя что именно имел в виду автор ветки для меня загадка-
написано совершенно невразумительно.
Что-то от чего-то отличается - и если с разного времени,
то накапливается- код где-то когда-то выкладывал- эксперт называется эксперт.

Я не хочу повторять проблему:

TheXpert - объяснил всё вполне вразумительно, даже с картинками.

Для меня - это часа 2 возни, пока я такую презентацию осилю.

Возможно, кто-то переписал функцию без упомянутого "штатного поведения",

а с поведением, которое интуитивно от неё ждёшь?

Было бы приятно взглянуть на код...

 
Eugene1:
Возможно, кто-то переписал функцию без упомянутого "штатного поведения",
а с поведением, которое интуитивно от неё ждёшь?
Если не нужна жидкая вода- используйте горячий огонь.
ЕМА требует до тысячи точек, чтобы достичь совершенства в 6 знаков-
и смертным не превозмочь её природу.