for — цикл для группы элементов в векторе, который ссылается на другой вектор

Я пытаюсь выяснить, почему этот кусок кода возвращает -1. Ошибка лежит в этом куске кода, и я думаю, что здесь я неправильно обращаюсь с итераторами. Я пытаюсь вычислить среднее геометрическое. Вы можете обвинить меня в нескольких вещах здесь, я думаю, но прежде всего я пытаюсь понять логику.

double indicators::GeoMean(input* Close1, input* Date1, int CurrDate, int StartDate) {

double temp1;
p1 = find(Date1->YearMonthDay.begin(),Date1->YearMonthDay.end(),StartDate); // <std::vector<int>::const_iterator>
auto positA = std::distance(Date1->YearMonthDay.begin(), p1);
cout << positA << endl;
p2 = find(Date1->YearMonthDay.begin(),Date1->YearMonthDay.end(),CurrDate);
auto positB = std::distance(Date1->YearMonthDay.begin(), p2);
cout << positB << endl;
// Start with the number 1. Add or subract to that number according to gain or loss.
for ( int i = positA; i > positB; i--) {
temp1 = 1.0 + ((Close1->Close[i-1] - Close1->Close[i]) / Close1->Close[i]);
daily.push_back(temp1);
}
double days = 1.0/daily.size();
double temp2 = std::accumulate(daily.begin(), daily.end(), 0.0, std::multiplies<double>());
double GM = (pow(temp2, days) ) -1.0;
cout << "GM is " << GM << endl;
// The geometric mean will always be equal to or less than the arithmetic mean.
return GM;

}
Кажется, что здесь отсекаются десятичные дроби:

double temp2 = std::accumulate(daily.begin(), daily.end(), 0.0, std::multiplies<double>());

У меня есть смутное представление о том, что здесь значение int имеет приоритет перед double, но я не могу понять, где. В дополнение к этому моя обработка цикла for оставляет желать лучшего. Указанные здесь объекты классов хорошо использовались в других функциях, поэтому проблема заключается в этом коде. Целочисленные аргументы для функции — это даты в виде чистых целых чисел, используемые в интерфейсе, и все классы векторов объектов имеют одинаковые индексы для ссылки на данные.
Функции поиска и расстояние дают мне точные индексы дат, по которым я ищу вектор, так что я могу вернуться и использовать эти индексы в векторе цен закрытия.
Любая помощь приветствуется.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector