Thay thế cho api tài chính google [đóng]


429

Tôi muốn sử dụng Google Finance API để lấy dữ liệu chứng khoán về công ty nhưng API này không được chấp nhận kể từ 2011/26/05.

Bạn sử dụng API miễn phí để nhận dữ liệu chứng khoán trong thời gian thực là gì?


1
Có một API Google khác mà bạn có thể sử dụng. Tôi đã ghi lại ở đây: jarloo.com/real-time-google-stock-api
Kelly

11
Là một nhà phát triển phần mềm, tôi muốn giới thiệu Alpha Vantage . Họ cung cấp API JSON miễn phí cho báo giá cổ phiếu trong thời gian thực và lịch sử. Đây là dữ liệu trong ngày thực của họ cho MSFT. Đây là tài liệu API đầy đủ của họ. Bạn cần một khóa API, có thể lấy miễn phí trên trang web của họ .
Steve Carino

4
Kể từ tháng 9 năm 2017, vui lòng tham khảo câu hỏi này: stackoverflow.com/questions/46070126/NH
augustomen

2
Alpha Vantage là tuyệt vời. Tôi vừa mới viết một bài đăng trên blog về nó- data
Ashley Davis

Bạn cũng có thể dùng thử api này: free.currencyconverterapi.com/api/v5/ mẹo
Toe Pyae Sone Oo

Câu trả lời:


426

Đang cập nhật câu trả lời một chút

1. Thử API Alpha Vantage

Đối với người mới bắt đầu, bạn có thể thử lấy đầu ra JSON từ truy vấn, chẳng hạn như

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

KHÔNG thử dùng API tài chính của Yahoo (nó KHÔNG GIỚI HẠN hoặc KHÔNG CÓ NGAY BÂY GIỜ).

Đối với người mới bắt đầu, bạn có thể tạo CSV bằng một lệnh gọi API đơn giản:

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

(Điều này sẽ tạo và lưu CSV cho AAPL, GOOG và MSFT)

Lưu ý rằng bạn phải nối định dạng vào chuỗi truy vấn ( f=..). Để biết tổng quan về tất cả các định dạng, xem trang này .

Để biết thêm ví dụ, hãy truy cập trang này .

Đối với dữ liệu dựa trên XMLJSONdựa trên, bạn có thể làm như sau:

Không sử dụng YQL (Ngôn ngữ truy vấn Yahoo) **

Ví dụ:

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. Sử dụng dịch vụ web

Ví dụ: để có được tất cả các báo giá chứng khoán trong XML:

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

Để nhận được tất cả các báo giá chứng khoán JSON, chỉ cần thêm format=JSONvào cuối URL:

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

Lựa chọn thay thế:

1. API tiền tệ

  • Hơn 165 tỷ giá tiền tệ thời gian thực, bao gồm một vài loại tiền điện tử. Tài liệu ở đây .

2. API tài chính 1Forge

  • Tỷ giá thời gian thực cho khoảng 40 cặp tiền tệ có sẵn ở đây .

3. API nội dung tài chính

4. Tỷ giá mở

5. API Oanda

6. API XE

7. API Xignite

8. API hiện tại

9. Các API khác - được thảo luận tại lập trình Web


2
đây là những gì bạn đã yêu cầu bây giờ ... gregnozik.blogspot.in/2011/09/yahoo-finance-api_23.html
AurA

7
Thật đáng chú ý những gì Yahoo! nói về việc rút giá cổ phiếu: "Có vẻ như một số đã đảo ngược một API mà họ sử dụng để lấy dữ liệu Tài chính, nhưng họ đang vi phạm Điều khoản dịch vụ của chúng tôi (không phân phối lại dữ liệu Tài chính) ... Chỉ được phép phân phối lại nếu bạn đang sử dụng các huy hiệu mà nhóm đã tạo: finance.yahoo.com/badges . Nếu không, bạn có thể sử dụng YQL hoặc bất kỳ phương pháp nào để lấy dữ liệu CHO NGƯỜI SỬ DỤNG " developer.yahoo.com/forum/General-Discussion-at-YDN/
tựa

3
thay vì lưu vào csv ... bạn có thể lấy dữ liệu dưới dạng JSON không?
bouncingHippo

3
Đáng lưu ý rằng các điểm cuối của Yahoo không phải là thời gian thực, chúng bị trễ 15 phút (xem trường LastTradeWithTime trong YQL chẳng hạn)
artur

37
Câu trả lời cần cập nhật vì API Yahoo Finance đã chết.
Vivek Vijayan

47

Tôi đến muộn, nhưng hãy kiểm tra Quandl . Họ có một API cho giá cổ phiếu và các nguyên tắc cơ bản .

Đây là một cuộc gọi ví dụ, sử dụng tải xuống Quandl-api trong csv

thí dụ:

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

