создать новую тему раскрыть все
свернуть/развернуть ветвь Пересчет валют [Роман 06/10/2004 11:04] # написать ответ
 
После конвертации старого файло в АС2.0 изменились данные в отчетах, где используется пересчет валют. Изменился алгоритм? Проясните ситуацию, пожалуйста.
свернуть/развернуть ветвь Вы правы,... [Dervish 06/10/2004 12:23] # написать ответ
 
алгоритмы немного изменились. Стали более корректными. И вот суть изменений:
 
В первой версии при расчёте курса использовалась не только дата, но и время операции. И тогда получалось, что $1000 в рублях в 12 часов дня совсем не было равно $1000 в рублях в 21 час того же дня. Наверное это неправильно. Во второй версии курс, даже аппроксимированный, устанавливается на целые сутки. Одно значение курса для периода с полуночи до полуночи.
 
Кроме того, если брать график остатков по счетам, в первой версии был некорректный алгоритм расчёта остатков. Работал он так: вычислялся суммарный остаток на начало периода, а дальше по всем операциям, которые попадали в график, сумма конвертировалась к нужной валюте и просто прибавлялась к начальному остатку графика. Ошибка в том, что программа просто не учитывала изменения курса по уже накопленной сумме остатка. Наблюдать это можно так: постройте график за текущий месяц и запомните конечную сумму графика. После этого перенесите дату начала графика назад на пару лет и сравните конечную сумму с той, которую вы запомнили. Если в графике счета с разными валютами, вы обязательно увидите, что суммы не совпадают.
 
Во второй версии график остатков считается немного сложнее, но правильнее. Программа создаёт по одному накопительному регистру на каждую валюту, которая участвует в графике. Вычисляется сразу начальные остатки по каждой из валют, а дальше, при обработке операций программа пересчитывает суммарный остаток исходя из курсов на каждый день. В итоге мы получаем 100% правильное значение.
 
исправление и "вылизывание" алгоритма расчёта остатков заняло основное время по разработке графика остатков. Если бы я взял старые алгоритмы, всё получилось бы гораздо быстрее. Но проблема была известна, так что не хотелось переносить её из первой версии во вторую.
 
И ещё одно. Я постарался довольно дотошно исследовать новый алгоритм на предмет ошибок. Несколько нашёл и исправил. Хотя я и не исключаю, что нашёл не все. Если получится обнаружить ошибку, я буду очень благодарен за сообщение о ней.
 
Спасибо.
 
Хочу в этой теме добавить еще о рейтинге валют. Я скачал рейтинги валют из Интернета. Затем хотел посмотреть рейтинг доллара(ам.) к евро. Честно говоря, я рассчитывал увидеть результат 1 доллар - к евро. А в результате 65.302 к 53.074. Насколько я понимаю, теперь нужно сумму долларов разделить на сумму евро. Но почему AbilityCash самостоятельно не делает эту калькуляцию? Ведь всего лишь нужно ввести одну формулу (разделить два числа) - сумму первой выбранной валюты разделить на сумму второй выбранной валюты.
 
потому что:
 
а) при таком делении пострадает точность расчётов и
 
б) неизвестно что на что делить. Эта задача не имеет алгоритмического решения, автоматически программа не сможет решить, что должно быть в делителе, а что - в знаменателе.
 
Посмотрите на курсы, например, доллара к японской йене. Что на что делить?
 
Я не могу найти абсолютно правильного алгоритма. А с учётом пункта (а) я решил немного пожертвовать удобствами и сохранить точность.
 
Кстати, надо подумать, возможно, что удобные курсы можно будет посмотреть на графике курсов.
 
Но там тоже возникнет вопрос: что на что делить и как учитывать, когда одна из валют номинируется не как единица, а, допустим, за 100 единиц.
 
Какие будут предложения?
свернуть/развернуть ветвь С последним аргументом [Юрко 06/10/2004 19:35] # написать ответ
 
должен согласиться. Но вот взгляте на сайт http://finance.yahoo.com/currency?u - я, конечно, не знаю, как они все это сделали, но обратите внимания на таблицу - тот же американский доллар к японской йене отображается нормально. Да и любую валюту можно выбрать за одну единицу - и пересчитать. Я не в курсе, как это все делается, но, определенно, есть какая-то универсальная формула для этого. Может, кто-нибудь сможет подсказать...
 
