Alpaca API Python客户端

alpaca-trade-api的Python项目详细描述


pypi versioncircleci

羊驼贸易API蟒蛇

羊驼贸易api python是羊驼佣金自由贸易api的python库。 它允许在支持 rest和流数据接口。有关每个api行为的详细信息, 请参阅在线API文档

注意:由于 异步/等待和websockets模块依赖关系。

安装

$ pip3 install alpaca-trade-api

示例

为了调用alpaca的trade api,您需要注册一个帐户并获取api密钥对。将"密钥ID"和"密钥"替换为您从Web控制台获得的内容。

休息示例

importalpaca_trade_apiastradeapiapi=tradeapi.REST('<key_id>','<secret_key>',api_version='v2')# or use ENV Vars shown belowaccount=api.get_account()api.list_positions()

脚本示例

请参见examples/文件夹,以获取使用此API的一些示例脚本

API文件

http api文档位于https://docs.alpaca.markets/" rel="nofollow">https://docs.alpaca.markets/

API版本

API版本现在默认为"v2",但是如果您仍然有"v1"帐户,则可能需要指定API版本='v1'才能正确使用该API,直到您迁移。

身份验证

Alpaca API需要API密钥ID和密钥,您可以从 登录后的Web控制台。您可以将key_idsecret_key传递给 reststreamconn作为参数,或将环境变量设置为 概述如下。

羊驼环境变量

alpaca sdk将检查环境中是否有许多变量,这些变量可以使用,而不是硬编码到脚本中。

<表><广告>环境 默认值 说明 < /广告><正文>apca_api_key_id=<;key_id>;您的API密钥apca_api_secret_key=<;密钥>;您的API密钥apca_api_base_url=urlhttps://api.alpaca.markets(用于实时)
https://paper-api.alpaca.markets(用于纸张)指定api调用的url,默认值为live,必须指定此值才能切换到paper endpoint!< /td>apca_api_data_url=urlhttps://data.alpaca.markets数据API的端点APCA_retry_max=3超时时重试的后续API调用数APCA_retry_wait=3每次重试之间等待的秒数APCA_重试代码=429504429504尝试重试的逗号分隔的http状态代码多边形URLwss://alpaca.socket.polygon.io/stocks流式处理多边形数据的终结点。您可能不需要更改它,除非您想代理它,例如多边形键id多边形键,如果它与羊驼API键不同。大多数用户无需设置此项即可访问多边形。

REST

rest类是api请求的入口点。这个例子 类提供了所有rest api调用,如account、orders、positions、positions和 和酒吧。

每个返回的对象都由实体类的子类(或其列表)包装。 这个helper类为 json对象,由存储在\u raw字段中的原始对象支持。 它还将某些类型转换为适当的python对象。

importalpaca_trade_apiastradeapiapi=tradeapi.REST()account=api.get_account()account.status=>'ACTIVE'

实体类还将timestamp字符串字段转换为pandas.timestamp 对象。它的\u raw属性返回原始原始原始数据未编组 从响应json文本。

请注意,API已被限制,当前每个帐户每分钟200个请求。如果您的客户机超过此数目,则会返回429太多请求状态,并且此库将根据配置的重试环境变量重试。

如果超过重试次数,或返回其他API错误,将引发alpaca_trade_api.rest.api error。 您可以通过此对象访问以下信息。

  • API错误代码:。代码属性
  • API错误消息:str(错误)
  • 原始请求对象:。请求属性
  • 原始响应objecgt:。响应属性
  • http状态代码:。status\u code属性

rest.get_account()

调用get/account并返回帐户实体。

rest.list_orders(status=none,limit=none,after=none,until=none,direction=none)

调用get/orders并返回order实体的列表。 afteruntil需要字符串格式,您可以通过pd.timestamp().isoformat()

其余。提交订单(符号、数量、边、类型、时间、限制价格=无、停止价格=无、客户订单ID=无)

调用post/orders并返回order实体。

rest.get_order_by_client_order_id(客户订单id)

使用客户订单id调用get/orders,并返回订单实体。

休息。获取订单(订单ID)

调用get/orders/{order_id}并返回order实体。

