Вопрос по google-api, quandl, api, google-finance – Альтернатива Google Finance API [закрыт]

394

Я хотел использовать API Google Finance для получения данных о компании, но этот API устарел с 2011/26/05.

Что вы используете в качестве бесплатного API для получения биржевых данных в режиме реального времени?

Вы также можете попробовать это API:free.currencyconverterapi.com/api/v5/… Toe Pyae Sone Oo
Существует еще один API Google, который вы можете использовать. Я задокументировал здесь:jarloo.com/real-time-google-stock-api Kelly
Как разработчик программного обеспечения, я бы порекомендовалAlpha Vantage, Они предлагают бесплатные API JSON для биржевых котировок в реальном времени и исторических данных.Here это их внутридневные данные в реальном времени для MSFT.Here это их полная документация по API. Вам нужен ключ API, который можно получить бесплатно на ихwebsite. Steve Carino
По состоянию на сентябрь 2017 года, пожалуйста, обратитесь к этому вопросу:stackoverflow.com/questions/46070126/… Augusto Men
Alpha Vantage великолепен. Я только что написал в блоге об этомthe-data-wrangler.com/… Ashley Davis

Ваш Ответ

5   ответов
6

Я следовал за главным ответом и начал смотреть на финансы Yahoo. Доступ к их API можно получить несколькими различными способами, но я нашел хорошую ссылку для получения информации о бирже в виде CSV:http://www.jarloo.com/

Используя это, я написал этот скрипт. Я на самом деле не рубиновый парень, но это может помочь вам взломать что-нибудь вместе. Я еще не придумал имена переменных для всех полей, которые предлагает Yahoo, поэтому вы можете заполнить их, если они вам нужны.

Вот использование

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."

Наконец, фактический код для запуска этого ...

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
это действительно полезно, я хотел бы дать вам больше голосов. Быстрый вопрос - нашли ли вы этот API надежным и действительно ли котировки в реальном времени? Я знаю, что некоторая информация Yahoo задерживается, и, похоже, она зависит от конкретного API, к которому вы обращаетесь.
Я сделал это, чтобы помочь другу, и я думаю, что в итоге у него все получилось. Информация довольно быстрая, я думаю, что они обновляют ее каждые 10/15 минут, если я правильно помню.
C # версия и учебник здесь:jarloo.com/yahoo_finance
да, этот парень, очевидно, знает, как получить информацию о запасах, ха-ха. У него есть другие учебники за последние 2 месяца, в которых утверждается, что вы все еще можете получать данные о запасах в реальном времени от Google
6

Если вы все еще хотите использовать Google Finance для своих данных, вы можетеПроверь это.

Недавно мне нужно было проверить, действительно ли данные SGX можно получить через Google Finance (и, конечно, я столкнулся с той же проблемой, что и вы)

Я видел "JSON Quote API" до. Этот инструмент кажется очень перспективным. Я также рекомендовал бы это:investexcel.net/google-finance-stock-quotes-in-excel
15

Я предлагаю использоватьAPI разработчика TradeKing, Это очень хорошо и бесплатно в использовании. Все, что требуется, - это то, что у вас есть учетная запись с ними, и, насколько мне известно, вам не нужно иметь баланс ... только для регистрации.

Другие apis, которые я нахожу, являются quotemedia и союзником.
SIN, дата рождения, семейное положение, иждивенцы, ...? шутки в сторону? Я просто хочу вызвать API для тестирования
Если я могу спросить, что было так "смешно" об этом? Вы имеете в виду тот факт, что они запрашивают какую-то конфиденциальную личную информацию? Любой онлайн-брокер запрашивает ту же информацию ... Ничего необычного.
И создание этой учетной записи - это так "смешно" что я отменил через 10 минут ...
42

Я опаздываю, но проверюQuandl, У них естьAPI для цен на акции и основные принципы.

Вот пример вызова,используя Quandl-API скачать в CSV

пример:

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

Они поддерживаютэти языки, Их исходные данные поступают из Yahoo Finance, Google Finance, NSE, BSE, FSE, HKEX, LSE, SSE, TSE и других (посмотреть здесь).

Это выглядит как хороший вариант, но можете ли вы получить данные об акциях здесь? Кажется, самый короткий период времени - это ежедневные данные?
Я понятия не имею. Я на самом деле не связан с Quandl, я просто знаю, что это место для получения данных.
У вас есть некоторые технические индикаторы с этим API (например, RSI)? Kiva
Данные по живым акциям не доступны через Quandl - я их пробовал.
У Quandl также есть много акций, отсутствующих в его наборе данных WIKI.
390

Обновление ответа немного

1. ПытатьсяAlpha Vantage API

Для новичков вы можете попробовать получить вывод JSON из запроса, такого как

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

DONT Try Yahoo Finance API (УСТАРЕЛО или недоступно сейчас).

Here is a link to previous Yahoo Finance API discussion on StackOverflow. Here's an alternate link to Yahoo Finance API posted on Google Code.

Для начинающих вы можете создать CSV с помощью простого вызова API:

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

(Это создаст и сохранит CSV для AAPL, GOOG и MSFT)

Обратите внимание, что вы должны добавить формат в строку запроса (f=..). Для обзора всех форматов см.эта страница.

Для большего количества примеров, посетитеэта страница.

ЗаXML а такжеJSONна основе данных, вы можете сделать следующее:

Не используйте YQL (язык запросов Yahoo) **

Например:

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. Use the webservice

Например, чтобы получить все котировки акций вXML:

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

Чтобы получить все котировки акций вJSON, просто добавьformat=JSON в конце URL:

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

1. 1Forge Финансовые API

Real-time rates for about 40 currency pairs are available here.

2. API финансового контента

The documentation for this API is very good.

3. Открытые обменные курсы

4. Oanda API

5. XE API

6. Xignite API

7. API валютного уровня

8. Other API discussed at programmableWeb

вместо сохранения в CSV ... вы можете вместо этого получить данные как JSON?
Ответ нуждается в обновлении, так как API финансов Yahoo уже не работает.
Стоит отметить, что конечные точки Yahoonot в реальном времени они задерживаются на 15 минут (см., например, поле LastTradeWithTime в YQL)
вот что ты просил сейчас ...gregnozik.blogspot.in/2011/09/yahoo-finance-api_23.html
Стоит отметить, что Yahoo! скажем, о снижении цен на акции: «Похоже, некоторые разработали API-интерфейс, который они используют для получения финансовых данных, но нарушают наши Условия предоставления услуг (нет перераспределения финансовых данных) ... Перераспределение разрешено только в том случае, если вы используя значки, созданные командой:finance.yahoo.com/badges, В противном случае вы можете использовать YQL или любой другой метод для получения данных ДЛЯ ЛИЧНОГО ИСПОЛЬЗОВАНИЯ & quot;developer.yahoo.com/forum/General-Discussion-at-YDN/…

Похожие вопросы