Họ hỗ trợ các ngôn ngữ này . Dữ liệu nguồn của họ đến từ Yahoo Finance, Google Finance, NSE, BSE, FSE, HKEX, LSE, SSE, TSE và nhiều hơn nữa ( xem tại đây ).


Bạn có một số chỉ báo kỹ thuật với API này (như rsi) không?
Kiva

Tôi không có ý kiến. Tôi thực sự không liên kết với Quandl, tôi chỉ biết rằng đó là nơi để lấy dữ liệu.
2023861

Đây có vẻ là một lựa chọn tốt, nhưng bạn có thể lấy dữ liệu chứng khoán trực tiếp ở đây không? Có vẻ như khung thời gian ngắn nhất là dữ liệu hàng ngày?
Trevor

8
Dữ liệu chứng khoán trực tiếp không có sẵn thông qua Quandl - Tôi đã thử nó.
Brian Goodwin

2
Quandl cũng có rất nhiều cổ phiếu bị thiếu trong bộ dữ liệu WIKI của mình.
Jeremy Holovacs

16

Tôi khuyên bạn nên sử dụng API nhà phát triển của TradeKing . Nó là rất tốt và miễn phí để sử dụng. Tất cả những gì được yêu cầu là bạn có tài khoản với họ và theo hiểu biết của tôi, bạn không phải mang số dư ... chỉ để được đăng ký.


2
Và việc tạo tài khoản đó rất "buồn cười" đến nỗi tôi đã hủy sau 10 phút ...
inselberg

2
Nếu tôi có thể hỏi, điều gì "buồn cười" về nó? Bạn đang đề cập đến thực tế rằng họ yêu cầu một số thông tin cá nhân nhạy cảm? Bất kỳ nhà môi giới chứng khoán trực tuyến nào cũng sẽ yêu cầu thông tin tương tự ... Không có gì bất thường.
đào tạo

11
SIN, Ngày sinh, tình trạng tử vong, Người phụ thuộc, ...? nghiêm túc? Tôi chỉ muốn gọi API để kiểm tra
Daniel B

Apis khác tôi đang tìm kiếm là trích dẫn và đồng minh.
Deepan Bohhu Babu

7

Tôi đã làm theo câu trả lời hàng đầu và bắt đầu nhìn vào tài chính yahoo. API của họ có thể được truy cập theo một số cách khác nhau, nhưng tôi đã tìm thấy một tài liệu tham khảo thú vị để lấy thông tin chứng khoán dưới dạng CSV tại đây: http://www.jarloo.com/

Sử dụng mà tôi đã viết kịch bản này. Tôi không thực sự là một anh chàng ruby ​​nhưng điều này có thể giúp bạn hack thứ gì đó cùng nhau. Tôi chưa đưa ra tên biến cho tất cả các lĩnh vực yahoo cung cấp, vì vậy bạn có thể điền tên đó nếu bạn cần.

Đây là cách sử dụng

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 trả về một hàm băm, sao cho Cụ thểData ["GOOG"] ["name"] là "Google Inc."

Cuối cùng, mã thực tế để chạy ...

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
Điều này thực sự hữu ích, tôi ước tôi có thể cho bạn nhiều phiếu hơn. Câu hỏi nhanh - bạn đã thấy API này đáng tin cậy chưa và các trích dẫn có thực sự đúng lúc không? Tôi biết một số thông tin của Yahoo bị trì hoãn và dường như nó phụ thuộc vào API cụ thể mà bạn truy cập.
Hundley

Tôi đã làm điều này để giúp một người bạn và tôi nghĩ rằng nó đã kết thúc tốt đẹp cho anh ta. Thông tin khá nhanh, tôi nghĩ họ đã cập nhật nó cứ sau 10/15 phút nếu tôi nhớ lại chính xác.
Jack Franzen

1
Phiên bản và hướng dẫn C # có tại đây: jarloo.com/yahoo_finance
Kelly

vâng, anh chàng đó rõ ràng biết cách lấy thông tin chứng khoán haha. Anh ta có các hướng dẫn khác từ 2 tháng trước tuyên bố rằng bạn vẫn có thể nhận được dữ liệu chứng khoán theo thời gian thực từ google
Jack Franzen

6

Nếu bạn vẫn đang tìm cách sử dụng Google Finance cho dữ liệu của mình, bạn có thể kiểm tra điều này.

Gần đây tôi cần kiểm tra xem dữ liệu SGX có thực sự có thể truy xuất được thông qua tài chính google hay không (và tất nhiên tôi đã gặp vấn đề tương tự như bạn)


Tôi đã thấy 'JSON Trích dẫn API' trước đây. Công cụ đó có vẻ rất hứa hẹn. Tôi cũng muốn giới thiệu điều này: Investexcel.net/google-finance-stock-quotes-in-excel
ASH
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.