radicalloop / yahoo-finance-query
一个用于查询 Yahoo Finance API 的 PHP 类
Requires (Dev)
- phpunit/phpunit: 4.0.*
README
一个用于查询 Yahoo Finance API 的 PHP 类。
特性
- 通过 Yahoo.Finance.Symbol.AutoSuggest 搜索符号
- 查询符号的当前报价
- 查询单个符号的历史报价
- 查询单个符号的日内报价
- 查询基本股票信息
- 查询与指数符号相关的股票列表
- 查询与相关行业相关的所有行业列表
示例
您可以在 http://code.dirkolbrich.de/YahooFinanceQuery/ 测试 example.php
安装
在项目根目录的 composer.json
中通过 require 引用
{ "require": { "dirkolbrich/yahoo-finance-query": "dev-master" } }
实现
如此简单
use DirkOlbrich\YahooFinanceQuery\YahooFinanceQuery; // [...] $query = new YahooFinanceQuery;
或者作为静态
use DirkOlbrich\YahooFinanceQuery\YahooFinanceQuery; // [...] YahooFinanceQuery->make();
配置
YahooFinanceQuery 可以配置为返回数组或原始 json 数据。默认的 returnType
是 array
。
配置设置必须作为数组传递 array('returnType' => 'array')
或 array('returnType' => 'json')
。
初始化时
$query = new YahooFinanceQuery(array('returnType' => 'json'));
或者作为静态
YahooFinanceQuery->make(array('returnType' => 'json'));
运行时
$query = new YahooFinanceQuery; $query->config(array('returnType' => 'json'));
可以通过以下方式检索当前的配置设置
$query->getConfig();
要检索原始 cURL 结果,请使用 raw()
作为查询的附加选项。必须在实际查询方法之前调用此方法。
$query->raw()->quote()->get();
要强制通过 YQL api(如果可能)进行查询,请在使用查询字符串中的 yql()
方法。必须在实际查询方法之前调用此方法。默认设置为不使用 YQL,因为我认为 YQL 查询不可靠,并且通常结果被截断。
$query->yql()->quote()->get();
使用方法
查询是可链式的。使用 get()
方法来检索结果。
$data = $query->method()->get();
以下查询方法可用
-
symbolSuggest($string)
通过 YAHOO.Finance.SymbolSuggest.ssCallback 查询符号建议
$string = 'basf'; $data = $query->symbolSuggest($string)->get();
-
quote(array $symbol [, array $params])
查询给定符号和参数的当前报价。
传递的参数
$symbol
必须是数组。可以传递多个符号。传递的参数
$params
是可选的,也必须是一个数组。它接受参数作为文字或作为标签。请参考类定义中的$quoteParams
变量。如果$params
为空,则查询将使用所有可能的参数。默认将查询 'Symbol'、'LastTradeTime' 和 'LastTradeDate' 参数。结果数组将添加一个统一的 UTC 'LastTradeTimestamp'。
$symbol = array('bas.de'); $params = array('LastTradePriceOnly', 'x', 'c1'); $data = $query->quote($symbol, $params)->get();
-
historicalQuote(array $symbol [, $startDate, $endDate, $param])
查询给定符号的给定开始日期和结束日期的历史报价。
每个查询只能传递一个
$symbol
,并且必须是一个字符串。$startDate
和$endDate
必须是 YYYY-MM-DD 格式。如果没有传递日期,则查询将获取所有可用的历史报价。如果只传递一个日期,则另一个日期将设置为最大可用日期。$param
设置为默认d
= daily。有关其他选项,请参阅$historicalQuoteParams
变量。$symbol = array('bas.de'); $startDate = 2013-07-26; $endDate = 2014-01-06; $param = 'd'; $data = $query->historicalQuote($symbol, $startDate, $endDate, $param)->get();
我建议不要与历史报价一起使用
yql()
方法,因为 YQL 控制台仅允许最多 365 个单个结果报价。无法通过 YQL 获取完整的历史报价集。 -
intraDay($symbol [, $period, $param])
查询 finance.yahoo.com 的日内报价。符号必须作为字符串传递。
$period
是可选的,默认设置为1d
。可以检索最后 15 天的日内报价。$param
是可选的,默认设置为quote
。有关其他选项,请参阅$intraDayParams
变量。$symbol = 'bas.de'; $period = '5d'; $data = $query->intraDay($symbol, $period)->get();
-
stockInfo($symbol)
查询 finance.yahoo.com 以获取基本的股票信息。符号必须以字符串的形式传递。
$symbol = 'bas.de'; $data = $query->stockInfo($symbol)->get();
-
indexList(array $symbol)
查询索引,返回组成成分的符号和名称。可以传递多个符号作为数组。
有关更多世界指数的符号,请参阅 http://finance.yahoo.com/intlindices?e=europe。符号中必须包含撇号
^
。$symbol = array('^GDAXI'); $data = $query->indexList($symbol)->get();
-
sectorList()
查询完整的行业列表及其对应行业。
此函数是静态的,不带任何参数。
$data = $query->sectorList()->get();
它以以下形式返回数组
Array ( [0] => Array ( [name] => Basic Materials [industries] => Array ( [0] => Array ( [name] => Agricultural Chemicals [id] => 112 ) [1] => Array ( [name] => Aluminum [id] => 132 ) ... ) ) [1] => Array ( [name] => Conglomerates [industries] => Array ( ... ) )
资源
一些信息性博客文章和网站
Yahoo YQL 主页
关于该主题的博客文章
Joseph D. Purcell 的博客文章,概述了金融 API
www.gummy-stuff.org 解释了 Yahoo Finance .csv API
- http://www.gummy-stuff.org/Yahoo-data.htm 更新:Yahoo 起诉 Mr. Ponzo 关于其公开可用 API 的文档,声称违反了他们的服务条款。但多亏了互联网档案馆,该网站的最后一个快照可在 http://web.archive.org/web/20140527154306/http://www.gummy-stuff.org/Yahoo-data.htm 获取
Matthias Brusdeylins 对不同 API 端点的概述(德语)
Thomas Belser 的 YQL 控制台教程(德语)