Google Finans API'sine alternatif [kapalı]


430

Şirketle ilgili stok verilerini almak için Google Finans API'sını kullanmak istedim ancak bu API 2011/26/05 tarihinden bu yana kullanımdan kaldırıldı.

Stok verilerini gerçek zamanlı olarak almak için ücretsiz API olarak ne kullanıyorsunuz?


1
Kullanabileceğiniz başka bir Google API'sı daha var. Burada belgeledim: jarloo.com/real-time-google-stock-api
Kelly

11
Bir yazılım geliştiricisi olarak Alpha Vantage'ı tavsiye ederim . Gerçek zamanlı ve geçmiş hisse senedi fiyatları için ücretsiz JSON API'leri sunarlar. İşte MSFT için gerçek zamanlı gün içi verileri. İşte tam API belgeleri. Web sitelerinden ücretsiz olarak edinilebilen bir API anahtarına ihtiyacınız var .
Steve Carino

4
Eylül 2017 itibarıyla, lütfen bu soruya bakın: stackoverflow.com/questions/46070126/…
augustomen

2
Alpha Vantage harika. Ben bu konuda bir blog yazısı yazdım the-data-wrangler.com/…
Ashley Davis

Yanıtlar:


427

Cevabı biraz güncelleme

1. Alpha Vantage API'sını deneyin

Yeni başlayanlar için, sorgudan bir JSON çıktısı almaya çalışabilirsiniz.

https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=MSFT&apikey=demo

DONT Yahoo Finance API'yi deneyin (ŞİMDİ DEPRICATED veya UNAVAILABLE).

Yeni başlayanlar için basit bir API çağrısı ile bir CSV oluşturabilirsiniz:

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

(Bu AAPL, GOOG ve MSFT için bir CSV oluşturur ve kaydeder)

Biçimi sorgu dizesine ( f=..) eklemeniz gerektiğini unutmayın . Tüm biçimlere genel bir bakış için bu sayfaya bakın .

Daha fazla örnek için bu sayfayı ziyaret edin .

İçin XMLve JSONtabanlı veriler, aşağıdakileri yapabilirsiniz:

YQL (Yahoo Sorgu Dili) kullanmayın **

Örneğin:

http://developer.yahoo.com/yql/console/?q=select%20*%20from%20yahoo.finance
.quotes%20where%20symbol%20in%20(%22YHOO%22%2C%22AAPL%22%2C%22GOOG%22%2C%22
MSFT%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env

2. Web servisini kullanın

Örneğin, tüm hisse senedi fiyatlarını almak için XML:

http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote

Tüm hisse senedi almak için JSON, sadece eklemek format=JSONURL'nin sonuna:

http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json

Alternatifler:

1. Para Birimi API'sı

  • 165'den fazla gerçek zamanlı döviz kurları. Dokümanlar burada .

2. 1 Forge Finansal API'ler

  • Yaklaşık 40 döviz çifti için gerçek zamanlı fiyatlar burada mevcuttur .

3. Finansal İçerik API'sı

4. Açık Döviz Kurları

5. Oanda API'sı

6. XE API'sı

7. Xignite API'sı

8. para birimi katmanı API'sı

9. Diğer API'ler - programmableWeb'de tartışıldı



7
Yahoo! hisse senedi fiyatlarını çekme hakkında söyleyin: "Bazılarının Finans verilerini çekmek için kullandıkları bir API'yi tersine mühendislik uyguladıkları görülüyor, ancak Hizmet Şartlarımızı (Finans verilerinin yeniden dağıtılmasına gerek kalmıyor) ihlal ediyorlar ... Yeniden dağıtıma yalnızca Ekibin oluşturduğu rozetler: finans.yahoo.com/badges Aksi takdirde, YQL veya herhangi bir yöntemi KİŞİSEL KULLANIM İÇİN veri elde etmek için kullanabilirsiniz " developer.yahoo.com/forum/General-Discussion-at-YDN/…
poshaughnessy

3
csv'ye kaydetmek yerine ... JSON olarak veri alabilir misiniz?
bouncingHippo

3
Yahoo'nun uç noktalarının gerçek zamanlı olmadığını belirtmek gerekir, 15 dakika geciktirilirler (örneğin, YQL'deki LastTradeWithTime alanına bakın)
artur

37
Yahoo Finance API'sı öldüğünde yanıtın güncellenmesi gerekiyor.
Vivek Vijayan

47

