首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从yahoo中获取技术指标

从yahoo中获取技术指标
EN

Stack Overflow用户
提问于 2015-09-01 17:58:13
回答 3查看 4.2K关注 0票数 4

我正试图从雅虎财务api获得RSI指标。

到目前为止,我可以获得CSV格式的报价,但似乎没有api的具体指标,如RSI。

有人知道怎么做吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-01 02:04:42

您拥有计算RSI所需的所有数据。http://www.investopedia.com/terms/r/rsi.asp

代码语言:javascript
复制
import numpy as np
from urllib.request import urlopen

# The stock to fetch
stock = 'AMD'

# Yahoos API
urlToVisit = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=1y/csv'
stockFile = []

# Fetch the stock info from Yahoo API
try:
    sourceCode = urlopen(urlToVisit).read().decode('utf-8')
    splitSource = sourceCode.split('\n')
    for eachLine in splitSource:
        splitLine = eachLine.split(',')
        if len(splitLine)==6:
            if 'values' not in eachLine:
                stockFile.append(eachLine)
except Exception as e:
    print(str(e), 'failed to organize pulled data')

except Exception as e:
    print(str(e), 'failed to pull price data')

date, closep, highp, lowp, openp, volume = np.loadtxt(stockFile, delimiter=',',unpack=True,)


def rsiFunc(prices, n=14):
    # Returns an RSI array
    deltas = np.diff(prices)
    seed = deltas[:n+1]
    up = seed[seed>=0].sum()/n
    down = -seed[seed<0].sum()/n
    rs = up/down
    rsi = np.zeros_like(prices)
    rsi[:n] = 100. - 100./(1.+rs)

    for i in range(n, len(prices)):
        delta = deltas[i-1]
        if delta > 0:
            upval = delta
            downval = 0.
        else:
            upval = 0.
            downval = -delta
        up = (up*(n-1)+upval)/n
        down = (down*(n-1)+downval)/n
        rs = up/down
        rsi[i] = 100. - 100./(1.+rs)
    return rsi


# Lets see what we got here
rsi = rsiFunc(closep)
n = 0
for i in date:
    print('Date stamp:', i, 'RSI', rsi[n])
    n+=1
票数 6
EN

Stack Overflow用户

发布于 2015-12-13 22:18:21

雅虎金融没有这样的API。我发现了一个有趣的API,它似乎可以完成您正在寻找的功能(https://www.stockvider.com/)。它是全新的,API没有提供很多特性,但它的目标是涵盖最常见的技术指标。到目前为止,您只能获得xml格式的数据。

例如,您可以获得苹果股票的RSI值,如:date=2015-07-20

票数 1
EN

Stack Overflow用户

发布于 2015-09-15 22:32:21

您可以获得报价,并计算您想要的指标与包。请参阅quantmodTTR的示例。

例如:

代码语言:javascript
复制
library(quantmod)
getSymbols('F',src='yahoo',return.class='ts') 
fpr <- Cl(F)
rsi <- RSI(fpr)

tail(cbind(Cl(F),rsi),10)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32338086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档