Как проверить, открыта ли фондовая биржа (NYSE) в настоящее время? - PullRequest
2 голосов
/ 24 февраля 2012

Я пишу приложение, связанное с фондовым рынком, и хотел бы включить индикатор того, является ли фондовый рынок (NYSE) в настоящее время открытым / закрытым. Приложение Apple «Акции» на iPhone содержит эту информацию. Я полагаю, что приложение Stocks тестирует что-то от Yahoo, так как цитаты оттуда и напрямую связаны с финансами Yahoo. Тем не менее, из-за всего моего поиска по YQL, StackOverflow и в Интернете я не могу найти прямой запрос.

Есть ли способ узнать, открыта ли в данный момент NYSE / закрыта?

Спасибо

Дэмиен

Ответы [ 2 ]

6 голосов
/ 24 февраля 2012

В соответствии с Википедией

NYSE открыта для торговли с понедельника по пятницу с 9:30 до 16:00 по восточному времени, за исключением выходных, объявленных биржей в вперед.

Вы можете легко сделать это жестко или создать таблицу в БД с заполненными праздничными днями. Затем используйте время и часовой пояс устройства, чтобы узнать, открыта или закрыта NYSE.

5 голосов
/ 17 июля 2014

Похоже, Apple предоставляет услугу с этой информацией.

Пример / TL; др:

Сделайте следующий curl вызов:

curl "http://wu-quotes.apple.com/dgw?imei=42&apptype=finance" -H "Content-type: text/xml" -d "<?xml version='1.0' encoding='utf−8'?><request devtype='Apple_OSX' deployver='APPLE_DASHBOARD_1_0' app='YGoAppleStocksWidget' appver='unknown' api='finance' apiver='1.0.1' acknotification='0000'><query id='0' timestamp='`date +%s000`' type='getquotes'><list><symbol>GE</symbol></list></query></request>"

(Возможно, вам придется заменить параметр imei другим случайным числом)

Это вернет ответ, подобный следующему (я отформатировал XML и удалил ненужные части):

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <result type="getquotes" timestamp="1405539220">
    <list count="1" total="1">
      <quote>
        ...
        <!-- Verify that this is the exchange you are interested in -->
        <exchange>NYSE</exchange>
        ...
        <!-- 0 means market is closed, anything else means its open -->
        <status>1</status>
        ...
      </quote>
    </list>
  </result>
</response>

Найдите элемент <status>. Если значение 0, NYSE закрыто, в противном случае NYSE открыто.

Подробнее

Apple предоставляет сервис, который использует виджет MacOS Stocks Dashboard для определения, открыты или закрыты рынки (предположительно, приложение для iPhone также использует его). Насколько мне известно, эта служба не имеет документов, но в этом ответе делается попытка документировать информацию, имеющую отношение к вашему вопросу.

Служба расположена по следующему URL-адресу конечной точки:

http://wu -quotes.apple.com / DGW? = IMEI (UID) и AppType = финансы

(Вы можете просто использовать случайное число для UID)

Сервис действительно предназначен для получения информации о котировках акций, но в ответе имеется свойство status, которое, по-видимому, соответствует, если рынок, на котором торгуются акции, открыт или закрыт. Чтобы позвонить, отправьте на него следующий XML-код:

<?xml version='1.0' encoding='utf−8'?>
<request devtype='Apple_OSX' deployver='APPLE_DASHBOARD_1_0' app='YGoAppleStocksWidget' appver='unknown' api='finance' apiver='1.0.1' acknotification='0000'>
  <query id='0' timestamp='{{millis since epoch}}' type='getquotes'>
    <list>
      <symbol>{{stock symbol}}</symbol>
      <!-- More symbols -->
    </list>
  </query>
</request>

(убедитесь, что для заголовка Content-type установлено значение "text / xml").

Поскольку вы заявили, что интересуетесь NYSE, вы опубликуете символ такой компании, как GE (которая торгуется на NYSE, как в моем примере выше). Если вы заинтересованы, скажем, в NASDAQ, вы должны разместить компанию, торгуемую NASDAQ (например, AAPL).

Ответ, который вы получите, должен быть в следующем формате:

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <result type="getquotes" timestamp="1405539220">
    <list count="1" total="1">
      <quote>
        <!-- quote details here -->
      </quote>
      <!-- more quotes here if you submitted more than one symbol -->
    </list>
  </result>
</response>

В элементе <quote>:

  1. Найдите элемент <exchange>, чтобы убедиться, что он соответствует обмену, который вы ищете (например, "NasdaqGS", "NYSE").
  2. Найдите элемент <status>. Значение 0 означает, что фондовые рынки закрыты. Любое другое значение означает, что они открыты.

Виджет Акции выполняет итерацию по всем символам, для которых он настроен, и считает, что рынки открыты тогда и только тогда, когда все котировки имеют ненулевые статусы.

Для получения более подробной информации, пожалуйста, обратитесь к /System/Library/WidgetResources/.parsers/stocksParser.js, который должен быть доступен на каждом Mac.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...