Geç kaldım, ama Quandl'a bakın . Hisse senedi fiyatları ve temelleri için bir API'leri var .

İşte csv'de Quandl-api indirmeyi kullanan bir örnek çağrı

misal:

https://www.quandl.com/api/v1/datasets/WIKI/AAPL.csv?column=4&sort_order=asc&collapse=quarterly&trim_start=2012-01-01&trim_end=2013-12-31

Bu dilleri destekliyorlar . Kaynak verileri Yahoo Finance, Google Finance, NSE, BSE, FSE, HKEX, LSE, SSE, TSE ve daha fazlasından gelir ( buraya bakın ).


Bu API ile (rsi gibi) bazı teknik göstergeleriniz var mı?
Kiva

Hiç bir fikrim yok. Aslında Quandl ile ilişkili değilim, sadece veri almak için bir yer olduğunu biliyorum.
user2023861

Bu iyi bir seçenek gibi görünüyor, ancak burada canlı stok verileri alabilir misiniz? Günlük veriler en kısa zaman dilimi gibi mi görünüyor?
Trevor

8
Canlı hisse senedi verileri Quandl aracılığıyla mevcut değil - denedim.
Brian Goodwin

2
Quandl ayrıca WIKI veri kümesinde çok fazla stok eksik.
Jeremy Holovacs

16

TradeKing'in geliştirici API'sını kullanmanızı öneririm . Çok iyi ve kullanımı ücretsizdir. Tek yapmanız gereken onlarla bir hesabınız olması ve bildiklerime göre bir denge taşımak zorunda değilsiniz ... sadece kayıt olmak için.


2
Ve bu hesabı oluşturmak o kadar "komik" ki ben 10 dakika sonra iptal ...
inselberg

2
Eğer sorabilirsem, bu kadar komik olan neydi? Bazı hassas kişisel bilgiler istedikleri gerçeğinden mi bahsediyorsunuz? Herhangi bir çevrimiçi hisse senedi brokeri aynı bilgileri isteyecektir ... Bu alışılmadık bir şey değil.
tren

11
SIN, Doğum tarihi, evlilik durumu, Bağımlılar, ...? ciddi anlamda? Sadece test etmek için API'yı aramak istiyorum
Daniel B

Diğer apis buluyorum quotemedia ve müttefik.
Deepan Prabhu Babu

7

Üst cevabı takip ettim ve yahoo finansına bakmaya başladım. API'larına birkaç farklı yoldan erişilebilir, ancak burada CSV olarak stok bilgilerini almak için güzel bir referans buldum: http://www.jarloo.com/

Bunu kullanarak bu senaryoyu yazdım. Ben gerçekten yakut biri değilim ama bu birlikte bir şeyler yapmanıza yardımcı olabilir. Henüz yahoo'nun sunduğu tüm alanlar için değişken isimler bulmadım, böylece ihtiyacınız varsa bunları doldurabilirsiniz.

İşte kullanımı

