CCXT加密货币兑换订单簿数据[示例教程]

>

无论您是创建个人交易机器人还是开发将支持数千个用户的完整交易服务,交换订单簿数据都是您的首要任务。这是成功评估市场和执行策略所需的第一批要素之一.

为什么订单书很重要?

订单簿指定了交易所当前打开的所有可用订单。每个订单代表一个或多个想要以给定价格买卖资产的人.

交易时,您可以在交易所上下单自己的未结订单以供其他人使用,也可以在交易所上获得可用的订单。无论您使用哪种策略,都有必要的信息来做出决定很重要.

我们如何访问交易所的订单簿?

从交易所访问订单簿的一种方法是直接从交易所请求此信息。您可以按照以下示例使用CCXT进行此操作.

CCXT示例-单个对

我们的第一个示例将请求Binance交易所上BTC / USDT交易对的当前订单簿。使用CCXT库时,一次只能访问一个交易对。这意味着我们将无法获取每个交易对的整个订单簿,但需要系统地提取每个交易对的订单簿.

安装CCXT


在开始之前,我们先安装CCXT python库.

点安装ccxt

例子

安装完成后,我们准备编写第一个python脚本,它将访问Binance上的BTC / USDT订单簿数据.

导入ccxt

#在币安上检索BTC / USDT对的数据

binance = ccxt.binance()

订单簿= binance.fetch_order_book(’BTC / USDT’)

结果

该请求将返回BTC / USDT交易对的交易所当前可用的买价和卖价订单.

每个订单中的第一个元素是以报价货币(在这种情况下为USDT)表示的订单价格。订单中的第二个元素是基于基础货币(在本例中为BTC)的交易所中的订单数量.

{

“出价”:[

[8724.77,0.149594], [8724.11,2.537818], [8724.08,0.030605],

],

“问”:[

[8725.61,0.055265], [8725.7,0.028131], [8725.81,0.116984],

]

}

CCXT示例-聚合对

既然我们已经介绍了如何使用CCXT访问单个交易对的订单簿,我们想扩展我们的方法来收集交易所中每个交易对的订单簿数据.

不幸的是,对于CCXT而言,收集如此大量的数据有些棘手。每个市场对的数据必须从Binance单独请求。由于Binance限制了访问数据的速度,因此发送所有这些请求最多可能需要5分钟或更长时间。.

导入ccxt

binance = ccxt.binance()

Aggregated_orderbook_data = []

#获取币安的可用市场

binance_markets = binance.load_markets()

#在币安上获取每个资产的订单簿

#提取所有这些订单簿将需要5分钟

对于binance_markets中的货币对:

pair_orderbook = binance.fetch_order_book(pair)

pair_orderbook [‘symbol’] =对

Aggregated_orderbook_data.append(pair_orderbook)

结果

我们发送的每个请求都将返回出价,并询问单个交易对的深度市场数据。为了提供一种方便的方式来识别订单簿,我们继续在每个订单簿对象中添加了一个键,以包含符号。这样,我们就不会丢失哪些数据属于哪个市场对.

上面的示例代码的结果将返回汇总的出价,并询问交易所中每个可用交易对的订单.

[{

‘符号’:’BTC / USD’,

“出价”:[

[8724.77,0.149594], [8724.11,2.537818], [8724.08,0.030605],

],

“问”:[

[8725.61,0.055265], [8725.7,0.028131], [8725.81,0.116984],

]

},{

‘符号’:’LTC / BTC’,

“出价”:[

[8724.77,0.149594], [8724.11,2.537818], [8724.08,0.030605],

],

“问”:[

[8725.61,0.055265], [8725.7,0.028131], [8725.81,0.116984],

]

}]

注意:从交换器访问过多数据时,请格外小心。连续请求订单簿数据可能会阻塞您的交易服务,因为这将限制您可以执行以在交易所执行其他操作的请求数量.

害羞的例子-个人对

由于CCXT的局限性,我们的团队已开发出专业级的替代产品。 Shrimpy API不会限制对CCXT等数据的访问。以下示例演示了如何使用Shrimpy Developer API访问单个资产的订单簿.

注意:为了完成这些示例,请使用以下网址注册一个免费帐户: Shrimpy加密数据 & 交易API. 登录到Shrimpy帐户后,通过选择“创建Api主密钥”选项来生成新的API密钥。这些密钥将在以下脚本中使用.

安装Shrimpy

在进入我们的Shrimpy示例之前,我们先安装Shrimpy Python库.

pip安装虾仁python

例子

安装完库后,我们可以编写第一个脚本.

进口虾

#分配您的公开和秘密的Shrimpy主密钥

#在https://developers.shrimpy.io/免费注册

public_key =’bea8edb348af226 …’

secret_key =’df84c39fb49026dcad9d99 …’

客户=虾仁.ShrimpyApiClient(public_key,secret_key)

