跳转到主要内容

加密交易异步Python客户端

项目描述

cryptoxlib-aio 5.3.0

cryptoxlib-aio是一个紧凑的Python库,提供对选定加密交易所的REST和WEBSOCKET API的访问。

cryptoxlib-aio设计为一个异步库,利用Python的现代功能和支持异步库的功能(主要aiohttp)。

最近新增功能

  • 支持python 3.10
  • coinmate加密交易所已添加!
  • bitpanda通过websockets取消所有订单
  • binance BSwap(流动性池)端点
  • binance 杠杆代币端点
  • binance COIN-M期货端点
  • binance 保证金和USDS-M期货端点

有关更改的完整历史记录,请参阅CHANGELOG


主要任务

目前有大量现有的库针对与cryptoxlib-aio相似的目标受众。为了实现对交易所的最广泛覆盖,支持的API通常有限,最明显的例子是缺乏websockets

cryptoxlib-aio的使命是

  • 作为各种加密交易所的单一点入口
  • 提供完整的REST API以及交易所的WebSocket完整实现。免费且无需订阅计划。

全面支持WebSocket是cryptoxlib-aio的基石,它试图将cryptoxlib-aio与现有解决方案区分开来,现有解决方案要么不支持WebSocket,要么不支持免费提供。

您还会发现,我们感兴趣的主题通常是那些没有在主流加密库中获得一席之地的交易所,这是它们接触开发者社区的一种方式。

免责声明:我们绝不是在暗示现有库比cryptoxlib-aio差,它们只是针对不同的最终用户。

功能

  • 访问REST API以及为选定交易所提供全面的WebSocket支持(假设交易所提供了WebSocket)
  • 自动连接管理(在远程终止后重新连接等)
  • 频道捆绑
  • 简洁的架构,使实现新交易所的API变得简单直接
  • 完全异步设计,旨在实现最佳性能
  • 为每个交易所和产品提供现成的捆绑示例

支持的交易所列表

如前所述,下面列出的所有交易所都包含对WebSocket的全面支持。

名称 文档
aax AAX API
bibox Bibox API
bibox_europe BiboxEurope API
binance Binance(现货、杠杆、USDS-M期货、COIN-M期货、BLVT、BSwap) API
bitforex Bitforex API
bitpanda Bitpanda Pro API
bitvavo Bitvavo API
btse BTSE API
coinmate Coinmate API
eterbase Eterbase API
hitbtc HitBTC API
liquid Liquid API

与REST API相对而言,它在加密交易所之间相对统一不同,WebSocket往往非常特定于交易所,因此实现起来非常耗时(这也是为什么它们没有广泛提供的原因)。因此,《cryptoxlib-aio》在覆盖交易所的数量上付出了代价。这与我们的理念质量胜过数量是一致的。

支持的交易所列表将不断增长,没有特定的模式,通常由个人需求驱动。如果对添加新交易所/功能有很高的需求,那么它有很大可能发生(但不保证)。有关针对客户定制的更改的商业相关咨询,请通过联系信息中提到的电子邮件联系。

安装

pip install cryptoxlib-aio

如果您想从仓库安装最新版本,请使用

pip install git+https://github.com/nardew/cryptoxlib-aio.git@master

示例

BITPANDA
bitpanda = CryptoXLib.create_bitpanda_client(api_key)

print("Account balance:")
await bitpanda.get_account_balances()

print("Order book:")
await bitpanda.get_order_book(Pair("BTC", "EUR"))

print("Create limit order:")
await bitpanda.create_limit_order(Pair("BTC", "EUR"), OrderSide.BUY, "10000", "1")

# Create first bundle of subscriptions
bitpanda.compose_subscriptions([
    AccountSubscription(),
    PricesSubscription([Pair("BTC", "EUR")]),
    OrderbookSubscription([Pair("BTC", "EUR")], "50", callbacks = [order_book_update]),
    CandlesticksSubscription([CandlesticksSubscriptionParams(Pair("BTC", "EUR"), TimeUnit.MINUTES, 1)]),
    MarketTickerSubscription([Pair("BTC", "EUR")])
])

# Bundle another subscriptions into a separate websocket
bitpanda.compose_subscriptions([
    OrderbookSubscription([Pair("ETH", "EUR")], "3", callbacks = [order_book_update]),
])

# Execute all websockets asynchronously
await bitpanda.start_websockets()
BINANCE
# SPOT REST API