TICKERS_SP500 = "GICS,CIK,MMM,ABT,ABBV,ACN,ACE,ACT,ADBE,ADT,AES,AET,AFL,AMG,A,GAS,APD,ARG,AKAM,AA,ALXN,ATI,ALLE,ADS,ALL,ALTR,MO,AMZN,AEE,AAL,AEP,AXP,AIG,AMT,AMP,ABC,AME,AMGN,APH,APC,ADI,AON,APA,AIV,AAPL,AMAT,ADM,AIZ,T,ADSK,ADP,AN,AZO,AVGO,AVB,AVY,BHI,BLL,BAC,BK,BCR,BAX,BBT,BDX,BBBY,BBY,BIIB,BLK,HRB,BA,BWA,BXP,BSX,BMY,BRCM,BFB,CHRW,CA,CVC,COG,CAM,CPB,COF,CAH,HSIC,KMX,CCL,CAT,CBG,CBS,CELG,CNP,CTL,CERN,CF,SCHW,CHK,CVX,CMG,CB,CI,XEC,CINF,CTAS,CSCO,C,CTXS,CLX,CME,CMS,COH,KO,CCE,CTSH,CL,CMA,CSC,CAG,COP,CNX,ED,STZ,GLW,COST,CCI,CSX,CMI,CVS,DHI,DHR,DRI,DVA,DE,DLPH,DAL,XRAY,DVN,DO,DTV,DFS,DG,DLTR,D,DOV,DOW,DPS,DTE,DD,DUK,DNB,ETFC,EMN,ETN,EBAY,ECL,EIX,EW,EA,EMC,EMR,ENDP,ESV,ETR,EOG,EQT,EFX,EQIX,EQR,ESS,EL,ES,EXC,EXPE,EXPD,ESRX,XOM,FFIV,FB,FDO,FAST,FDX,FIS,FITB,FSLR,FE,FISV,FLIR,FLS,FLR,FMC,FTI,F,FOSL,BEN,FCX,FTR,GME,GCI,GPS,GRMN,GD,GE,GGP,GIS,GM,GPC,GNW,GILD,GS,GT,GOOG,GWW,HAL,HBI,HOG,HAR,HRS,HIG,HAS,HCA,HCP,HCN,HP,HES,HPQ,HD,HON,HRL,HSP,HST,HCBK,HUM,HBAN,ITW,IR,TEG,INTC,ICE,IBM,IP,IPG,IFF,INTU,ISRG,IVZ,IRM,JEC,JNJ,JCI,JOY,JPM,JNPR,KSU,K,KEY,GMCR,KMB,KIM,KMI,KLAC,KSS,KRFT,KR,LB,LLL,LH,LRCX,LM,LEG,LEN,LVLT,LUK,LLY,LNC,LLTC,LMT,L,LO,LOW,LYB,MTB,MAC,M,MNK,MRO,MPC,MAR,MMC,MLM,MAS,MA,MAT,MKC,MCD,MHFI,MCK,MJN,MWV,MDT,MRK,MET,KORS,MCHP,MU,MSFT,MHK,TAP,MDLZ,MON,MNST,MCO,MS,MOS,MSI,MUR,MYL,NDAQ,NOV,NAVI,NTAP,NFLX,NWL,NFX,NEM,NWSA,NEE,NLSN,NKE,NI,NE,NBL,JWN,NSC,NTRS,NOC,NRG,NUE,NVDA,ORLY,OXY,OMC,OKE,ORCL,OI,PCAR,PLL,PH,PDCO,PAYX,PNR,PBCT,POM,PEP,PKI,PRGO,PFE,PCG,PM,PSX,PNW,PXD,PBI,PCL,PNC,RL,PPG,PPL,PX,PCP,PCLN,PFG,PG,PGR,PLD,PRU,PEG,PSA,PHM,PVH,QEP,PWR,QCOM,DGX,RRC,RTN,RHT,REGN,RF,RSG,RAI,RHI,ROK,COL,ROP,ROST,RCL,R,CRM,SNDK,SCG,SLB,SNI,STX,SEE,SRE,SHW,SIAL,SPG,SWKS,SLG,SJM,SNA,SO,LUV,SWN,SE,STJ,SWK,SPLS,SBUX,HOT,STT,SRCL,SYK,STI,SYMC,SYY,TROW,TGT,TEL,TE,THC,TDC,TSO,TXN,TXT,HSY,TRV,TMO,TIF,TWX,TWC,TJX,TMK,TSS,TSCO,RIG,TRIP,FOXA,TSN,TYC,USB,UA,UNP,UNH,UPS,URI,UTX,UHS,UNM,URBN,VFC,VLO,VAR,VTR,VRSN,VZ,VRTX,VIAB,V,VNO,VMC,WMT,WBA,DIS,WM,WAT,ANTM,WFC,WDC,WU,WY,WHR,WFM,WMB,WIN,WEC,WYN,WYNN,XEL,XRX,XLNX,XL,XYL,YHOO,YUM,ZMH,ZION,ZTS,SAIC,AP"

AllData = loadStockInfo(TICKERS_SP500, allParameters())

SpecificData = loadStockInfo("GOOG,CIK", "ask,dps")

loadStockInfo, SpecificData ["GOOG"] ["name"] "Google Inc." olacak şekilde bir karma döndürür.

Son olarak, gerçek kodu çalıştırmak için ...

require 'net/http'

# Jack Franzen & Garin Bedian
# Based on http://www.jarloo.com/yahoo_finance/

