我正在编写一个与股票市场相关的应用程序,并希望包含一个指示股票市场(NYSE)当前是否开放/关闭的指标。 iPhone 上的 Apple“股票”应用程序包含此信息。我认为股票应用程序正在测试雅虎的某些内容,因为报价来自那里,并且它们直接链接到雅虎财经。然而,对于我在 YQL、StackOverflow 和网络上的所有搜索,我找不到直接查询。
有办法查询NYSE当前是否开盘/休市吗?
谢谢,
达米安
由维基百科
提供纽约证券交易所周一至周五上午 9:30 开放交易 – 东部时间下午 4:00,交易所宣布的假期除外 提前。
您可以轻松地对其进行硬编码,或者在数据库中创建一个填充假期的表。然后使用设备的时间和时区来查看 NYSE 是否开放或关闭。
Apple 似乎提供了包含此信息的服务。
拨打以下
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 股票仪表板小部件使用该服务来确定市场是开盘还是收盘(大概 iPhone 应用程序也使用它)。据我所知,这项服务没有记录,但这个答案试图记录与您的问题相关的信息。
该服务位于以下端点 URL:
http://wu-quotes.apple.com/dgw?imei=(UID)&apptype=finance
(您可以简单地使用随机数作为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>
(确保内容类型标头设置为“text/xml”)。
既然您表示您对 NYSE 感兴趣,那么您就会发布像 GE 这样的公司的符号(该公司在 NYSE 交易,如我上面的示例所示)。例如,如果您对纳斯达克感兴趣,您可以发布一家在纳斯达克上市的公司(例如 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>
元素内:
<exchange>
元素,确保其与您要查找的交易所匹配(例如“NasdaqGS”、“NYSE”)。<status>
元素。值 0
表示股市休市。任何其他值都表示它们是开放的。股票小部件会迭代其配置的所有交易品种,并当且仅当所有报价具有非零状态时才认为市场开盘。
有关更多详细信息,请参阅
/System/Library/WidgetResources/.parsers/stocksParser.js
,每台 Mac 上都应提供该功能。
Finnhub.io 提供此功能。具体来说,该函数的 Python 接口如下所示:
导入finnhub finnhub_client = finnhub.Client(api_key="") 打印(finnhub_client.market_status(交换='美国'))
您可以从 Finnhub 获取免费的身份验证密钥,并将其插入 api_key="" 参数中。我有理由相信免费密钥将赋予您使用此功能的权限。