介绍
了解和使用加密货币交易 API 可以为建仓和平仓打开一个充满可能性的世界。通过简单的编程知识,您将能够连接到交易所的后端以自动化您的交易策略。通过绕过该网站,您将可以更快地访问高性能应用程序的匹配引擎。
本系列的目的是向您介绍币安 REST API 并教您如何与其交互。最后,您应该有信心查询有关市场和您的头寸的信息,以及下一系列不同类型的订单。
在本文中,我们将使用Postman与交易所进行通信。别担心:我们不会拿任何真实资金冒险。
先决条件
测试网密钥
出于我们的目的,我们将使用测试网。这将为我们提供没有实际价值的资金,因此我们可以尝试一下。它们的工作方式就像真实的硬币和代币一样,因此一旦您熟悉 API,您就可以开始使用它来交易真实的资金。
首先,请前往现场测试网络。
要访问它,您需要使用 GitHub 帐户登录。如果您还没有创建一个,请创建一个。
单击“身份验证”并通过 GitHub 登录。
在 API 密钥下,您将被告知您尚未注册密钥。单击“生成 HMAC_SHA256 密钥”以创建一对。
在下一个屏幕上,标记按键。给它们任何你想要的名称,然后按“生成”。
您将看到两个密钥:API 密钥和秘密密钥。两者都记录下来很重要。否则,您将必须重新开始密钥创建过程。我们建议将它们存储在设备上的“笔记”应用程序中,以便您以后可以轻松复制粘贴它们。
注意:在使用实际交换时标记您的密钥是值得的,这样您就可以管理不同的密钥。您的帐户可能有多个具有不同权限的密钥。如果您正在运行多个交易机器人,则使用带有描述性标签的单独密钥可以更轻松地管理权限或删除单个密钥,而无需更改所有机器人。
下载并安装邮差
Postman 是一个 API 协作平台。这对我们来说是一个完美的起点——我们将可以访问币安上的请求集合,而无需编写任何代码。
该程序适用于 Mac、Windows 和 Linux。转至下载页面并下载 .zip 文件。
下载完成后,在文件资源管理器中找到它并安装。打开应用程序,您就可以开始了!请注意,您可以创建一个帐户来登录,但这不是必需的。如果您想跳过该步骤,请选择窗口底部允许您执行此操作的选项。
创造环境
此时,您应该有一个如下所示的界面。
首先要做的就是创建我们的环境。这只是一种将变量添加到我们将要处理的请求集中的方法。为此,我们首先需要从 Binance 的 GitHub 存储库获取一些数据。前往此处下载 .zip 文件。
下载应该不会花很长时间。使用文件资源管理器找到它并解压缩。接下来,返回邮差。
单击右上角的齿轮图标(如上所示)。然后,您将看到“管理环境”弹出窗口。
选择导入,然后导航到您刚刚提取的文件夹 (binance-postman-api)。
访问它,然后进入“环境”文件夹。
您将找到两个文件(一个用于主网,一个用于测试网)。我们感兴趣的是 binance_com_spot_testnet_api.postman_environment.json。确保您选择了正确的一把,因为我们的钥匙不能与另一把一起使用。
我们快到了。点击Binance Spot Testnet API,您可以看到下面的变量。编辑红色下划线的两个参数,将您之前保存的密钥粘贴到其中。单击更新并退出弹出窗口。
在此屏幕上,将“时间戳”和“签名”字段留空。这两个值都会随每个请求自动生成。
还有一件事要做。在我们之前单击来配置环境的齿轮图标的右侧,您会发现一个下拉菜单,当前显示“无环境”。单击它并选择 Binance Spot Testnet API。
导入集合
现在我们将准备导入集合 - 这是各种各样的“请求”,当我们拨打电话时,它们会为我们完成繁重的工作。在我们的环境中加载它的步骤是:
单击左上角的导入。
在弹出窗口中的“文件”选项卡下,选择“上传文件”。
我们再次查找 binance-postman-api 文件夹。找到它并打开它。
这次,在子目录中,转到“集合”。
同样,您会在那里找到两个文件。一是使用 future API。但我们使用的是现货市场,因此您必须选择 binance_spot_api_v1.postman_collection.json 文件。
您现在应该会看到一个确认屏幕,表明导入采用的是 Postman Collection 格式。
在窗口左侧的“集合”选项卡下,您会注意到有一个包含超过 100 个请求的文件夹。恭喜!我们现在准备开始了。在下一节中,我们将了解可以提出的“请求”类型。
提出请求
如果展开“集合”选项卡下的文件夹,您会看到我们可以提出很多不同的“请求”。通过颜色代码,您会看到我们可以使用三种类型的方法:
GET:GET 方法用于从服务器提取元素。我们将用它来查找有关您的账户余额、资产价格等信息。
POST:一般我们使用POST方法在服务器上创建信息。这对于下订单、请求提款等操作是必要的。
DELETE:DELETE方法是向服务器发出删除信息的“请求”。适合取消订单。
查找股票代码和交易规则列表
是时候提出我们的第一个要求了!我们将继续获取可以在交易所进行交易的报价秘钥以及交易规则:
获取/交易所信息
此操作不需要其他参数 - 您只需将上述元素复制并粘贴到地址栏中,您就会得到响应。但对于包含各种参数的请求,Postman 可以轻松查看和修改它们。
要上传此请求,请选择市场 > 交易所信息。然后会出现如下所示的选项卡:
我们不需要在这里做任何其他事情,所以继续点击发送。然后您将收到回复:
在上面带下划线的部分中,您将看到一些重要信息:
响应的状态(200 表示我们已成功,400-499 表示我们遇到了一些问题)。
收到响应之前经过的时间(不到一秒)
响应的大小 (~22KB)。
大部分答案可以在第二个表中找到。格式已缩进(打印美观),以便于阅读。这包含有关交易所本身的信息,以及您可以交易的货币对及其最小/最大金额。
它可能看起来有很多信息,但这种格式使得以编程方式使用变得非常容易。通过编写与之交互的脚本,您可以轻松选择响应的特定元素的特定属性。
检查账户余额
让我们检查一下我们拥有哪些资产以及每项资产的数量:
获取 /账户
该项目可以在交易 > 账户信息下找到。单击它,您将发现一个与上一个类似的图表。但是,您还会注意到,我们有两个新变量:时间戳和签名。签名是一种安全措施。由于我们现在请求敏感信息,这将证明我们是该帐户的所有者。
时间戳通知服务器何时发出请求。由于网络可能不稳定或停机,服务器可能会比预期晚得多收到我们的请求。如果时间过长,请求将被拒绝。您可以使用recvWindow参数指定要等待的时间,默认为5000毫秒。
Postman 负责为我们生成这两个字段。点击“发送”,您将收到回复。在“余额”下,您应该能够看到六种资产——BNB、BTC、BUSD、ETH、LTC 和 TRX。余额将在免费和锁定之间分配。我们尚未锁定任何内容,因此您的资产应该全部都是免费的。
恭喜您获得新的(不存在的)财富!
如何获取股票代码的当前价格
我们可以通过不同的方式继续获取资产的当前价格。也许最简单的方法是通过以下请求:
获取 /api/v3/ticker/24hr
正如您可以想象的那样,这将为我们提供过去二十四小时的资产价格信息。在市场 > 24小时报价价格变动统计中查找。我们作为符号变量看到的默认货币对是 BTCUSDT。
您可以立即提交以查看定价信息的详细信息。您还可以更改符号(更改为 BNBUSD、LTCUSDT 等),或者取消选中该变量以返回 40 个货币对的数据。
我们还有一个更简单的调用(市场 > 符号价格行情),它返回资产交易的当前价格:
获取 /api/v3/价格
与前一个一样,您可以更改交易品种变量或将其完全删除,并获取所有交易品种的最新价格。
检查当前订单簿深度
订单簿深度(也称为市场深度或 DOM)可以告诉我们很多有关市场的信息。我们将进行一个调用,该调用将返回有用的信息:
获取 api/v3/深度
当我们使用默认值(市场 > 订单簿)提交此信息时,我们会收到一条回复,告诉我们有关出价和请求 BTCUSDT 的信息。测试网服务器不会产生与真实数据一样多的数据,因此下面是您期望在真实环境中看到的屏幕截图:
在上面突出显示的部分中,我们可以看到第一个报价。由于我们正在查看 BTCUSDT 账簿,因此顶部的数字是某人愿意为您的 BTC 支付的价格。以下是他们愿意购买的金额。因此,这意味着该订单要求 0.999 BTC,每 BTC 的价格为 9704.65 USDT。如果我们继续下调,我们会看到报价下降,代表买家支付的费用会减少。
如果您正在寻找好的投资,更高的报价自然是最有吸引力的。也就是说,如果您尝试在市场上出售,例如 3 BTC,您只能以最优惠的价格出售 0.999 BTC。您必须接受后续(更便宜)的报价,直到完成整个订单。
继续滚动,您会看到诉讼。它们在功能上与报价相似,只不过它们代表以 USDT 出售 BTC 的订单。
下试订单
现在我们要发布试订单。
POST api/v3/订单/测试
虽然我们只使用测试网资金,但此请求实际上不会下订单。它对于发送订单之前测试订单很有用。在交易 > 测试新订单 (TRADE) 下找到它。
你可以看到我们涉及到更多的参数。让我们回顾一下标记:
符号:我们以前遇到过这个。这是您想要交易的货币对。
side - 在这里,您将规定是否要买入或卖出。对于 BTCUSDT 货币对,BUY 表示您想用 USDT 购买 BTC,而 SELL 表示您将出售 BTC 换取 USDT。
类型:您要发送的订单类型。可能的值(详细信息请参见此处):
限制
市场
止损
止损限制
从中受益
获利限额
限制制定者
timeInForce:此参数表示您希望命令如何执行:
GTC(取消前有效):也许是最受欢迎的设置,GTC 将确保您的订单在被成交或取消之前一直有效。
FOK(Fill or Kill):FOK 告诉交易所一次性执行订单。如果交易所无法做到这一点,订单将立即取消。
IOC(立即或取消):全部或部分订单必须立即执行,否则将被取消。与 FOK 不同的是,如果订单可以部分成交,则订单不会被取消。
数量:简单来说,就是您要购买或出售的资产的数量。
价格:您想要出售的价格。对于 BTCUSDT 货币对,以 USDT 表示。
newClientOrderId:订单的标识符。这不是必填字段,但您可以将其设置为标识符,以便以后更容易引用。否则,交易所会随机生成它。
出色地!现在让我们创建一个试订单。我们来看看自动生成的值:限价单以 9000 美元的价格每 USDT 出售 0.1 BTC。按发送。如果成功,我们将简单地得到 {} 作为响应。
下真实订单
是时候下真正的假订单了。
POST /api/v3/订单
前往交易 > 新订单。您已经熟悉测试订单,因此这里的参数不会让您感到惊讶。让我们保留所有价值不变,但由于我们是永久牛市,我们将把我们的销售价格更改为 40,000 美元。修改价格值以反映这一点。然后按发送。
如果订单成功,您的响应将返回一系列有关订单的详细信息。
检查未结订单的状态
我们收到了上一部分已下订单的确认信息,但如果我们想稍后再次检查怎么办?我们有一些请求可供处理。
获取 /api/v3/openOrders
您可以在交易 > 当前未结订单 (USER_DATA) 中找到它。默认选择 BTCUSDT。如果您按“提交”,您将获得所有未平仓的 BTCUSDT 订单(到目前为止,您应该只能看到我们上面设置的订单)。您可以选择不指定代码,这将返回所有未结订单。
获取 /api/v3/allOrders
交易 > 所有订单 (USER_DATA) 为您提供所有订单的概览,而不仅仅是未结订单。在这里,您需要提供一个符号。 orderId、startTime、endTime 和 limit 是可选参数,可帮助您优化搜索。我们会将它们留在这里,以便您可以取消选中它们。按“发送”,您将看到与之前相同的响应。如果您已关闭或取消订单,您也会在此处看到它们。
最后,具体订单我们可以咨询:
获取 /api/v3/订单
在交易 > 订单查询 (USER_DATA) 中获取。您需要提供 orderId 或 origClientOrderId(可以添加到订单的可选“newClientOrderId”标签)。取消选中 orderId。对于 origClientOrderId,我们将提供上面的默认标签:“my_order_id_1”。填写该字段并按“提交”以获得回复。
取消订单
一段时间后,我们可能会认为 40,000 美元的目标过于乐观,因此我们想取消它。在这种情况下,我们将使用:
删除/api/v3/订单
在“交易”>“取消订单”中,有一个请求允许我们选择要取消的订单。取消选中 orderId 和 newClientOrderId 并将“my_order_id_1”传递为 origClientOrderId 的值。
当您提交此请求时,订单将被退回。如果你向下滚动到“状态”,你会看到它确实被取消了。要确认这一点,请再次使用 GET / api / v3 / openOrders 端点(这会为您提供一个空列表)或使用 origClientOrderId 获取 / api / v3 / order。
下订单立即成交
我们之前的订单没有成交,因为它是限价订单,只有当 BTC 价格达到 40,000 美元时才会触发。对于市价订单,我们基本上是说“以资产当前交易的任何价格买入/卖出”。这将立即充满。
为此,让我们返回“交易”>“新订单”。我们将演示响应类型(newOrderRespType),这是一个我们可以根据我们想要从服务器获取的响应来修改的参数。这里有三个选项:ACK、RESULT 或 FULL;您可以在此处查看每个答案的示例。我们将选择 ACK,这将给我们一个简单的确认,即订单已收到。
您可以在下面看到我们即将提交一个市价订单,以当前市场价格出售 BNB 换取 BUSD。
请记住,答案只提供给我们最少的信息:
您可以使用 /api/v3/allOrders 端点验证订单是否已完成。
检查您的交易
最后,让我们看看验证您交易的端点:
获取 /api/v3/myTrades
它位于交易 > 账户交易列表 (USER_DATA) 中。它允许您检查每笔交易的特定交易品种。如果您想查看默认交易品种 (BTCUSDT) 的所有交易,只需取消选中 startTime、endTime 和 fromId 即可。响应将返回最多 500 笔交易;如果您想查看更多,只需调整限制即可。
使用 Postman 进行调试
在 Postman 中,可以进一步揭示原始 HTTP 请求和响应。
此菜单将打开 Postman 控制台,该控制台打印每个请求的详细信息。
结论
本指南的目的是向您介绍 Binance API,而无需编写任何代码。如果您一直在关注,您现在应该了解我们如何请求和发送信息。
在本系列的下一部分中,我们将介绍一些基本的编码概念,使我们能够自动化加密货币和其他数字资产的买卖。
在此期间有疑问吗?请访问我们不断发展的币安开发者社区论坛或查看文档。