logo
logo

Форум составная валюта

создать новую тему раскрыть все
составная валюта pab 03/02/2016 17:20 #написать ответ
Добрый день. Есть ли возможность в программе определить значения остатков в своей валюте, которая будет равняться скажем  стоимости бивалютной корзины или стоимости корзины из нескольких валют? При наличии крос-курсов валют в программе, конечно.
Остатки пересчитать можно, но стоимость корзины автоматически вычисляться не будет Дим(м) 03/02/2016 17:59 #написать ответ
Вы можете добавить любую валюту и пересчитывать остатки в ней. Но нужны будут курсы для всех исходных валют. Автоматически считать такие программа не умеет.
 
Скажем, есть "корзина" из 20 USD, 20 EUR и 2000 RUB.
Тогда цену этой валюты (KRZ?) по отношению к USD, EUR, RUB (и всем остальным валютам! в которых у вас могут быть остатки) нужно каким-то образом занести а базу.
 
Т.е. их либо придётся вводить вручную (или через экспорт-импорт в Excel), или загружать с какого-то сайта, или попытаться написать хитрый плагин импорта курсов.
 
P.S. Честно говоря, я не уверен, что полностью представляю, как работают мультивалютные корзины. Так что выкладки выше, быть может, полная чушь. :-)
Можно добавить "корзину" в Универсальный плагин Дим(м) 03/02/2016 19:01 #написать ответ
Я мог бы добавить расчёт корзины в Универсальный плагин загрузки курсов. Возьмётесь составить ТЗ? :-)
 
Ключевые вопросы:
- В каком виде вы хотели бы задавать корзину? Формула вида "20*USD + 20*EUR + 2000*RUB" годится?
- Нужно ли одновременно обсчитывать две и более корзины или достаточно одной?
- Нужно ли рассчитывать стоимость корзины в других, не входящих в неё валютах? И если корзин более одной - их стоимость "друг в друге"?
 
Стоит заметить, что у такого подхода есть ограничения.
У плагина нет доступа к данным программы. Соответственно, все расчёты он может производить только с данными, полученными из выбранного источника курсов валют. И, как следствие, валюты, отсутствующие в источнике курсов, не смогут быть частью корзины (например, при загрузке курсов с сайта Центробанка вы не сможете включить в корзину какой-нибудь Bitcoin).
BRD pab 04/02/2016 14:04 #написать ответ
На вопросы ответить готов.
 
- Формула либо такая, но с точностью до 4-х знаков после запятой, либо вида "(A*USD + B*EUR + C*RUB)/D". Плюс было бы неплохо иметь возможность завести обратный индекс. Вида "D/(20*A + 20*B + 2000*C)".
- Для моих текущих задач необходимости в двух и более корзинах нет, но возможность сравнить два и более индекса заманчива.
- Нужна возможность переопределения индекса с последующим перерасчетом крос-курса.
 
В общем нужно в итоге получать в AbilityCash крос-курсы корзины, выраженной одной из формул "(A*USD + B*EUR + C*RUB)/D" или "D/(20*A + 20*B + 2000*C)" (т.е. иметь возможность выбора вида формулы); иметь возможность изменить состав валюты с последующим перерасчетом крос-курсов (добавить или убрать валюты, изменить коэффициенты).
Есть ещё один способ Дим(м) 03/02/2016 22:23 #написать ответ
Поскольку база AbilityCash - это самый обычный SQLite (если не используется шифрование), то обсчёт таких специальных валют можно написать на любом языке (скажем, Python) и запускать в любое время, отдельно от AbilityCash.
 
В таком случае обсчёт будет работать с полным доступом к данным AbilityCash, и, соответственно, любые ограничения исчезнут.
Это вариант, но... pab 04/02/2016 13:28 #написать ответ
я никогда не работал с программированием в БД. Мой предел пока -- Select SQL, да и то, как я понимаю, весьма ограниченный. Написать обсчет валюты для меня задача пока сложная, если вообще выполнимая.
Я больше склоняюсь к варианту с отдельной программой Дим(м) 04/02/2016 15:23 #написать ответ
Всё же в плагине загрузки курсов эта функциональность несколько не на своём месте.
 
Попробую посмотреть, что у меня получится. Но, к сожалению, не могу ничего сказать о сроках. Свободного времени сейчас совсем мало.
 
А пока что лучшее решение - экспорт базы в Excel, расчёт стоимости корзины по формуле и потом импорт экселя обратно в программу.
Это даже можно попробовать "автоматизировать" с помощью AutoIt - https://www.autoitscript.com/site/autoit/
С экспортом есть одна загвоздка... pab 04/02/2016 15:44 #написать ответ
Курсы валют -- это множество строк вида "Дата;Валюта;курс".
Во-первых не для всех дат есть курсы и непонятно откуда его брать для недостающих дат и как эту логику загнать в формулу. С макросами екселя я не знаком. Я когда это делал, то много приходилось делать руками. Преобразовывать в форму "Дата;Валюта1;Курс1;Валюта2;Курс2", а потом рассчитывать формулу.
Во-вторых непонятно как потом рассчитать крос-курсы к остальным валютам в программе или загнать их в программу.
 
Хотя вполне может быть что это сложности именно для меня.
Есть что потестировать Дим(м) 09/02/2016 19:41 #написать ответ
Я тут набросал заготовку скрипта для расчёта "корзинных" валют. Пока что без модификации базы AbilityCash.
 
Дайте свой email или напишите на sabio .. tut .. by
 
Для работы скрипта понадобится Python. Качайте версию 3.х отсюда: http://python.org/
готов. скачал и установил. Ждите письма. (-) pab 09/02/2016 23:47 #написать ответ