$parametersData = Hash[[

    ["symbol", ["s", "Symbol"]],
    ["ask", ["a", "Ask"]],
    ["divYield", ["y", "Dividend Yield"]],
    ["bid", ["b", "Bid"]],
    ["dps", ["d", "Dividend per Share"]],
    #["noname", ["b2", "Ask (Realtime)"]],
    #["noname", ["r1", "Dividend Pay Date"]],
    #["noname", ["b3", "Bid (Realtime)"]],
    #["noname", ["q", "Ex-Dividend Date"]],
    #["noname", ["p", "Previous Close"]],
    #["noname", ["o", "Open"]],
    #["noname", ["c1", "Change"]],
    #["noname", ["d1", "Last Trade Date"]],
    #["noname", ["c", "Change & Percent Change"]],
    #["noname", ["d2", "Trade Date"]],
    #["noname", ["c6", "Change (Realtime)"]],
    #["noname", ["t1", "Last Trade Time"]],
    #["noname", ["k2", "Change Percent (Realtime)"]],
    #["noname", ["p2", "Change in Percent"]],
    #["noname", ["c8", "After Hours Change (Realtime)"]],
    #["noname", ["m5", "Change From 200 Day Moving Average"]],
    #["noname", ["c3", "Commission"]],
    #["noname", ["m6", "Percent Change From 200 Day Moving Average"]],
    #["noname", ["g", "Day’s Low"]],
    #["noname", ["m7", "Change From 50 Day Moving Average"]],
    #["noname", ["h", "Day’s High"]],
    #["noname", ["m8", "Percent Change From 50 Day Moving Average"]],
    #["noname", ["k1", "Last Trade (Realtime) With Time"]],
    #["noname", ["m3", "50 Day Moving Average"]],
    #["noname", ["l", "Last Trade (With Time)"]],
    #["noname", ["m4", "200 Day Moving Average"]],
    #["noname", ["l1", "Last Trade (Price Only)"]],
    #["noname", ["t8", "1 yr Target Price"]],
    #["noname", ["w1", "Day’s Value Change"]],
    #["noname", ["g1", "Holdings Gain Percent"]],
    #["noname", ["w4", "Day’s Value Change (Realtime)"]],
    #["noname", ["g3", "Annualized Gain"]],
    #["noname", ["p1", "Price Paid"]],
    #["noname", ["g4", "Holdings Gain"]],
    #["noname", ["m", "Day’s Range"]],
    #["noname", ["g5", "Holdings Gain Percent (Realtime)"]],
    #["noname", ["m2", "Day’s Range (Realtime)"]],
    #["noname", ["g6", "Holdings Gain (Realtime)"]],
    #["noname", ["k", "52 Week High"]],
    #["noname", ["v", "More Info"]],
    #["noname", ["j", "52 week Low"]],
    #["noname", ["j1", "Market Capitalization"]],
    #["noname", ["j5", "Change From 52 Week Low"]],
    #["noname", ["j3", "Market Cap (Realtime)"]],
    #["noname", ["k4", "Change From 52 week High"]],
    #["noname", ["f6", "Float Shares"]],
    #["noname", ["j6", "Percent Change From 52 week Low"]],
    ["name", ["n", "Company Name"]],
    #["noname", ["k5", "Percent Change From 52 week High"]],
    #["noname", ["n4", "Notes"]],
    #["noname", ["w", "52 week Range"]],
    #["noname", ["s1", "Shares Owned"]],
    #["noname", ["x", "Stock Exchange"]],
    #["noname", ["j2", "Shares Outstanding"]],
    #["noname", ["v", "Volume"]],
    #["noname", ["a5", "Ask Size"]],
    #["noname", ["b6", "Bid Size"]],
    #["noname", ["k3", "Last Trade Size"]],
    #["noname", ["t7", "Ticker Trend"]],
    #["noname", ["a2", "Average Daily Volume"]],
    #["noname", ["t6", "Trade Links"]],
    #["noname", ["i5", "Order Book (Realtime)"]],
    #["noname", ["l2", "High Limit"]],
    #["noname", ["e", "Earnings per Share"]],
    #["noname", ["l3", "Low Limit"]],
    #["noname", ["e7", "EPS Estimate Current Year"]],
    #["noname", ["v1", "Holdings Value"]],
    #["noname", ["e8", "EPS Estimate Next Year"]],
    #["noname", ["v7", "Holdings Value (Realtime)"]],
    #["noname", ["e9", "EPS Estimate Next Quarter"]],
    #["noname", ["s6", "evenue"]],
    #["noname", ["b4", "Book Value"]],
    #["noname", ["j4", "EBITDA"]],
    #["noname", ["p5", "Price / Sales"]],
    #["noname", ["p6", "Price / Book"]],
    #["noname", ["r", "P/E Ratio"]],
    #["noname", ["r2", "P/E Ratio (Realtime)"]],
    #["noname", ["r5", "PEG Ratio"]],
    #["noname", ["r6", "Price / EPS Estimate Current Year"]],
    #["noname", ["r7", "Price / EPS Estimate Next Year"]],
    #["noname", ["s7", "Short Ratio"]

]]