Кстати, возникла идея: а если подключиться к этому сайту для автоматического обновления валют - возможно это каким-то образом и решит проблему...
свернуть/развернуть ветвь Нееет,.... [Dervish 07/10/2004 01:26] # написать ответ
 
этот сайт служит для конвертации данных. А конвертация в AbilityCash работает нормально, правильно. И примерно на тех же принципах, как в этом сайте.
 
А вот что меня действительно заинтересовало, так это ввод данных. Возможно, что следует попробовать сделать так же и в AbilityCash.
 
Подключаться к этой странице имхо не следует, он служит несколько иным целям.
 
.. "единица квантования" Well (quotation unit)
Тогда просто при добавлении валюты в базу надо будет указать, что доллары/евро/рубли/и т.д. измеряются в единицах, а йены в сотнях/тысячах.
По-умолчанию, конечно, должна быть единица. Well
 
А что касается деления, то здесь, мне кажется, можно просто всегда делить большее на меньшее. To wink
 
P.S. Интересно, есть ли пользователи AC, которые реально работают с йенами и подобными валютами?
свернуть/развернуть ветвь По порядку:... [Dervish 07/10/2004 01:30] # написать ответ
 
По порядку:
 
1. О "единицах квантования"
 
Думаю, надо быть очень осторожным с введением новых полей. Можно запутать программу. И так она не очень легковесна получается.
 
2. "всегда делить большее на меньшее"
 
Не годится. У меня было письмо из прибалтики (не помню конкретно, из какой страны), автор письма писал, то у них нормально, когда значение курса меньше единицы.
 
3. "...есть ли пользователи AC..."
 
Думаю, что уже есть. Если верить статистике сайта... Впрочем, даже если сейчас нет, они могут появиться в будущем.
свернуть/развернуть ветвь Кросс-курсы [Taras 08/10/2004 02:04] # написать ответ
 
рассчитываются в момент импорта данных с сайта НБ РФ (в частности). Нац.Банк национальную валюту "оценивает" к 1,10,100 и т.д. других валют, в зависимости от того больше или меньше пересчитываемая валюта к национальной валюте (это математическое соотношение). Пересчёт курсов третьих валют друг к другу требует определения приоритета этих валют дру к другу. Если кому-то не нравится принцип деления большего на меньшее, приоритет можно определять при выборе валют ("Отношение валют"): в первой строке Валюта - делитель, во второй строке Валюта - делимое. (прошу прощения за сбивчивость терминов - не специалист).  :-)
И соответственно кросс-курс вычислять на момент выбора валют.
свернуть/развернуть ветвь Давайте мы... [Dervish 08/10/2004 02:08] # написать ответ
 
...вернёмся к этому вопросу тогда, когда будет сделан график курсов валют. Возможно, все проблемы отпадут сами собой.
свернуть/развернуть ветвь Предложение [Ed 18/10/2004 12:21] # написать ответ
 
А почему не сделать переключатель "Привести к единице" или "Использовать как базовую" возле названия каждой валюты и расчитанные значения показывать в дополнительной колонке. Тогда и исходные данные будут видны, и курс относительно любой из валют, да и места на панели там достаточно. Причем можно и размерность указывать - за 1 денежную единицу, за 10, за 100. Кому как удобнее.
 
Возможно в будущем я сделаю это.
свернуть/развернуть ветвь про алгоритм [ELGato 25/10/2004 19:37] # написать ответ
 
Существуют устоявшиеся варианты котирования валют, надо поискать информацию по FOREX. Например доллар/цена всегда даётся в долларах за 100 йен и т.п.
 
Похоже, я нечаянно удалил письмо. Мельком успел только заметить, что тема письма была что-то вроде "Курсы валют".
 
Если вы отправляли мне письмо, пожалуйста, продублируйте его. Я не успел прочитать и, конечно, не могу на него ответить.
 
Извините.
свернуть/развернуть ветвь курсы [ElGato 26/10/2004 11:07] # написать ответ
 
Письма не писал, елси Вам дублируются сообщения в форуме в виде письма, то в форуме оно сохранилось
свернуть/развернуть ветвь Я послал [Павел 26/10/2004 20:54] # написать ответ
 
Сабж
 
Извините за мою нечаянную ошибку.