ОК, я не хочу, чтобы это был еще один вопрос «как мне получить исторические данные о запасах».
Я уже нашел множество легкодоступных источников для этого, даже аккуратно экспортированных в прямыеCSV загружает с таких сайтов, как Google Finance, Yahoo и Finviz.
Программное обеспечение, которое я пишу, активно использует удобные инструменты, включая YahooFinance и прекрасный Beancounter Дирка Эддельбюттеля.
Мой вопрос, возможно, особенно если кто-то знаком сКогда я запрашиваю цены на конец дня для одной акции, как я могу убедиться, что все эти исторические данные кэшируются (например, в локальные текстовые или sqlite файлы), чтобы свести к минимуму попадание в сеть и ускорить повторениезапросы перекрывают временные рамки?
Вызывает поиск сети по сегодняшней цене в реальном времени, если она доступна, но неизбежна, что само по себе хорошо.Мой скрипт pricehist.sh сочетает это с ценами OHLCV на акции N дней назад, которые также можно легко получить, например, с помощью.wget или curl на правильный URL + правильные переменные GET.
$ ./pricehist.sh VQT 6
VQT 2011-12-14 125.50 125.50 124.43 124.49 20360
VQT 2011-12-13 128.00 128.00 125.28 125.39 24400
VQT 2011-12-12 127.50 127.50 126.36 126.66 9100
VQT 2011-12-09 128.00 128.31 127.82 128.14 12100
В приведенном выше примере я бы хотел, чтобы pricehist.sh:
- посмотрел текущие рыночные данные на сегодня, еслилюбая, поэтому цена закрытия фактически является последней ценой, если сессия не окончена.СОВЕРШЕНО
- Убедитесь, что остаток запрошенной истории для этого символа тикера еще не сохранен локально, в противном случае:
- Просмотрите историю VQT за 6 дней, сохраните ее и распечатайте заполненную таблицу.Совершено
Несмотря на все мои поиски, я все еще не уверен, как заставить beancounter просто выводить таблицу OHLCV одной акции независимо от портфеля ... НЕ этот вывод:
$ setup_beancounter -l beancounter.stockdata.sqlite
$ beancounter addstock VQT ACPW
$ beancounter backpopulate --prevdate '1 month ago' --date 'today' VQT ACPW
Adding VQT from 20111114 to 20111214
Adding ACPW from 20111114 to 20111214
$ beancounter dayendreport --prevdate '1 month ago' --date 'today' VQT
## ..... hoping for OHLCV table of VQT only but get this instead:
===============================================================================
Profit / loss from 12 Dec 2011 to 14 Dec 2011 abs, rel change
-------------------------------------------------------------------------------
Citigroup, Inc. N USD 2690.00 26.90 2605.00 26.05 -85.00 -3.16%
Exxon Mobil Corpo USD 6039.75 80.53 5958.00 79.44 -81.75 -1.35%
Google Inc. USD 15640.75 625.63 15451.75 618.07 -189.00 -1.21%
International Bus USD 9557.50 191.15 9436.00 188.72 -121.50 -1.27%
-------------------------------------------------------------------------------
Grand Total USD 33928.00 33450.75 -477.25 -1.41%
===============================================================================
ИспользованиеВместо этого в модуле Perl Finance я просто не вижу, где активировать кэширование и какие локальные файлы данных будут использоваться для хранения.Каждый вызов yahoofinance.rb показывает мне свой веб-трафик в логах прокси-сервера squid.Тысячи запросов EOD, часто накладывающиеся друг на друга, на нескольких этапах обработки моего движка, делают эти поиски в Интернете серьезным узким местом.
Я полагаю, что это колесо уже изобретено, и я буду использовать полную серверную часть RDBMS.если бы мне пришлось, хотя это означало бы облагать налогами мои сценарии Ruby, Perl и Bash с клиентами MySQL.
Для сравнения, то, что я создал для польского фондового рынка, поддерживало только текстовые файлы для каждого из примерно 700 символов иобрабатывается только grep, sed и awk невероятно быстро - почти мгновенно, несмотря на тысячи циклов зацикливания эквивалентных сценариев - поэтому ежедневный анализ моего программного обеспечения для обмена GPW выполняется за минуты, а не часы.