加密交易异步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 | API | |
Bibox | API | |
BiboxEurope | API | |
Binance(现货、杠杆、USDS-M期货、COIN-M期货、BLVT、BSwap) | API | |
Bitforex | API | |
Bitpanda Pro | API | |
Bitvavo | API | |
BTSE | API | |
Coinmate | API | |
Eterbase | API | |
HitBTC | API | |
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
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。