Плюнул на все и посчитал вручную:
for (int j=0; j<5; j++) {
int we = 0; double summ = 0; int k=1;
for (i=maPeriod+j;i>j;i--) { we += k; summ += k*macd[i-1]; k++;}
ma[j] = summ/we;
}
Sergey Deev:
И скорость будет лучше в разы )
Плюнул на все и посчитал вручную:
for (int j=0; j<5; j++) {
int we = 0; double summ = 0; int k=1;
for (i=maPeriod+j;i>j;i--) { we += k; summ += k*macd[i-1]; k++;}
ma[j] = summ/we;
}
Sergey Deev:
...
Получаю значения совсем отличающиеся от того, что рисует индикатор. Что не так?
Эти функции в первую очередь предназначены для индикаторных буферов. Для применения с другими массивами надо делать ArraySetAsSeries(), без этого направление расположения данных меняется.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Требуется сгладить гистограмму MACD методом LWMA
Делаю так:
double macd[10] ,ma[5];
for (i=0;i<10;i++) macd[i]=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
for (i=0;i<5;i++) ma[i]=iMAOnArray(macd,0,5,0,MODE_LWMA,i);
Получаю значения совсем отличающиеся от того, что рисует индикатор. Что не так?