休息。取消订单(订单ID)

调用delete/orders/{order\u id}

休息。取消所有订单()

调用delete/orders

rest.list_positions()

调用get/positions并返回position实体列表。

休息。获取位置(符号)

调用get/positions/{symbol}并返回position实体。

rest.列出资产(状态=无,资产类别=无)

调用get/assets并返回asset实体的列表。

休息。获取资产(符号)

调用get/assets/{symbol}并返回asset实体。

rest.get_barset(符号、时间范围、限制、开始=无、结束=无、之后=无、直到=无)

为给定的符号调用get/bars/{timeframe},并返回一个带有limitbar对象的barset 对于每个请求的符号。 时间范围可以是分钟1分钟5分钟15分钟1dminute是别名 小于或等于1分钟。类似地,day1d的别名。 startendafteruntil需要字符串格式,您可以使用 pd.timestamp().isoformat()after不能与start一起使用,直到不能与end一起使用为止

休息。获取时钟()

呼叫get/clock>并返回一个时钟实体。

rest.get_calendar(开始=无,结束=无)

调用get/calendar并返回calendar实体。


streamconn

streamconn类提供基于websocket的事件驱动 接口。使用实例的装饰符 定义当模式 在频道名称上匹配。一旦设置了事件处理程序, 调用run方法,该方法将一直运行直到出现严重异常 提高了。此模块本身不提供任何线程 功能,因此如果需要使用从 服务器,您需要在后台线程中运行它。

这个类为这两个接口提供了一个唯一的接口 羊驼的帐户/贸易更新事件和多边形的价格更新。 当使用 相应的频道名称。例如,如果您订阅 帐户更新,一个websocket连接到alpaca stream api,并且 如果将am.*赋给subscribe()方法,则WebSocket连接是 建立到多边形的界面。

run方法是开始订阅频道和 永远奔跑。呼叫将被永远阻止,直到 引发异常,并异步调用每个事件处理程序 消息到达时。

如果发生以下情况,run方法将尝试重新连接到服务器 连接失败。在这种情况下,您可能需要重置您的状态 在connect事件中,这是最好的。方法仍然提高 如果在 事件循环。

传递给每个处理程序的msg对象由实体包装 如果邮件来自服务器,则为助手类。

每个事件处理程序都必须标记为异步。否则, 将其注册为事件处理程序时,会引发valueerror

conn=StreamConn()@conn.on(r'^account_updates$')asyncdefon_account_updates(conn,channel,account):print('account',account)@conn.on(r'^status$')defon_status(conn,channel,data):print('polygon status update',data)@conn.on(r'^AM$')defon_minute_bars(conn,channel,bar):print('bars',bar)@conn.on(r'^A$')defon_second_bars(conn,channel,bar):print('bars',bar)# blocks foreverconn.run(['account_updates','AM.*'])

您可能会在线程中调用run方法,因为它将继续运行 除非引发异常。

streamconn.subscribe(频道)

请求"监听"服务器。频道必须是字符串频道名称列表。

streamconn.取消订阅(频道)

请求停止"监听"服务器。频道必须是字符串频道名称列表。

streamconn.run(频道)

进入无限循环并等待来自服务器的消息。你应该 在调用run之前,使用onregister方法设置事件侦听器

streamconn.on(频道pat)

如上例所示,这是一个decorator方法,用于添加事件处理程序函数。 通道pat用作筛选流名称的正则表达式模式。

流连接寄存器(通道pat,func)

将函数注册为由流事件触发的事件处理程序 与channel_path正则表达式匹配的。使用 相同的通道pat将覆盖旧的处理程序。

streamconn.注销(channel_pat)

注销以前通过on注册的事件处理程序函数,或 寄存器方法。


多边形API服务

Alpaca的API密钥ID可用于访问Polygon API 在这里可以找到。 这个python sdk封装了他们的api服务,并与alpaca无缝集成。 应用程序编程接口.羊驼贸易api.rest.polygon将是polygon的rest对象。

下面的示例以数据帧格式提供AAPL每日OHLTV数据。

