Делаю простую функцию для вычисления средней величины бара за период, но имею предупреждение от компилятора. Никак не могу понять в чем дело. Видимо заработался. Помогите!
Сам код работает, но предупреждение смущает.
High и Low типа double, а Size вы назначили тип int, отсюда потеря точности.
И проверку if(PerBar!=0) лучше поставить в начале функции и выход из функции с возвратом 0. Иначе возможно деление на 0 в строке
AvBar=Size/PerBar;
High и Low типа double, а Size вы назначили тип int, отсюда потеря точности.
И проверку if(PerBar!=0) лучше поставить в начале функции и выход из функции с возвратом 0. Иначе возможно деление на 0 в строке
Меняю тип, но ничего не меняется
Тип какой переменной поменяли? Покажите новый код.
P. S. Строка
Size += (High[i]-Low[i])/Point;
является опасной. Ведь Point может содержать 0. Поэтому в OnInit лучше проверить (если равно нулю, то не инициализировать индикатор и ждать, пока Point станет не равен нулю, или просто прекратить работу индикатора с соответствующим сообщением) и буферизовать значение Point. При делении использовать ранее буферизованное значение.
Делаю простую функцию для вычисления средней величины бара за период, но имею предупреждение от компилятора. Никак не могу понять в чем дело. Видимо заработался. Помогите!
Сам код работает, но предупреждение смущает.
Size целое, а выражение (High[i]-Low[i])/Point вещественное. Отсюда предупреждение
Приведите к целому:
Size += (int)MathRound((High[i]-Low[i])/Point);
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Делаю простую функцию для вычисления средней величины бара за период, но имею предупреждение от компилятора. Никак не могу понять в чем дело. Видимо заработался. Помогите!
Сам код работает, но предупреждение смущает.