Microsoft Money имеет долгую историю.
Начиная с первой версии Windows 3.0, выпущенной в 1991 году, и до версии Plus 2007 года, Money была удобным инструментом для управления личными финансами.
Помимо обычного управления счетом, Money также предлагала развитые онлайн-сервисы.
Их можно разделить на три компонента:
- Получение данных о котировках и конвертациях валют.
- Синхронизация данных аккаунта, как сейчас модно говорить, с облаком.
- Работа с онлайн-банкингом, в том числе оплата счетов по протоколу OFX.
А бесплатная версия Money Plus Sunset, выпущенная в 2010 году, больше не содержала поддержки онлайн-функций, став простым инструментом для офлайн-управления счетом.
Microsoft Money 2004 Standard пользуюсь с 2006 года.
За это время были попытки перейти на другие программы или онлайн-сервисы, но тем не менее Деньги оказались удобнее.
А вот неработающие функции откровенно расстраивали.
А если онлайн-банкинг в нашей стране бесполезен, потому что.
Насколько я знаю, даже ни один из крупных банков не поддерживает OFX для физических лиц, поэтому данных о курсах валют очень не хватало.
А онлайн-синхронизация после работы с одним онлайн-сервисом вообще была мечтой.
Сообщество создало несколько инструментов разной степени костыля, но у них есть один фатальный недостаток: они не интегрируются в Money и требуют ручного труда для получения результатов.
Ну а раз чуда ждать не пришлось, мечта сбылась это дело рук самих мечтателей.
Сразу оговорюсь, все написанное ниже относится к версии 2004. Возможно, предыдущие версии не будут иметь необходимого функционала, а последующие будут иметь поведение, отличное от ожидаемого.
Задачу возврата онлайн-функций можно разделить на два больших этапа:
- Получение данных о котировках и курсах валют.
- Синхронизация с онлайн-сервисом.
Microsoft Money имеет сложную и гибкую структуру.http://moneycentral.msn.com/Scripts/invisapi.dll
На первый взгляд монолитная программа состоит из множества компонентов, соединенных через OLE. Большинство компонентов имеют настройки либо в ini-файлах, либо в реестре, и это прекрасная возможность изменить поведение программы, не вмешиваясь в ее файлы.
Таким образом, можно изменить URL-адрес запроса, указав значение строкового параметра в реестре.
HKLM\Software\\Microsoft\\Investor\\StockQuotes\\QuoteServerURL
Затем мы можем перенаправить запросы с серверов Microsoft на наш собственный сервер.
Деньги отправляют запрос на указанный URL-адрес с помощью команды HTTP GET, включая список необходимых данных в качестве параметров адреса.
Пример: http://moneycentral.msn.com/Scripts/invisapi.dllЭV=5&S=$US:INDU,/RUBUS,/ECUUS,/ATSUS,/BECUS,/DEMUS,/FIMUS,/FRFUS,/GRDUS,/IEPUS,/ITLUS,/LUFUS,/NLGUS,/PTEUS,/ESPUS&Q=19,15,32,0,3,5,1,2,10,4,17,18,8C,E9,EA,1E,8,9,A2,104,3A,3B,3C,3D,7F,7D,7,13,14,14E,14F,EB,21,192,16A&N=8,15&H=15,5,20002+20201+20170916+20180316,20006+20201+20170916+20180316,20000+20201+20170916+20180316,20001+20201+20170916+20180316,20004+20201+20170916+20180316
Перед вами закодированный запрос на получение данных по биржевому индексу INDU, его исторических данных за год, а также данных по курсам валют.
Интересно, что вместо современного кода валюты USD используется US, а в запросе указан правильный код рубля: RUB.
В ответ Money ожидает данные в двоичной форме.
К сожалению, протокол InvAPI очень запутан, а его восстановление очень трудоемко.
К счастью для нас, Money умеет работать еще с двумя форматами: QWB и WebQUOTE.
Поэтому не очень понятно, почему Microsoft перешла на использование двоичного InvAPI, отказавшись от прилично структурированного WebQUOTE на основе XML, учитывая, что XML очень широко используется в Money.
Для использования альтернативных протоколов необходимо создать ключ в реестре HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Money\12.0\Online\WebQuoteServers.
Подраздел может иметь произвольное имя и должен содержать следующие параметры:
- ВебQTSrvrURL — основной параметр, содержит URL, на который будет отправлен запрос
- Тип сервера — Если сервер работает по протоколу QWB, то значение параметра должно быть равно QWB. Если используется WebQUOTE, этот параметр должен отсутствовать.
- Страны Фонда - фондовый рынок
- MnyMktСтраны — Денежный рынок, акции
- АкцииСтраны - запас
- TBillСтраны - неизвестный
- LookUpURL
- XRateFrom
- XRateTo
Если наоборот, то только на QWB-сервер.
С какой версии Money появилась поддержка протокола QWB (Quotes Write Back) узнать не удалось.
Но судя по всему, это был самый первый протокол, используемый для получения данных.
Money 2000 мог импортировать файлы в этом формате.
Но в версии 2004 этой функции больше нет.
При использовании QWB Money генерирует URL-адрес с параметрами запроса и отправляет его по HTTP с помощью метода GET.
Например: http://example.com/msmoney/webqt.qwbЭN=INDU
Где http://example.com/msmoney/webqt.qwbЭN=
— значение параметра WebQTSrvrURL.
Формат ответа прост: формат заголовка, дата/время и список данных по индексу.
Пример: <FORMAT>QWB2.0
<DATE>20180311105300
US:[email protected]@0@0@0@0@0@0@0@0@0@0@USD@
Формат даты — ГГГГММДДЧЧммСС.
Значения полей: 0 - WKN с информацией о стране, но по факту название индекса из запроса 1 — Последний (Ход в указанное время) (двойной) 2 — Высокая (Самая высокая цена на аукционе в этот день) (двойная) 3 — Низкая (Самая низкая цена на аукционе в этот день) (двойная) 4 — Открыть (Цена открытия) (двойная) Максимум 5–52 недели (диапазон 52 недель, начиная с ДАТЫ) (двойной) Минимум 6–52 недели (диапазон 52 недель, начиная с ДАТЫ) (двойной) 7 — P/E Ratio (EPS) (цена/прибыль (P/E)) (двойной) 8 — Volume (длинный) Объем торгов 9 - ? 1/0 (логическое значение) 10 — Акции в обращении (двойные) 11 - Рыночная капитализация (двойная) 12 — Код валюты (США, рубли.
) Этот формат предназначен для получения данных по акциям и индексам (ценным бумагам); через него невозможно будет получить курс обмена.
WebQUOTE — это следующий шаг в развитии протокола сбора данных.
Его использование позволяет получить более подробные данные.
Деньги формируют запрос в виде XML-документа и отправляют его методом POST на сервер.
Тело запроса выглядит следующим образом: <Эxml version="1.0" encoding="windows-1251"?>
<WEBQUOTE Version="1.0" Source="Money2K">
<QUOTERQ Symbol="$INDU" Type="INDEX" Country="US"/>
<HISTQUOTERQ Symbol="$INDU" Type="INDEX" Country="US" StartDate="20170918" EndDate="20180318"/>
</WEBQUOTE>
Формат ответа следующий: <WEBQUOTE>
<EXRATERS CurrFrom="" CurrTo="" datetime="" rate=""/>
<QUOTERS Symbol="" Country="" Type="STOCK|INDEX|MUTUAL|OTHER" Currency="string" DateTime="YYYYmmDD"
Price="double" Low="double" High="double" Open="double" PrevClose="double" YearHigh="double" YearLow="double"
Pe="double" Vol="dword" Out="double" Cap="double" NewsURL="string" Ask="double" Bid="double" Beta="double"
DividendYield="double" AmtEPS="double" Size="long" LastUpdate="YYYYmmDD" FYI="YYYYmmDD" News="YYYYmmDD"
PercentCash="double" PercentOther="double" PercentSmall="double" PercentLarge="double" PercentMedium="double"
BaseUnit="long"/>
<HISTQUOTERS Symbol="" Country="" Type="STOCK|INDEX|MUTUAL|OTHER" Currency="string" DateTime="YYYYmmDD"
Price="double" Low="double" High="double" Open="double" PrevClose="double" YearHigh="double" YearLow="double"
Pe="double" Vol="dword" Out="double" Cap="double" NewsURL="string" Ask="double" Bid="double" Beta="double"
DividendYield="double" AmtEPS="double" Size="long" LastUpdate="YYYYmmDD" FYI="YYYYmmDD" News="YYYYmmDD"
PercentCash="double" PercentOther="double" PercentSmall="double" PercentLarge="double" PercentMedium="double"
BaseUnit="long"/>
</WEBQUOTE>
Где ЭКСРАТЕРЫ — данные о конвертации валюты.
ЦИТАТЫ — данные о котировках на момент запроса.
ЦИТАТЫ — исторические данные по котировкам.
Набор возвращаемых данных значительно расширен по сравнению с QWB. Из названия атрибутов вполне понятно, какие данные они должны содержать.
Интересно, что Money никогда не запрашивает данные о конвертации валюты, но если в ответ содержит эти данные, то отлично их обрабатывает и сохраняет. При формировании ответа по любому протоколу следует учитывать коды валют, хранящиеся в базе данных.
Например, код рубля в Деньги записывается как RUR, и если написать RUB, то парсинг завершится с ошибкой.
Есть и третий вариант: использование протокола OFX. Данные в этом формате можно импортировать в виде файла, например, сгенерированного одной из утилит, или получить онлайн.
из банка, подключенного к Money. Но этот метод является вторичным по отношению к QWB и WebQUOTE и требует ручного вмешательства.
Теги: #microsoft #microsoft деньги #деньги #деньги #деньги 2004 #api #обратное проектирование
-
Ipod Touch 5 Или, Возможно, Ipad2?
19 Oct, 24 -
Электромобили: Революция Грядет
19 Oct, 24 -
Наше Виртуальное Будущее – Каким Оно Будет?
19 Oct, 24 -
Больше Уязвимостей, Лучшая Статистика
19 Oct, 24