2
Sponger
19.05.16
✎
13:32
|
// Возвращает внутреннюю ставку доходности для графика денежных потоков
//
// Параметры:
// мПлатежи - Массив - Обязательный. Ряд денежных потоков, соответствующий графику платежей, приведенному в аргументе "даты".
// Первый платеж является необязательным и соответствует затратам или выплате в начале инвестиции.
// Если первое значение является затратами или выплатой, оно должно быть отрицательным.
// Все последующие выплаты дисконтируются на основе 365-дневного года. Ряд значений должен содержать по крайней мере
// одно положительное и одно отрицательное значение.
// мДаты - Массив - Обязательный. Расписание дат платежей, которое соответствует ряду денежных потоков.
// Предп - Число - Необязательный. Величина, предположительно близкая к результату ЧИСТВНДОХ.
// Точность - Число - Необязательный. - Точность вычисления результата.
// Чем ближе шаг изменения Предп (0.001) к нулю, тем точнее получается результат.
//
//Возвращаемое значение:
// Число -
//
Функция ЧИСТВНДОХ(мПлатежи, мДаты, Предп=0.1, Точность = 0.0001) Экспорт
Если мПлатежи.Количество() = мДаты.Количество() и мПлатежи[0] < 0 Тогда
p = 0;
Для Сч = 0 По мПлатежи.Количество()-1 Цикл
p = p + мПлатежи[Сч] / Pow(1 + Предп,((мДаты[Сч] - мДаты[0])/60/60/24)/365);
КонецЦикла;
Если p < 0 Тогда
Пока p <= 0 Цикл
Предп = Предп - Точность;
p = 0;
Для Сч = 0 По мПлатежи.Количество()-1 Цикл
p = p + мПлатежи[Сч] / Pow(1 + Предп,((мДаты[Сч] - мДаты[0])/60/60/24)/365);
КонецЦикла;
КонецЦикла;
Иначе
Пока p >= 0 Цикл
Предп = Предп + Точность;
p = 0;
Для Сч = 0 По мПлатежи.Количество()-1 Цикл
p = p + мПлатежи[Сч] / Pow(1 + Предп,((мДаты[Сч] - мДаты[0])/60/60/24)/365);
КонецЦикла;
КонецЦикла;
КонецЕсли;
Возврат Предп;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
есть это, но неверно считает
|
|