一些用于Python的加密货币库
众所周知,近年来加密货币的流行度急剧上升,尝试理解区块链的工作原理和比特币可能会令人困扰。现在有区块链、智能合约、账本,甚至比’大数据’革命还有更多流行词。
假设我们中的任何人都想在加密货币世界中涉足,并且在开发方面有一些经验,那么这个教程是最好的选择。因为我们将要介绍一些可以用于加密货币的公开可用库。这是一个简单的方法,可以快速开始加密货币的经验,参与社区,并了解一些技术方面的知识。
在接下来的教程中,我们将探索一些出色的Python库,它们允许我们在加密货币世界中执行各种活动。我们将能够获取不同币种的实时价格报价、连接到各种交易所、下单交易,甚至构建我们自己的实时算法交易机器人。让我们了解一些由Python编程语言提供的最佳加密货币库。
我们将介绍以下Python库:
- CryptoCompare
- Cryptofeed
- FreqTrade
- CCXT
我们将简要讨论上述库。
了解CryptoCompare库
CryptoCompare是用于实时加密货币价格报价和信息的领先网站之一。该网站成立于2015年,为用户提供最新的加密货币新闻、详细的币种信息和市场统计数据。CryptoCompare还评价各种加密货币交易所、钱包和服务,为买家提供可能的最新信息。
CryptoCompare还提供大量的数据服务和功能齐全的API。这就是cryptocompare库的用处所在。这个Python库为CryptoCompare API提供了一个方便的包装器。
我们可以使用pip安装器安装加密货币库,如下所示:
语法:
$ pip3 install cryptocompare
安装完成后,让我们考虑使用这个库来获取比特币相对于美元的当前价格的以下用法:
示例:
# importing the required library
import cryptocompare
# using the get_price() function
the_price = cryptocompare.get_price('BTC', 'USD')
# printing the price
print(the_price)
输出:
{'BTC': {'USD': 48146.45}}
解释:
在上面的代码片段中,我们已经导入了所需的模块。然后我们使用 get_price() 函数返回比特币对美元的当前价格。最后,我们打印出价格给用户。
上面的示例只是展示了CryptoCompare API的一小部分功能。我们还可以向交易所提交订单,查看历史价格并呈现市场信息。
您也可以访问CryptoCompare的官方网站以获取更多实时统计数据。
链接如下:https://www.cryptocompare.com/
理解Cryptofeed库
Cryptofeed库比简单的API包装器(如cryptocompare)更为复杂。Cryptofeed允许程序员直接从各个交易所将市场数据流式传输到应用程序中。我们可以设置自定义函数来处理每个更新,将数据存储在支持的后端之一或利用数据构建实时交易应用程序。
这个库非常复杂,刚开始可能难以理解,但它非常强大。为了开始使用,我们可以使用pip安装程序安装cryptofeed库,如下所示:
语法:
$ pip3 install cryptofeed
在存储库中提供了多种实现Cryptofeed的示例;但是,我们将看一个简化版本的获取国家最佳买卖报价(NBBO)示例:
示例:
from cryptofeed import FeedHandler
from cryptofeed.exchanges import Coinbase
def nbboUpdate(symbol, bid, bid_size, ask, ask_size, bid_feed, ask_feed):
print(
f'Pair: {symbol} ' +
f'Bid Price: {bid : .2f} ' +
f'Bid Size: {bid_size : .6f} ' +
f'Bid Feed: {bid_feed} ' +
f'Ask Price: {ask : .2f} ' +
f'Ask Size: {ask_size : .6f} ' +
f'Ask Feed: {ask_feed}'
)
def main():
the_feed = FeedHandler()
the_feed.add_nbbo([Coinbase], ['BTC-USD'], nbboUpdate)
the_feed.run()
if __name__ == "__main__":
main()
说明:
在上面的代码片段中,我们从库中导入了所需的模块。然后,我们定义了一个函数nbboUpdate()
,在其中包含了一些参数如symbol
、bid
、bid_size
、ask
、ask_size
、bid_feed
和ask_feed
,并打印它们的值。然后我们定义了main()
函数,将变量赋值给FeedHandler
方法。之后,我们使用add_nbbo()
函数指定交易所和符号。然后我们使用run()
函数来执行操作。最后,我们调用main()
函数。
如果我们执行上述程序,处理器将流式传输由Coinbase交易所提供的最新NBBO信息。输出将打印到控制台以便查看正在发生的情况。有大量的交易量,所以我们必须准备好接收大量的信息。这段代码将在一个循环中运行,更新最新数据直至退出。
Cryptofeed库是构建加密货币交易的高质量应用程序的绝佳资源。
有关更多实用示例和更新的交换信息,可以查看详细文档。
https://github.com/bmoscon/cryptofeed
了解Freqtrade库
这不是一个单独的Python库,但它是一个很好的Python交易应用程序的示例。这个应用程序完全使用Python编程语言编写。它使我们能够设置自定义交易机器人,包括大量的交易策略和响应各种命令。Freqtrade支持多个交易所,并提供与Telegram的简单集成。
Freqtrade的另一个令人惊奇的事实是,交易策略也是用Python编写的。我们不需要处理其他不熟悉的语言或下载大型配置文件来设置一个简单的策略。
要开始使用Freqtrade,请转到官方文档的安装部分,使用以下链接:
https://www.freqtrade.io/en/latest/installation/
我们还可以使用Docker来快速启动。
了解CCXT库
CCXT被认为是一个真正的单块交易库。这个库有很多功能和一个非常支持的社区。该库以JavaScript、PHP和Python提供,作为简单易用的模块。CCXT很像Cryptofeed,但更容易入门。我们不必满足于运行循环和不断流动的数据。我们只需调用CCXT来获取订单、交换信息等等。
我们可以使用pip安装器安装CCXT模块,如下所示:
语法:
$ pip3 install ccxt
安装完成后,让我们考虑以下示例,演示从Kraken交易所获取最新交易数据的操作。
示例:
# importing the required module
import ccxt
# using the kraken() function
the_kraken = ccxt.kraken()
# using the for-loop to iterate through trades in kraken
for trade in the_kraken.fetch_trades('BTC/USD'):
print(
f"date: {trade['datetime']} | " +
f"symbol: {trade['symbol']} | " +
f"price: {trade['price']} | " +
f"amount: {trade['amount']} | " +
f"cost: {trade['cost']} | " +
f"side: {trade['side']} | " +
f"type: {trade['type']}"
)
输出:
date: 2021-12-16T10:00:43.897Z | symbol: BTC/USD | price: 48936.7 | amount: 0.00096371 | cost: 47.160787157 | side: buy | type: limit
date: 2021-12-16T10:00:47.152Z | symbol: BTC/USD | price: 48936.5 | amount: 0.03011824 | cost: 1473.88125176 | side: buy | type: limit
date: 2021-12-16T10:01:06.050Z | symbol: BTC/USD | price: 48963.6 | amount: 0.00012934 | cost: 6.332952024 | side: buy | type: market
date: 2021-12-16T10:01:11.162Z | symbol: BTC/USD | price: 48961.1 | amount: 0.02751697 | cost: 1347.261119867 | side: buy | type: market
date: 2021-12-16T10:01:24.230Z | symbol: BTC/USD | price: 48971.3 | amount: 0.02043248 | cost: 1000.605107824 | side: sell | type: limit
date: 2021-12-16T10:01:25.279Z | symbol: BTC/USD | price: 48971.3 | amount: 0.02043248 | cost: 1000.605107824 | side: sell | type: limit
date: 2021-12-16T10:01:26.483Z | symbol: BTC/USD | price: 48971.3 | amount: 0.00634731 | cost: 310.836022203 | side: sell | type: limit
date: 2021-12-16T10:01:27.653Z | symbol: BTC/USD | price: 48971.4 | amount: 0.00160946 | cost: 78.817509444 | side: buy | type: limit
date: 2021-12-16T10:01:28.176Z | symbol: BTC/USD | price: 48971.4 | amount: 0.00013384 | cost: 6.554332176 | side: buy | type: market
date: 2021-12-16T10:01:28.177Z | symbol: BTC/USD | price: 48977.2 | amount: 0.00204177 | cost: 100.000177644 | side: buy | type: market
date: 2021-12-16T10:01:28.178Z | symbol: BTC/USD | price: 48978.0 | amount: 0.00082439 | cost: 40.37697342 | side: buy | type: market
date: 2021-12-16T10:01:28.434Z | symbol: BTC/USD | price: 48978.4 | amount: 0.0204306 | cost: 1000.65809904 | side: sell | type: limit
date: 2021-12-16T10:01:29.471Z | symbol: BTC/USD | price: 48978.4 | amount: 0.020432 | cost: 1000.7266688 | side: sell | type: limit
date: 2021-12-16T10:01:30.524Z | symbol: BTC/USD | price: 48978.4 | amount: 0.02043201 | cost: 1000.727158584 | side: sell | type: limit
date: 2021-12-16T10:01:31.592Z | symbol: BTC/USD | price: 48978.5 | amount: 0.020432 | cost: 1000.728712 | side: sell | type: limit
date: 2021-12-16T10:01:31.788Z | symbol: BTC/USD | price: 48978.6 | amount: 0.003 | cost: 146.9358 | side: buy | type: market
date: 2021-12-16T10:01:32.644Z | symbol: BTC/USD | price: 48978.5 | amount: 0.020432 | cost: 1000.728712 | side: sell | type: limit
date: 2021-12-16T10:01:33.157Z | symbol: BTC/USD | price: 48978.6 | amount: 0.013 | cost: 636.7218 | side: buy | type: market
date: 2021-12-16T10:01:33.752Z | symbol: BTC/USD | price: 48978.5 | amount: 0.00640702 | cost: 313.80622907 | side: sell | type: limit
date: 2021-12-16T10:01:36.476Z | symbol: BTC/USD | price: 48984.2 | amount: 0.02042724 | cost: 1000.612009608 | side: sell | type: limit
date: 2021-12-16T10:01:36.564Z | symbol: BTC/USD | price: 48985.8 | amount: 0.004 | cost: 195.9432 | side: buy | type: market
.
.
.
.
date: 2021-12-16T11:03:23.696Z | symbol: BTC/USD | price: 49169.3 | amount: 0.0002 | cost: 9.83386 | side: buy | type: market
date: 2021-12-16T11:03:23.697Z | symbol: BTC/USD | price: 49169.4 | amount: 0.0002 | cost: 9.83388 | side: buy | type: market
date: 2021-12-16T11:03:23.698Z | symbol: BTC/USD | price: 49169.5 | amount: 0.04488859 | cost: 2207.149526005 | side: buy | type: market
date: 2021-12-16T11:03:24.363Z | symbol: BTC/USD | price: 49169.4 | amount: 0.00057311 | cost: 28.179474834 | side: sell | type: limit
date: 2021-12-16T11:03:24.364Z | symbol: BTC/USD | price: 49169.2 | amount: 0.0010087 | cost: 49.59697204 | side: sell | type: limit
date: 2021-12-16T11:03:33.278Z | symbol: BTC/USD | price: 49169.3 | amount: 0.0002 | cost: 9.83386 | side: buy | type: market
date: 2021-12-16T11:03:33.280Z | symbol: BTC/USD | price: 49169.4 | amount: 0.0001 | cost: 4.91694 | side: buy | type: market
date: 2021-12-16T11:03:33.281Z | symbol: BTC/USD | price: 49169.4 | amount: 0.0001 | cost: 4.91694 | side: buy | type: market
date: 2021-12-16T11:03:33.282Z | symbol: BTC/USD | price: 49169.4 | amount: 0.002006 | cost: 98.6338164 | side: buy | type: market
解释:
在上面的代码片段中,我们已经导入了所需的库并将一个变量赋值给 kraken() 函数。然后,我们使用 fetch_trade() 提取有关各种价格、数量、时间戳等的详细信息,并使用 for 循环和 print 函数将它们全部打印出来。
执行上述代码后,我们将看到一个包含价格、数量、时间戳等详细信息的长列表。这些数据作为一个包含所有交易信息的列表提取出来,而不是数据流。CCXT库还提供了异步并发模式支持。有兴趣的人可以通过以下链接阅读官方文档了解更多实现细节:
https://github.com/ccxt/ccxt/wiki/Manual#synchronous-vs-asynchronous-calls
CCXT提供了一个灵活的实用工具,兼容不同的语言、交易所和平台。这个经过深思熟虑、得到了很好支持的平台允许程序员构建实用的交易应用程序。