订单簿= client.get_orderbooks(

‘bittrex’,#交换

‘XLM’,#base_symbol

‘BTC’,#quote_symbol

每边返回多少深度的100#限制(出价 & 问)

退货

Shrimpy API会返回井井有条的订单簿数据列表,其中包括基本符号,报价符号,交易所以及交易所中每个可用订单(精确标记).

[{

"baseSymbol": "XLM",

"quoteSymbol": "比特币",

"orderBooks":[{

"交换": "Bittrex",

"orderBook":{

"问":[

{

"价格": "0.00002585",

"数量": "1891.1316431" },

{

"价格": "0.00002594",

"数量": "35200" },

],

"竞标":[

{

"价格": "0.00002577",

"数量": "774.92250177" },

{

"价格": "0.00002576",

"数量": "3509.07031022" },

]

}

}]

}]

Shrimpy示例-聚合对

现在,Shrimpy在涉及跨资产对乃至交易所汇总数据时确实非常出色。以下示例将重点介绍其中一些用例.

检索Bittrex上每对的订单簿.

进口虾

#分配您的公开和秘密的Shrimpy主密钥

#在https://developers.shrimpy.io/免费注册

public_key =’bea8edb348af226 …’

secret_key =’df84c39fb49026dcad9d99 …’

客户=虾仁.ShrimpyApiClient(public_key,secret_key)

订单簿= client.get_orderbooks(

‘bittrex’#交流

您可以快速查看到最后一个示例和以前的Shrimpy示例(仅请求一个交易对的数据)之间的区别基本相同。我们要做的就是删除报价货币,基础货币和限额的输入。其他所有内容都完全相同,并在单个请求中检索了我们需要的所有数据.

这可以防止我们花费5分钟分别收集每个交易对的数据.

从上一个示例继续,我们还有更多方法可以配置从Shrimpy API收集哪些数据.

在大多数情况下,我们只需要交易所中一部分可用的订单即可。结果,我们可能想知道连接到特定资产的所有基础货币或报价货币。在这种情况下,我们可以请求连接到特定基础货币或报价货币的所有货币对的数据.

在使用BTC作为报价货币的Bittrex上访问每对货币对的订单簿.

进口虾

#分配您的公开和秘密的Shrimpy主密钥

#在https://developers.shrimpy.io/免费注册

public_key =’bea8edb348af226 …’

secret_key =’df84c39fb49026dcad9d99 …’

客户=虾仁.ShrimpyApiClient(public_key,secret_key)

订单簿= client.get_orderbooks(

‘bittrex’,#交换

无,#基本货币

‘BTC’#报价货币

注意我们如何为基础货币指定“无”。这意味着我们将检索所有报价货币为“ BTC”的交易对的订单簿。.

最后,Shrimpy不仅包含在单个交易所中。甚至可以跨交易所请求数据。这可以通过在请求中跨多个交易所请求交易对来完成.

在单个请求中跨交换提取数据的示例请求.

获取https://dev-api.shrimpy.io/v1/orderbooks?exchange=bittrex,binance,kucoin&baseSymbol = XLM&quoteSymbol = BTC&限制= 10

注意我们如何指定多个交换。该查询的结果将返回3个指定交易所中每个交易所的XLM / BTC交易对的订单簿.

退货

无论我们是为单个交易对还是跨交易所的多个对请求定单数据,我们返回的格式都是一致的.

[{

"baseSymbol": "XLM",

"quoteSymbol": "比特币",

"orderBooks":[{

"交换": "Bittrex",

"orderBook":{

"问":[

{

"价格": "0.00002585",

"数量": "1891.1316431" },

{

"价格": "0.00002594",

"数量": "35200" },

],

"竞标":[

{

"价格": "0.00002577",

"数量": "774.92250177" },

{

"价格": "0.00002576",

"数量": "3509.07031022" },

]

}

}]

},{

"baseSymbol": "XRP",

"quoteSymbol": "比特币",

"orderBooks":[{

"交换": "Bittrex",

"orderBook":{

"问":[

{

"价格": "0.00001485",

"数量": "2891.1316431" },

{

"价格": "0.00001494",

"数量": "45200" },

],

"竞标":[

{

"价格": "0.00001477",

"数量": "874.92250177" },

{

"价格": "0.00001476",

"数量": "4509.07031022" },

]

}

}]

},

]

注意:Shrimpy只需要一个请求即可在每个主要交易所即时访问订单簿数据。这减少了您需要发送到交易所的请求数量,并可以大大改善您的数据访问权限.

试试看 虾皮交易 & 数据API 今天。这是开始跨各个主要交易所收集数据的最简单方法。收集历史市场数据,访问实时网络套接字,执行高级交易策略并管理无限数量的用户.

别忘了跟随我们 推特Facebook 进行更新,并向我们令人惊叹的活跃社区提出任何问题, 电报.

虾皮队

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map