importalpaca_trade_apiastradeapiapi=tradeapi.REST()aapl=api.polygon.historic_agg('day','AAPL',limit=1000).df

多边形/静止

它通过羊驼rest对象初始化。

多边形/静止交换(

返回exchange实体的列表。

polygon/rest.symbol_type_map()

返回一个symboltypemap对象。

多边形/静止。历史交易(符号,日期,偏移=无,限制=无)

返回一个交易列表,其中包含交易实体。

  • 日期是日期字符串,如"2018-2-2"。返回的报价是从即日起生效的。
  • offset是unix epoch毫秒中的一个整数,作为下限过滤器,包括在内。
  • limit是要返回的刻度数的整数。默认值,最大值为30000。

多边形/贸易.df

返回一个pandas dataframe对象,其标记由historic\u trades返回

polygon/rest.historic_引号(symbol,date,offset=none,limit=none)

返回引号这是引号实体的列表。

  • 日期是日期字符串,如"2018-2-2"。返回的报价仅来自当天。
  • offset是unix epoch毫秒中的一个整数,作为下限过滤器,包括在内。
  • limit是要返回的刻度数的整数。默认值,最大值为30000。

多边形/引号.df

返回一个pandas dataframe对象,其刻度由historic\u引号返回

polygon/rest.historic_agg(大小,符号,_from=none,to=none,limit=none)

返回aggs这是agg实体的列表。aggs.df提供数据帧 对象:< /P>

  • \u from是一个东部时间戳字符串,用于筛选下限(包括下限)的结果。
  • 是一个东部时间戳字符串,用于筛选结果的上限(包括上限)。
  • limit是一个整数,用于限制结果数。3000是默认值和最大值。

如果指定to参数,请指定\u from参数,因为当to是 从中指定的\u被认为是历史的开始。否则,当你 仅使用限制或不使用参数,结果将从最新点返回。

返回的实体具有用较长名称而不是较短名称重新标记的字段。 例如,将o字段重命名为open

多边形/aggs.df

返回一个pandas数据帧对象,其标记由hitoric_agg返回。

Poylgon/Rest.上次交易(符号)

返回一个trade实体,表示符号的最后一个trade。

多边形/静止。最后一个引号(符号)

返回表示符号最后一个引号的引号实体。

多边形/静止状态图(ticktype='trades')

返回一个conditionmap实体。

多边形/休息公司(符号)

如果symbol是字符串,则返回company实体,或者 dict[symbol->;company]如果symbol是字符串列表。

多边形/静止股息(符号)

如果symbol是字符串,则返回红利实体,或者 dict[symbol->;红利]如果"symbol"是字符串列表。

多边形/静止分割(符号)

返回符号的拆分实体。

多边形/静止收益(符号)

如果symbol是字符串,则返回收益实体,或者 dict[symbol->;收入]如果symbol是字符串列表。

多边形/静止财务(符号)

如果symbol是字符串或 dict[symbol->;财务信息]如果symbol是字符串列表。

多边形/静止。新闻(符号)

返回符号的新闻列表实体。

支持和贡献

对于本模块特有的技术问题,请报告 此GitHub存储库上的问题。任何api问题都可以通过 羊驼的客户支持。

通过发送pull请求的新功能和错误修复总是 欢迎光临。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在OSGi felix scr注释中将运行时参数传递给服务   java如何按字母顺序将对象插入ArrayList?   在Netbeans中调试Java   java从json文件中获取不同的照片   通过迭代和打印将java插入2个哈希表的运行时间   java如何替换JUnit 5中的WireMock@Rule注释?   shell在javajsch程序中使用'been'命令访问受限目录   java RMI是什么类型的?   javajooq别名构造   java如何通过在testNG中创建对象来调用测试方法   java下载从安卓 URL加载到imageview中的图像   从java运行bat文件   带有客户端证书的java嵌入式Jetty   java Ajax将JSON数组发送到servlet   创建数据并将数据添加到SQLite数据库时发生java错误   添加CV的javascript HRMS项目过程   java AspectJ加载时编织不起作用   java动态更改(使用JMX)正在监视的文件夹中的新文件   java岛数迭代矩阵并将节点标记为已访问