Git Product home page Git Product logo

yahoo-finance-query's Introduction

YahooFinanceQuery

A PHP class to query the Yahoo Finance API.

Features

  • search for symbol via Yahoo.Finance.Symbol.AutoSuggest
  • query current quotes for symbols
  • query historical quotes for single symbol
  • query intraday quotes for single symbol
  • query basic stock info
  • query list of related stocks for index symbols
  • query full list of sectors with related industries

Example

You can test an example.php at http://code.dirkolbrich.de/YahooFinanceQuery/

Installation

require via composer.json in your project root

{
    "require": {
        "dirkolbrich/yahoo-finance-query": "dev-master"
    }
}

Implementation

As simple as that:

use DirkOlbrich\YahooFinanceQuery\YahooFinanceQuery;
// [...]
$query = new YahooFinanceQuery;

or as static:

use DirkOlbrich\YahooFinanceQuery\YahooFinanceQuery;
// [...]
YahooFinanceQuery->make();

Configuration

YahooFinanceQuery can be configured to return the data as an array or the raw json. Default returnType is array.

The config setting has to be passed as an array array('returnType' => 'array') or array('returnType' => 'json').

At initialisation:

$query = new YahooFinanceQuery(array('returnType' => 'json'));

or as static:

YahooFinanceQuery->make(array('returnType' => 'json'));

At run-time:

$query = new YahooFinanceQuery;
$query->config(array('returnType' => 'json'));

The current config setting can be retrieved with:

$query->getConfig();

To retrieve the raw cURL result use raw() as addition to the query. This method must be called before the actural query method.

$query->raw()->quote()->get();

To force the query via the YQL api (if possible), use the yql() method within the query string. This method must be called before the actural query method. The default is set to not use YQL, as I think YQL querys are unreliable and often with truncated results.

$query->yql()->quote()->get();

Usage

Querys are chainable. Use the get() method to to retrieve the results.

$data = $query->method()->get();

The following query methods are available:

  1. symbolSuggest($string)

    Query for symbol suggestion via the YAHOO.Finance.SymbolSuggest.ssCallback

    $string = 'basf';
    $data = $query->symbolSuggest($string)->get();
  2. quote(array $symbol [, array $params])

    Query for current quote for given symbols and given parameters.

    The passed parameter $symbol must be an array. Several symbols can be passed.

    The passed parameter $params is optional and must be an array too. It accepts the parameters as a written word or as tags. See as reference the $quoteParams variable in the class definition. If $params is empty, the query will use all possible params.

    The params 'Symbol', 'LastTradeTime' and 'LastTradeDate' will be quered by default. There will be a unified UTC 'LastTradeTimestamp' added to the result array.

    $symbol = array('bas.de');
    $params = array('LastTradePriceOnly', 'x', 'c1');
    $data = $query->quote($symbol, $params)->get();
  3. historicalQuote(array $symbol [, $startDate, $endDate, $param])

    Query for historical quotes for given symbol with given start date and end date.

    Only one $symbol can be passed per query and must be a string.

    $startDate and $endDate must be in the format YYYY-MM-DD. If no dates are passed, the query will grab all available historical quotes. If only one date is passed, the other one will be set to the maximum available.

    $param is set to default d = daily. See $historicalQuoteParams variable for other options.

    $symbol = array('bas.de');
    $startDate = 2013-07-26;
    $endDate = 2014-01-06;
    $param = 'd';
    $data = $query->historicalQuote($symbol, $startDate, $endDate, $param)->get();

    I recommend not to use the yql() method with historical quotes, as the YQL console permits only up to 365 single result quotes. To retrieve a full set of historical quotes will not be possible via YQL.

  4. intraDay($symbol [, $period, $param])

    Query finance.yahoo.com for intraday quotes. The symbol must be passed as as string.

    $period is optional and default set to 1d. It is possible to retrieve intraday quotes for up to the last 15 days.

    $param is optional and default set to quote. For other options see the $intraDayParams variable.

    $symbol = 'bas.de';
    $period = '5d';
    $data = $query->intraDay($symbol, $period)->get();
  5. stockInfo($symbol)

    Query finance.yahoo.com for basic stock information. The symbol must be passed as as string.

    $symbol = 'bas.de';
    $data = $query->stockInfo($symbol)->get();
  6. indexList(array $symbol)

    Query for an index which returns the symbol and name of the components. Several symbols may be passed as an array.

    See http://finance.yahoo.com/intlindices?e=europe for more symbols to world indices. The caret ^ character must be part of the symbol.

    $symbol = array('^GDAXI');
    $data = $query->indexList($symbol)->get();
  7. sectorList()

    Query for a complete list of sectors and their corresponding industries.

    This function is static without any params.

    $data = $query->sectorList()->get();

    Which returns an array in this form:

    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 ( ... )
            ) 

Recources

Some informative blog post and websites:

Yahoo YQL homepage

Blog post on that matter

Blog post from Joseph D. Purcell with an overview over finance API'S is a good entry point

www.gummy-stuff.org explains the Yahoo Finance .csv API

An overview over different api endpoints by Matthias Brusdeylins (german)

Tutorial for the YQL console by Thomas Belser (german)

yahoo-finance-query's People

Contributors

dirkolbrich avatar ihr-it-projekt avatar leihog avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.