def replaceCommas(data)
    s = ""
    inQuote = false
    data.split("").each do |a|
        if a=='"'
            inQuote = !inQuote
            s += '"'
        elsif !inQuote && a == ","
            s += "#"
        else
            s += a
        end
    end
    return s
end

def allParameters()
    s = ""
    $parametersData.keys.each do |i|
        s  = s + i + ","
    end
    return s
end

def prepareParameters(parametersText)
    pt = parametersText.split(",")
    if !pt.include? 'symbol'; pt.push("symbol"); end;
    if !pt.include? 'name'; pt.push("name"); end;
    p = []
    pt.each do |i|
        p.push([i, $parametersData[i][0]])
    end
    return p
end

def prepareURL(tickers, parameters)
    urlParameters = ""
    parameters.each do |i|
        urlParameters += i[1]
    end
    s = "http://download.finance.yahoo.com/d/quotes.csv?"
    s = s + "s=" + tickers + "&"
    s = s + "f=" + urlParameters
    return URI(s)
end

def loadStockInfo(tickers, parametersRaw)
    parameters = prepareParameters(parametersRaw)
    url = prepareURL(tickers, parameters)
    data = Net::HTTP.get(url)
    data = replaceCommas(data)
    h = CSVtoObject(data, parameters)
    logStockObjects(h, true)
end

#parse csv
def printCodes(substring, length)

    a = data.index(substring)
    b = data.byteslice(a, 10)
    puts "printing codes of string: "
    puts b
    puts b.split('').map(&:ord).to_s
end

def CSVtoObject(data, parameters)
    rawData = []
    lineBreaks = data.split(10.chr)
    lineBreaks.each_index do |i|
        rawData.push(lineBreaks[i].split("#"))
    end

    #puts "Found " + rawData.length.to_s + " Stocks"
    #puts "   w/ " + rawData[0].length.to_s + " Fields"

    h = Hash.new("MainHash")
    rawData.each_index do |i|
        o = Hash.new("StockObject"+i.to_s)
        #puts "parsing object" + rawData[i][0]
        rawData[i].each_index do |n|
            #puts "parsing parameter" + n.to_s + " " +parameters[n][0]
            o[ parameters[n][0] ] = rawData[i][n].gsub!(/^\"|\"?$/, '')
        end
        h[o["symbol"]] = o;
    end
    return h
end

def logStockObjects(h, concise)
    h.keys.each do |i|
        if concise
            puts "(" + h[i]["symbol"] + ")\t\t" + h[i]["name"]
        else
            puts ""
            puts h[i]["name"]
            h[i].keys.each do |p|
                puts "    " + $parametersData[p][1] + " : " + h[i][p].to_s
            end
        end
    end
end

1
bu gerçekten faydalı, keşke size daha fazla oy verebilsem. Hızlı soru - bu API'yı güvenilir buldunuz ve teklifler gerçek zamanlı mı? Yahoo'nun bazı bilgilerinin geciktiğini biliyorum ve eriştiğiniz API'ye bağlı gibi görünüyor.
Hundley

Bunu bir arkadaşa yardım etmek için yaptım ve sanırım onun için iyi sonuç verdi. Bilgi oldukça hızlı, doğru hatırlamak onlar her 10/15 dakikada bir güncellediğini düşünüyorum.
Jack Franzen

1
C # sürümü ve öğretici burada: jarloo.com/yahoo_finance
Kelly

evet, görünüşe göre o adam stok bilgisini nasıl alacağını biliyor haha. Son 2 aydan itibaren Google'dan gerçek zamanlı hisse senedi verileri alabileceğinizi iddia eden başka eğitimleri var
Jack Franzen

6

Verileriniz için hala Google Finans'ı kullanmak istiyorsanız, bunu kontrol edebilirsiniz .

Geçenlerde SGX verilerinin gerçekten google finans yoluyla alınabilir olup olmadığını test etmem gerekiyordu (ve elbette sizinle aynı sorunla tanıştım)


Daha önce 'JSON Quote API'yı gördüm. Bu araç çok umut verici görünüyor. Bunu da tavsiye ederim: investexcel.net/google-finance-stock-quotes-in-excel
ASH
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.