client = CryptoXLib.create_binance_client(api_key, sec_key)

print("Exchange info:")
await client.get_exchange_info()

print("Order book:")
await client.get_orderbook(pair = Pair('ETH', 'BTC'), limit = enums.DepthLimit.L_5)

print("Create limit order:")
await client.create_order(Pair("ETH", "BTC"), side = enums.OrderSide.BUY, type = enums.OrderType.LIMIT,
    quantity = "1",
    price = "0",
    time_in_force = enums.TimeInForce.GOOD_TILL_CANCELLED,
    new_order_response_type = enums.OrderResponseType.FULL)

# SPOT WEBSOCKETS

# Bundle several subscriptions into a single websocket
client.compose_subscriptions([
    OrderBookTickerSubscription(callbacks = [orderbook_ticker_update]),
    OrderBookSymbolTickerSubscription(pair = Pair("BTC", "USDT"), callbacks = [orderbook_ticker_update]),
    TradeSubscription(pair = Pair('ETH', 'BTC'), callbacks = [trade_update]),
    CandlestickSubscription(Pair('BTC', 'USDT'), Interval.I_1MIN, callbacks = [candlestick_update])
])

# Bundle another subscriptions into a separate websocket
client.compose_subscriptions([
    AccountSubscription(callbacks = [account_update])
])

# Execute all websockets asynchronously
await client.start_websockets()

# LEVERAGED TOKENS REST API

client = CryptoXLib.create_binance_client(api_key, sec_key)

print("BLVT symbol info:")
await client.get_blvt_info()

print("Subscribe BTCUP:")
await client.blvt_subscribe("BTCUP", "500000000")

print("Redeem BTCUP:")
await client.blvt_redeem("BTCUP", "500000000")

# MARGIN REST API

client = CryptoXLib.create_binance_client(api_key, sec_key)

print("All margin assets:")
await client.get_margin_all_assets()

print("Margin account balance:")
await client.get_margin_account()

# USDS-M futures REST API

client = CryptoXLib.create_binance_usds_m_futures_client(api_key, sec_key)

print("Index price candlesticks:")
await client.get_index_price_candlesticks(pair = Pair('BTC', 'USDT'), interval = enums.Interval.I_1MIN)

print("Index info:")
await client.get_index_info(pair = Pair('DEFI', 'USDT'))

# COIN-M futures REST API

client = CryptoXLib.create_binance_coin_m_futures_client(api_key, sec_key)

await client.create_order(symbol = 'BTCUSD_PERP', side = enums.OrderSide.BUY, type = enums.OrderType.LIMIT,
    quantity = "1",
    price = "0",
    time_in_force = enums.TimeInForce.GOOD_TILL_CANCELLED,
    new_order_response_type = enums.OrderResponseType.FULL)

# BinanceSwap REST API

client = CryptoXLib.create_binance_client(api_key, sec_key)

print('Swap pools:')
await client.get_bswap_pools()

print('Add liquidity:')
await client.bswap_add_liquidity(0, 'BTC', '10000000')

print('Swap:')
await client.bswap_swap(Pair('BTC', 'USDT'), '100000000000')

每个交易所和产品的示例可以在examples文件夹中找到。

联系

  • 要报告问题、错误、文档纠正或提出新功能,请首选使用Github Issues
  • 对于需要更多个人方法的主题,请随时发送电子邮件至

支持

如果您喜欢这个库,并且觉得您想要支持其进一步的开发、增强和错误修复,那么以下操作将非常有帮助且非常受赞赏:

  • 提交错误、建议、pull请求等
  • 传播消息
  • 捐赠任意小费
    • BTC: 3GJPT6H6WeuTWR2KwDSEN5qyJq95LEErzf
    • ETH: 0xC7d8673Ee1B01f6F10e40aA416a1b0A746eaBe68
    • Binance Smart Chain代币: 0xe37FaB52ed4c1C9a3d80896f2001Cb3284a1b619
    • XMR: 87vdCaWFN2YJEk3HKVJNaPBFsuwZTJocRfpGJ747dPQrFcrs6SQTmA3XDGyWUPoALuNnXezEbJXkbY8Y4VSxG4ReEFqxy5m

项目详情


下载文件

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

源分发

cryptoxlib-aio-5.3.0.tar.gz (56.6 kB 查看哈希值)

上传时间

构建分发

cryptoxlib_aio-5.3.0-py3-none-any.whl (87.2 kB 查看哈希值)

上传时间 Python 3

支持