Jak uzyskać notowania giełdowe za pomocą interfejsu API Google Finance?


119

Szukam dostępu do danych finansowych z usług Google.

Znalazłem ten adres URL, który zawiera dane giełdowe firmy Microsoft.

Jakie są wszystkie możliwe parametry, które Google dopuszcza dla tego rodzaju żądań HTTP? Chciałbym zobaczyć wszystkie informacje, jakie mogłem uzyskać.


36
Jak znalazłeś ten adres URL?
timmyc

2
Możesz łatwo uzyskać dane Google Finance za pośrednictwem YQL, które jest proste i oparte na REST. Przykład można znaleźć tutaj: jarloo.com/google-finance-and-yql
Kelly

To świetne pytanie, czy jest więcej aktualnych odpowiedzi?
NickO,

1
@ Timmyc - client=igparametr prowadzi mnie do wniosku, że jest / był używany w widżecie iGoogle. Tylko przypuszczenie.
dana,

Odpowiedzi:


40

Istnieje całe API do zarządzania portfelami. * Link usunięty. Google nie zapewnia już w tym celu interfejsu API dla programistów.

Uzyskanie notowań giełdowych jest trochę trudniejsze. Znalazłem artykuł, w którym ktoś pobierał notowania giełdowe za pomocą Arkuszy kalkulacyjnych Google.

Możesz także korzystać z gadżetów, ale myślę, że nie o to ci chodzi.

Wspomniane API jest interesujące, ale nie wydaje się być udokumentowane (o ile i tak udało mi się znaleźć).

Oto kilka informacji o cenach historycznych , tylko w celach informacyjnych.


5
Istnieje nieudokumentowany interfejs API od Google, którego możesz użyć, aby uzyskać informacje giełdowe o wiele łatwiej, ponieważ jest oparty na REST i nie wymaga uwierzytelniania. Oto przykład w C # jarloo.com/google-stock-api
Kelly,

24
Uwaga: interfejs API Google Finance został oficjalnie wycofany 26 maja 2011 r. I zostanie zamknięty 20 października 2012 r.
shawnwall

Ta odpowiedź jest w większości niezwiązana z tematem. Odpowiedź poniżej jest poprawna.
Dan Dascalescu

74

1
To doprowadziło mnie dokładnie do tego, czego szukałem! Dzięki.
Oprogramowanie Grizzly Peak

Ale nie mogę uzyskać wolumenu transakcji za pośrednictwem tego adresu URL. Czy możesz mi pomóc, jeśli potrzebuję również szczegółów dotyczących wolumenu
Sashi Kant

@DanDascalescu Dzięki Dan. Wygląda na to, że był wyłączony, kiedy go sprawdzałem. Komentarz usunięty.
jpgeek

2
Dzięki, nadal aktualne we
wrześniu

5
Z przykrością muszę powiedzieć, że od września 2017 r. Te linki są 404ing.
St. John Johnson,

17

Uważam, że ta witryna jest pomocna.

http://benjisimon.blogspot.com/2009/01/truly-simple-stock-api.html

Odnosi się do API, które wydaje się oferować Yahoo, które jest bardzo proste i użyteczne.

Na przykład:

http://finance.yahoo.com/d/quotes.csv?s=GOOG+AAPL&f=snl1

Pełne szczegóły tutaj:

http://www.gummy-stuff.org/Yahoo-data.htm


W Yahoo, aby uzyskać to za pomocą curl curl -L "http://finance.yahoo.com/d/quotes.csv?s=msft&f=sl1d1t1c1ohgv&e=.csv". W curl -Ljest potrzebne, inaczej nie zadziała
arulraj.net

9

Edycja: wywołanie API zostało usunięte przez Google. więc już nie działa.

Zgadzam się z odpowiedzią Pareshkumara. Teraz istnieje opakowanie googlefinance w języku Python dla wywołania adresu URL.

Zainstaluj googlefinance

$pip install googlefinance

Aktualną cenę akcji można łatwo uzyskać:

>>> from googlefinance import getQuotes
>>> import json
>>> print json.dumps(getQuotes('AAPL'), indent=2)
[
  {
    "Index": "NASDAQ", 
    "LastTradeWithCurrency": "129.09", 
    "LastTradeDateTime": "2015-03-02T16:04:29Z", 
    "LastTradePrice": "129.09", 
    "Yield": "1.46", 
    "LastTradeTime": "4:04PM EST", 
    "LastTradeDateTimeLong": "Mar 2, 4:04PM EST", 
    "Dividend": "0.47", 
    "StockSymbol": "AAPL", 
    "ID": "22144"
  }
]

Google Finance to źródło, które dostarcza danych giełdowych w czasie rzeczywistym. Istnieją również inne interfejsy API firmy Yahoo, takie jak yahoo-finance , ale są one opóźnione o 15 minut w przypadku akcji NYSE i NASDAQ.


miło w czasie rzeczywistym, czego szukałem!
eusoubrasileiro


3

Opierając się na barkach gigantów ... oto jedna linijka, którą napisałem, aby przenieść wszystkie aktualne dane giełdowe Google do lokalnych zmiennych powłoki Bash:

stock=$1 

# Fetch from Google Finance API, put into local variables
eval $(curl -s "http://www.google.com/ig/api?stock=$stock"|sed 's/</\n</g' |sed '/data=/!d; s/ data=/=/g; s/\/>/; /g; s/</GF_/g' |tee /tmp/stockprice.tmp.log)

echo "$stock,$(date +%Y-%m-%d),$GF_open,$GF_high,$GF_low,$GF_last,$GF_volume"

Wtedy będziesz mieć łatwo dostępne zmienne, takie jak $ GF_last $ GF_open $ GF_volume itp. Uruchom env lub zobacz plik /tmp/stockprice.tmp.log

http://www.google.com/ig/api?stock=TVIX&output=csv by itself returns:

<?xml version="1.0"?>
<xml_api_reply version="1">
<finance module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0" >
<symbol data="TVIX"/>
<pretty_symbol data="TVIX"/>
<symbol_lookup_url data="/finance?client=ig&amp;q=TVIX"/>
<company data="VelocityShares Daily 2x VIX Short Term ETN"/>
<exchange data="AMEX"/>
<exchange_timezone data="ET"/>
<exchange_utc_offset data="+05:00"/>
<exchange_closing data="960"/>
<divisor data="2"/>
<currency data="USD"/>
<last data="57.45"/>
<high data="59.70"/>
<low data="56.85"/>

etc.

Więc dla stock="FBM" /tmp/stockprice.tmp.log (i twojego środowiska) będzie zawierać:

GF_symbol="FBM"; 
GF_pretty_symbol="FBM"; 
GF_symbol_lookup_url="/finance?client=ig&amp;q=FBM"; 
GF_company="Focus Morningstar Basic Materials Index ETF"; 
GF_exchange="NYSEARCA"; 
GF_exchange_timezone=""; 
GF_exchange_utc_offset=""; 
GF_exchange_closing=""; 
GF_divisor="2"; 
GF_currency="USD"; 
GF_last="22.82"; 
GF_high="22.82"; 
GF_low="22.82"; 
GF_volume="100"; 
GF_avg_volume=""; 
GF_market_cap="4.56"; 
GF_open="22.82"; 
GF_y_close="22.80"; 
GF_change="+0.02"; 
GF_perc_change="0.09"; 
GF_delay="0"; 
GF_trade_timestamp="8 hours ago"; 
GF_trade_date_utc="20120228"; 
GF_trade_time_utc="184541"; 
GF_current_date_utc="20120229"; 
GF_current_time_utc="033534"; 
GF_symbol_url="/finance?client=ig&amp;q=FBM"; 
GF_chart_url="/finance/chart?q=NYSEARCA:FBM&amp;tlf=12"; 
GF_disclaimer_url="/help/stock_disclaimer.html"; 
GF_ecn_url=""; 
GF_isld_last=""; 
GF_isld_trade_date_utc=""; 
GF_isld_trade_time_utc=""; 
GF_brut_last=""; 
GF_brut_trade_date_utc=""; 
GF_brut_trade_time_utc=""; 
GF_daylight_savings="false"; 

