Python股票价格实时数据提供(脚本调试)

2024-10-01 09:24:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我才刚刚开始学习编码,如果这个问题很小,我想提前道歉。在

我一直在试图找到一种方法,将股票市场数据实时输入python,并偶然发现了这个博客 http://www.quantatrisk.com/2015/05/07/hacking-google-finance-in-pre-market-trading-python/

下面是我复制粘贴的脚本。在

import urllib2  # works fine with Python 2.7.9 (not 3.4.+)
import json
import time

def fetchPreMarket(symbol, exchange):
    link = "http://finance.google.com/finance/info?client=ig&q="
    url = link+"%s:%s" % (exchange, symbol)
    u = urllib2.urlopen(url)
    content = u.read()
    data = json.loads(content[3:])
    info = data[0]
    t = str(info["elt"])    # time stamp
    l = float(info["l"])    # close price (previous trading day)
    p = float(info["el"])   # stock price in pre-market (after-hours)
    return (t,l,p)


p0 = 0
while True:
    t, l, p = fetchPreMarket("AAPL","NASDAQ")
    if(p!=p0):
        p0 = p
        print("%s\t%.2f\t%.2f\t%+.2f\t%+.2f%%" % (t, l, p, p-l,
                                                 (p/l-1)*100.))
    time.sleep(60)

这似乎是一个伟大的代码,但当我运行它时,我得到以下错误消息

^{pr2}$

我试图修改fetchPreMarket,使其只输出info = data[0],但当我尝试“print info”时,却一无所获。在

提前谢谢


Tags: inimportinfocomhttpdatatimegoogle
1条回答
网友
1楼 · 发布于 2024-10-01 09:24:36

所以。。。谷歌金融APIhas been discontinued。我很惊讶link可以工作,但是数据中没有"etl"(或"el")键。在

所以,你会得到KeyError: 'elt',在info["elt"]

作为参考

{
"id": "22144"
,"t" : "AAPL"
,"e" : "NASDAQ"
,"l" : "95.52"
,"l_fix" : "95.52"
,"l_cur" : "95.52"
,"s": "0"
,"ltt":"2:34PM EST"
,"lt" : "Feb 24, 2:34PM EST"
,"lt_dts" : "2016-02-24T14:34:54Z"
,"c" : "+0.83"
,"c_fix" : "0.83"
,"cp" : "0.88"
,"cp_fix" : "0.88"
,"ccol" : "chg"
,"pcls_fix" : "94.69"
}

使用googlefinanceyahoo-financepython模块可能比直接调用API地址要好。在

不过,值得注意的是,雅虎API并不是“实时”的。大约是15分钟的延迟报价。在

相关问题 更多 >