[](https://res.cloudinary.com/practicaldev/image/fetch/s--pul7gcO6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1. medium.com/max/1024/0%2ArRyGKdfn0ygFxMvP.png)

我已经在我的 Airflow 相关帖子中使用了 CCXT 库,这里是。在这篇文章中,我将专门讨论该库以及如何使用它从交易所或交易自动化中提取不同类型的数据。

什么是CCXT

C rypto C urrency e X change T rading Library aka CCXT 是一个用于加密货币交易和电子商务的 JavaScript / Python / PHP 库,支持许多比特币/以太币/altcoin 交易市场和商家 API。它连接了超过100 个交易所。这个库最好的特点之一是它是_exchange agonistic_,即无论你使用Binance还是FTX,例程的签名都是一样的。它在 Python、Javascript 和 PHP 中可用。它支持不同交易所提供的公共和私有 API,但我只讨论一些公共 API 端点。

开发设置

安装库非常容易。您所要做的就是在终端中运行 pip install ccxt 。

好了,库已经安装好了,我们来连接一个exchange。我现在正在连接 Binance 交易所。

连接交换

第一步也是最明显的一步是首先连接交易所,这很容易。

# Connect binance binance = ccxt.binance()

进入全屏模式 退出全屏模式

加载市场

交易所已连接,现在是时候加载交易所提供的所有市场了。通常,它不使用,但它可以让您很好地了解某对是否可用。

获取代码

让我们获取与 BTC/USDT 相关的信息。

btc_ticker = binance.fetch_ticker('BTC/USDT') btc_ticker

进入全屏模式 退出全屏模式

它返回:

{'symbol': 'BTC/USDT', 'timestamp': 1634909924391, 'datetime': '2021-10-22T13:38:44.391Z', 'high': 65564.0, 'low': 62000.0, 'bid': 63363.89, 'bidVolume': 1.32351, 'ask': 63363.9, 'askVolume': 0.27138, 'vwap': 63105.52714333, 'open': 65470.0, 'close': 63363.9, 'last': 63363.9, 'previousClose': 65469.99, 'change': -2106.1, 'percentage': -3.217, 'average': None, 'baseVolume': 53395.84423, 'quoteVolume': 3369572897.3972454, 'info': {'symbol': 'BTCUSDT', 'priceChange': '-2106.10000000', 'priceChangePercent': '-3.217', 'weightedAvgPrice': '63105.52714333', 'prevClosePrice': '65469.99000000', 'lastPrice': '63363.90000000', 'lastQty': '0.00843000', 'bidPrice': '63363.89000000', 'bidQty': '1.32351000', 'askPrice': '63363.90000000', 'askQty': '0.27138000', 'openPrice': '65470.00000000', 'highPrice': '65564.00000000', 'lowPrice': '62000.00000000', 'volume': '53395.84423000', 'quoteVolume': '3369572897.39724530', 'openTime': 1634823524391, 'closeTime': 1634909924391, 'firstId': 1109039843, 'lastId': 1110609081, 'count': 1569239}}

进入全屏模式 退出全屏模式

除了 Ticker 和 Timestamp,它还返回 Open、High、Low、Close、Volume、Bid 和 Ask Price 等数据点。

获取 OHLCV 数据

获取 OHLCV 数据非常简单,您所要做的就是:

btc_usdt_ohlcv = binance.fetch_ohlcv('BTC/USDT','1d',limit=100)

进入全屏模式 退出全屏模式

在这里,第一个参数是交易对,第二个参数是持续时间,它告诉您是否需要一天级别的数据、分钟或一个月。每个 OHLCV 条目代表一个烛台。由于持续时间的差异是一天,因此从 UTC 午夜 12 点开始,数据将始终采用 24 小时的差异。最后一个参数limit是可选的。打印时,数据以以下格式返回:

[[1634774400000, 66001.4, 66639.74, 62000.0, 62193.15, 68538.64537], [1634860800000, 62193.15, 63732.39, 62000.0, 62680.01, 24059.82478]]

进入全屏模式 退出全屏模式

数据以以下格式返回:TIMESTAMP、OPEN、HIGH、LOW、CLOSE 和 VOLUME。让我们让它变得有趣。我将从 Binance 和 FTX 交易所提取 BTC/USDT 价格并绘制_close_ 值图表。

[](https://res.cloudinary.com/practicaldev/image/fetch/s--Jns74Qts--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1. medium.com/max/1024/0%2AtNO3OtCtUhzUg99l.png)

收盘价与成交量如何?

[](https://res.cloudinary.com/practicaldev/image/fetch/s--6aP6AoGg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1. medium.com/max/300/0%2ABbY-cNnCBjQtGKWn.png)

很脏,对吧?好像一个孩子在纸上画了一些东西,但这就是所谓的_波动!

获取订单簿

现在让我们从 Binance 和 FTX 调出订单簿。

orderbook_binance_btc_usdt = binance.fetch_order_book('BTC/USDT') orderbook_ftx_btc_usdt = ftx.fetch_order_book('BTC/USDT') 

bids_binance = orderbook_binance_btc_usdt['bids'] asks_binanace = orderbook_binance_btc_usdt['asks'] df_bid_binance = 

pd.DataFrame(bids_binance, columns=['price','qty']) df_ask_binance = pd.DataFrame(asks_binanace, columns=['price','qty'])

进入全屏模式 退出全屏模式

让我们绘制图表!

fig, (ax1, ax2) = plt.subplots(2, figsize=(10, 8), dpi=80) ax1.plot(df_bid_binance['price'], 

df_bid_binance['qty'],label='Binance',color='g') ax1.fill_between(df_bid_binance['price'], 
df_bid_binance['qty'],color='g') ax2.plot(df_ask_binance['price'], df_ask_binance['qty'],label='FTX',color='r') 

ax2.fill_between(df_bid_binance['price'], df_bid_binance['qty'],color='r') ax1.set_title('Ask Price vs Quantity for Binance') ax2.set_title('Bid Price vs Quantity for Binance')
plt.show()

进入全屏模式 退出全屏模式

它产生......

[](https://res.cloudinary.com/practicaldev/image/fetch/s--p2ZZlhkC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1. medium.com/max/1024/0%2AY5VQO-X-e8wpsdkw.png)

酷,不是吗?

结论

所以这是对 CCXT 库的简要介绍。我只是划伤了表面。如果您有兴趣,您可以基于此库创建一个交易机器人。有几个以前做过。像往常一样,代码在Github上可用。

原文发表于http://blog.adnansiddiqi.me2021年10月23日.


Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