Czy mogę użyć adresu URL do notowania akcji w czasie rzeczywistym?
Sashi Kant

W większości tak. Porównaj GF_trade_time_utcz aktualnym czasem / datą, a będziesz sędzią.
Marcos

Dziękuję za odpowiedź, ale tutaj wolumen nie przychodzi w jsonie, czy jest jakiś inny sposób lub adres URL, aby uzyskać wolumen obrotu?
Sashi Kant


3

Problem z danymi Yahoo i Google polega na tym, że naruszają one warunki korzystania z usługi, jeśli używasz ich do celów komercyjnych. Kiedy Twoja witryna / aplikacja jest wciąż mała, nie jest duża, ale gdy tylko trochę się rozwiniesz, zaczynasz przestać i rezygnujesz z wymiany. Przykładem licencjonowanego rozwiązania jest FinancialContent: http://www.financialcontent.com/json.php lub Xignite


2

Oto przykład, którego możesz użyć. Havent ma już Google Finance, ale oto przykład Yahoo. Będziesz potrzebował HTMLAgilityPack , który jest niesamowity. Szczęśliwy symbol polowania.

Wywołaj procedurę przy użyciu YahooStockRequest(string Symbols);

Gdzie Symbole = ciąg znaków rozdzielany przecinkami lub tylko jeden symbol

public string YahooStockRequest(string Symbols,bool UseYahoo=true)
        {
            {
                string StockQuoteUrl = string.Empty;

                try
                {
                    // Use Yahoo finance service to download stock data from Yahoo
                    if (UseYahoo)
                    {
                        string YahooSymbolString = Symbols.Replace(",","+");
                        StockQuoteUrl = @"http://finance.yahoo.com/q?s=" + YahooSymbolString + "&ql=1";
                    }
                    else
                    {
                        //Going to Put Google Finance here when I Figure it out.
                    }

                    // Initialize a new WebRequest.
                    HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(StockQuoteUrl);
                    // Get the response from the Internet resource.
                    HttpWebResponse webresp = (HttpWebResponse)webreq.GetResponse();
                    // Read the body of the response from the server.

                    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                    string pageSource;
                    using (StreamReader sr = new StreamReader(webresp.GetResponseStream()))
                    {
                        pageSource = sr.ReadToEnd();
                    }
                    doc.LoadHtml(pageSource.ToString());
                    if (UseYahoo)
                    {
                        string Results=string.Empty;
                        //loop through each Symbol that you provided with a "," delimiter
                        foreach (string SplitSymbol in Symbols.Split(new char[] { ',' }))
                        {
                            Results+=SplitSymbol + " : " + doc.GetElementbyId("yfs_l10_" + SplitSymbol).InnerText + Environment.NewLine;
                        }
                        return (Results);
                    }
                    else
                    {
                        return (doc.GetElementbyId("ref_14135_l").InnerText);
                    }

                }
                catch (WebException Webex)
                {
                    return("SYSTEM ERROR DOWNLOADING SYMBOL: " + Webex.ToString());

                }

            }
        }

2

Najprostszym sposobem, jak wyjaśniłeś, jest ten link do „Dow Jones Industrial Average”

Link 2 jest dla „NASDAQ-100”

i dla wszystkich związanych z NASDAQ link 3

Myślę, że to powinno być to, w przeciwnym razie chcesz tego samego w notacjach JSON tak samo jak Microsoft

Zapoznaj się z tym starym postem, myślę, że to pomoże,

Aktualizacja:

Aby poznać szczegóły wolumenu i inne szczegóły, utworzyłem vbscript, który używa obiektu IE do pobierania szczegółów z linku i ostrzega zawartość o określonym identyfikatorze (Utwórz plik .vbs i uruchom go.

Set IE = CreateObject("InternetExplorer.Application")
while IE.readyState = 4: WScript.Sleep 10: wend
IE.Navigate "https://www.google.com/finance?q=INDEXNASDAQ%3ANDX&sq=NASDAQ&sp=2&ei=B3UoUsiIH5DIlgPEsQE"
IE.visible = true
while IE.readyState = 4: WScript.Sleep 10: wend
dim ht
ht= IE.document.getElementById("market-data-div").innerText
msgBox ht
IE.quit

spowoduje to ostrzeżenie wartości ze strony takiej jak ta

3,124.54 0.00 (0.00%)
Sep 4 - Close
INDEXNASDAQ real-time data - Disclaimer
Range       -
52 week 2,494.38 - 3,149.24
Open        -
Vol.    0.00

Jestem pewien, że to pomoże ...


Bardzo dziękuję za odpowiedź. Ale potrzebuję danych czasu rzeczywistego w json wraz z wolumenem transakcji, czy są jakieś usługi odpoczynku?
Sashi Kant

1
Proszę odnieść się do szczegółów dotyczących tego czasie rzeczywistym, generalnie to linki zapewniają reatime danych z pewnym wyjątkiem .. google.com/googlefinance/disclaimer/#realtime
MarmiK

Jeszcze raz dziękuję brachu, ten był naprawdę pomocny, ale nadal jak mogę uzyskać informacje o objętości?
Sashi Kant,

1
Jeśli znasz VBA lub VBS na stronie ( google.com/ ... ), identyfikator elementu to „market-data-div”, który zawiera jeszcze 2 elementy div, a drugi div ma tabelę zawierającą <td class="val">759.30M</td>taką objętość . Jeśli potrzebujesz więcej pomocy, napisz jakiś kod swojej pracy, inaczej zrobi to skrzypce.
MarmiK,

Nie, proszę pana, nie mam pojęcia o VBA lub VBS, ale na pewno to sprawdzę. Czy możecie podać adres URL, który prowadzi do notowań giełdowych w czasie rzeczywistym wraz z informacjami o wolumenie?
Sashi Kant,


1

Spróbuj z tym: http://finance.google.com/finance/info?client=ig&q=NASDAQ:GOOGL

Zwróci Ci wszystkie dostępne szczegóły dotyczące wspomnianego towaru.

np. wyjście wyglądałoby jak poniżej:

// [ {
"id": "694653"
,"t" : "GOOGL"
,"e" : "NASDAQ"
,"l" : "528.08"
,"l_fix" : "528.08"
,"l_cur" : "528.08"
,"s": "0"
,"ltt":"4:00PM EST"
,"lt" : "Dec 5, 4:00PM EST"
,"lt_dts" : "2014-12-05T16:00:14Z"
,"c" : "-14.50"
,"c_fix" : "-14.50"
,"cp" : "-2.67"
,"cp_fix" : "-2.67"
,"ccol" : "chr"
,"pcls_fix" : "542.58"
}
]

Na końcu tego adresu URL możesz umieścić symbol giełdowy swojej firmy, aby uzyskać szczegółowe informacje:

http://finance.google.com/finance/info?client=ig&q=<YOUR COMPANY STOCK SYMBOL>

0

Aby znaleźć dane wykresu za pomocą API danych finansowych Google, wystarczy przejść do Google, jakby szukał wyszukiwanego hasła, wpisać w wyszukiwarkę finanse, a pojawi się link do finansów Google. Po przejściu do wyszukiwarki finansów Google wpisz nazwę tickera do silnika API danych finansowych, a wynik zostanie wyświetlony. Należy jednak zauważyć, że wszystkie wykresy finansowe Google są opóźnione o 15 minut i co najwyżej można ich użyć do lepszego zrozumienia historii notowań, a nie bieżącej ceny.

Rozwiązaniem problemu opóźnionych informacji na wykresie jest uzyskanie interfejsu API danych finansowych w czasie rzeczywistym. Przykładem może być interfejs barchartondemand, który zawiera informacje o kwotowaniach w czasie rzeczywistym, wraz z innymi szczegółowymi funkcjami, które ułatwiają znalezienie dokładnego wykresu, którego szukasz. Dzięki w pełni konfigurowalnym funkcjom i specjalnym narzędziom programistycznym do precyzyjnych informacji handlowych, których potrzebujesz, narzędzia barchartondemand znacznie przewyższają finanse Google.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.