Помогите пожалуйста. Как вычислить при помощи кода среднее значение 100 последних iVolume ?
Не оптимально. Будет пересчитываться весь цикл на каждом тике (да хоть баре!). Можно, например, так:
double ma=SMAvol[i+1]*SMAperiod-Volume[i+SMAperiod]; SMAvol[i]=(ma+Volume[i])/SMAperiod;
где
SMAvol - инд.буфер для усредненных значений;
SMAperiod - период усреднения;
i - текущий бар.
double sum=0; for(int i=0;i<Bars;i++) { if(i==0){for(int j=0;j<100;j++){sum=sum+iVolume(NULL,0,j);}} if(i>0)sum=sum+iVolume(NULL,0,i+100)-iVolume(NULL,0,i-1); ExtMapBuffer[i]=sum/100; }Может так?
Жуть господа - вам надо работать над стилем и сильно. :))
А что не так?
Обнаружил у себя лишнюю пару скобок.
double sum=0; for ( int i=0; i<Bars; i++ ){ if ( i == 0 ){ for ( int j=0; j<100; j++ ){ sum= sum + iVolume ( NULL, 0, j ); } } if ( i > 0 ){ sum = sum + iVolume ( NULL, 0, i+100 ) - iVolume ( NULL, 0, i-1 ); } ExtMapBuffer[i] = sum/100; }Есть несколько вариантов но раз MQ4 это всетаки Си, наверное что-то подобное должно быть.
double sum=0; for(int i=0;i<Bars;i++) { if (i==0) { for (int j=0;j<100;j++) { sum=sum+iVolume(NULL,0,j); } } if (i>0) { sum=sum+iVolume(NULL,0,i+100)-iVolume(NULL,0,i-1); } ExtMapBuffer[i]=sum/100; }Так лучше!
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь