跳转到主要内容

到IEX的REST API

项目描述

Python接口到 IEX Cloud

Build Status Coverage License PyPI Docs

推荐

请使用 我的推荐码 订阅IEX Cloud。

入门

安装

从pip安装

pip安装pyEX

或从源码安装

python setup.py install

扩展

  • pyEX[async]: 用于流API的asyncio集成
  • pyEX[studies]: 技术指标和其他计算

演示 + 文档

概述

pyEX通过2个接口支持IEX Cloud api。第一个是简单的函数调用,传入API版本和令牌作为参数

In [1]: import pyEX as p

In [2]: p.chart?
Signature: p.chart(symbol, timeframe='1m', date=None, token='', version='', filter='')
Docstring:
Historical price/volume data, daily and intraday

https://iexcloud.io/docs/api/#historical-prices
Data Schedule
1d: -9:30-4pm ET Mon-Fri on regular market trading days
    -9:30-1pm ET on early close trading days
All others:
    -Prior trading day available after 4am ET Tue-Sat

Args:
    symbol (str); Ticker to request
    timeframe (str); Timeframe to request e.g. 1m
    date (datetime): date, if requesting intraday
    token (str); Access token
    version (str); API version
    filter (str); filters: https://iexcloud.io/docs/api/#filter-results

Returns:
    dict: result

对于大多数调用,都有一个便捷的方法返回一个dataframe

In [5]: [_ for _ in dir(p) if _.endswith('DF')]
Out[5]:
['advancedStatsDF',
 'auctionDF',
 'balanceSheetDF',
 'batchDF',
 'bookDF',
 'bulkBatchDF',
 'bulkMinuteBarsDF',
 'calendarDF',
...

由于令牌很少改变,我们有一个Client对象以方便使用

In [6]: p.Client?
Init signature: p.Client(api_token=None, version='v1', api_limit=5)
Docstring:
IEX Cloud Client

Client has access to all methods provided as standalone, but in an authenticated way

Args:
    api_token (str): api token (can pickup from IEX_TOKEN environment variable)
    version (str): api version to use (defaults to v1)
                      set version to 'sandbox' to run against the IEX sandbox
    api_limit (int): cache calls in this interval
File:           ~/Programs/projects/iex/pyEX/pyEX/client.py
Type:           type
Subclasses:

客户端将自动从环境变量IEX_TOKEN中获取API密钥,也可以作为参数传入。要使用IEX Cloud测试环境,只需设置version='sandbox'

In [8]: c = p.Client(version='sandbox')

In [9]: c.chartDF('AAPL').head()
Out[9]:
              open   close    high     low    volume   uOpen  uClose   uHigh    uLow   uVolume  change  changePercent   label  changeOverTime
date
2019-11-27  271.31  274.04  277.09  268.75  16994433  267.69  271.99  271.82  266.32  16811747    0.00         0.0000  Nov 27        0.000000
2019-11-29  271.30  272.19  280.00  279.20  12135259  270.90  275.02  270.00  267.10  11927464   -0.60        -0.2255  Nov 29       -0.002232
2019-12-02  279.96  265.23  276.41  267.93  23831255  279.97  266.80  281.32  269.29  24607845   -3.20        -1.1646   Dec 2       -0.013820
2019-12-03  261.54  271.05  259.96  262.09  30331487  259.87  271.34  269.02  260.71  30518449   -4.93        -1.8450   Dec 3       -0.032745
2019-12-04  272.81  273.56  271.26  267.06  17109161  267.30  262.82  274.99  270.83  17230517    2.39         0.8955   Dec 4       -0.023411

比原生API和其他库等改进

  • pyEX将根据在IEX Cloud网站上定义的刷新间隔(和在文档字符串中)透明地缓存请求,以避免浪费积分。它还可以将缓存保存到磁盘,或与您自己的自定义缓存方案集成。
  • pyEX完全实现了流API

其他增强

  • pyEX-studies:pyEX与TA-Lib和其他库的集成,用于IEX数据之上的技术分析和其他指标
  • pyEX-caching:pyEX函数调用的持久、可查询缓存。最小化您的支出并最大化性能
  • pyEX-zipline:IEX数据的Zipline集成

演示

规则引擎

pyEX实现了与规则引擎交互的方法。

rule = {
        'conditions': [['changePercent','>',500],
                       ['latestPrice','>',100000]],
        'outputs': [{'frequency': 60,
                     'method': 'email',
                     'to': 'your_email@domain'
                    }]
        }

c.createRule(rule, 'MyTestRule', 'AAPL', 'all')  # returns {"id": <ruleID>, "weight": 2}

c.rules()  # list all rules
c.ruleInfo("<ruleID>")
c.ruleOutput("<ruleID>")
c.pauseRule("<ruleID>")
c.resumeRule("<ruleID>")
c.deleteRule("<ruleID>")

我们还提供Python中的辅助类,以便构建符合规则架构(由schema()辅助函数指定)的规则

方法

数据

pyEX提供了静态和SSE流数据的包装器。对于大多数静态数据端点,我们提供JSON和DataFrame返回函数。对于市场数据端点,我们还提供使用aiohttp的异步包装器(要安装依赖项,请运行pip install pyEX[async])。

DataFrame函数将以DF后缀结尾,异步函数将以Async后缀结尾。

SSE流数据可以使用回调

newsSSE('AAPL', on_data=my_function_todo_on_data)

或通过异步生成器(安装pyEX[async]后)

async for data in newsSSE('AAPL')

完整API

请参阅readthedocs以获取完整的API规范。在CATALOG.md中提供了实现的方法。

所有方法都遵循共同的命名约定。如果API方法名为technicals,则客户端将具有technicalstechnicalsDF方法。此外,大多数方法都在作用域内提供,例如,wti作为client.wticlient.commodities.wti提供,analystDays从Wall Street Horizon作为client.premium.analystDays提供,等等。

开发

请参阅CONTRIBUTING.md以获取指南。

许可证

本软件根据Apache 2.0许可证授权。有关详细信息,请参阅LICENSEAUTHORS文件。

项目详细信息


下载文件

下载适合您的平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

pyEX-0.5.0.tar.gz (116.2 kB 查看哈希)

上传于 源代码

构建发行版

pyEX-0.5.0-py2.py3-none-any.whl (163.4 kB 查看哈希值)

上传于 Python 2 Python 3

由以下提供支持