主要要点

  • API 是允许应用程式共享资讯的程式码片段,可用于增强加密货币交易策略。

  • Postman 是一个 API 平台,可以简化 API 的建置和使用流程。

  • 了解有关在 Binance API 生态系统中使用 Postman 进行现货交易的更多资讯。

Binance API Series Pt. I – Spot Trading with Postman

介绍

了解并使用用于加密货币交易的 API 可以为进入和退出头寸打开一个充满可能性的世界。凭借一些简单的编码知识,您可以插入交易所的后端以自动化您的交易策略。透过绕过网站,您可以更快地存取高效能应用程式的匹配引擎。

在本文中,我们将使用 Postman(一个简化的 API 平台)与交易所进行通讯。别担心—我们不会让任何真实资金面临风险。

先决条件

测试网密钥

我们将使用测试网来实现当前的目的。这种模拟功能将为我们提供一些没有现实价值的资金可供使用。它们的功能与真实硬币和代币相同,因此一旦您熟悉 API,您就可以开始使用它来交易真实资金。

  1. 首先前往现场测试网路。

  2. 若要取得存取权限,请使用 GitHub 帐户登入。如果您还没有建立一个,则需要建立一个。

  3. 按一下“身份验证”,然后透过 GitHub 登入。

  4. 在 API 金钥下,您将被告知您没有注册金钥。按一下「产生 HMAC_SHA256 金钥」以建立一对。

  5. 在下一个画面上,为按键新增标签。随意命名它们,然后点击“生成”。

  6. 您会看到两个金钥:API 金钥和秘密金钥。现在记录这些很重要。如果不这样做,您将需要重新开始金钥建立过程。我们建议将它们储存在电脑的笔记应用程式中,以便以后轻松复制贴上。

注意:当使用真正的交换来管理不同的密钥时,标记你的密钥是值得的。您的帐户可以拥有多个具有不同权限的金钥。如果您正在执行多个交易机器人,使用带有描述性标签的单独金钥可以更轻松地管理权限或删除单个金钥,而无需更改所有机器人。

下载并安装 Postman

Postman 是一个 API 协作平台。这对我们来说是一个完美的起点——我们将可以访问币安请求的集合,我们将对其进行测试,而无需编写任何程式码。

该程式适用于 Mac、Windows 和 Linux。前往下载页面并下载 .zip 档案。

完成后,在档案总管中找到它并安装它。启动应用程序,我们就可以开始了!您可以建立一个帐户来登录,但这不是必需的。如果您想跳过此步骤,只需选择视窗底部的选项即可。

创造环境

在此阶段,您应该有一个类似于以下内容的介面。

首先,我们要创造我们的环境。此步骤只是向我们将要处理的请求添加变数的一种方法。我们首先需要从 Binance GitHub 储存库中取得一些资讯。前往此处下载 .zip 档案。

下载应该不会花很长时间。您可以在档案总管中找到它并解压缩。然后,我们可以回到 Postman。

点击右上角的齿轮图示(如上图所示)。您将看到“管理环境”弹出视窗。

  1. 选择“导入”,然后导航到提取的资料夹 (binance-postman-api)。

  2. 输入它,然后进入环境资料夹。

  3. 现在您将看到两个档案(一个用于主网,一个用于测试网)。我们要找的是 binance_com_spot_testnet_api.postman_environment.json。确保您拥有正确的钥匙,因为我们的钥匙无法与另一把钥匙一起使用。

差不多了。按一下 Binance Spot Testnet API 查看以下变数。透过贴上您先前储存的金钥来编辑红色框出的两个参数。点击更新并退出弹出视窗。

在此画面上,将时间戳记和签名栏位留空。这两个值将根据每个请求自动建立。

还有最后一件事要做。在我们之前点击以设定环境的齿轮图示的右侧,您将看到一个下拉式选单,目前显示「无环境」。点击它并选择 Binance Spot Testnet API。

导入集合

现在我们将导入该集合 - 这是各种各样的请求,在拨打电话时为我们带来繁重的工作。要将其加载到我们的环境中:

  1. 点选左上角的导入。

  2. 在弹出视窗中的「档案」标签下,选择「上传档案」。

  3. 我们再次寻找 binance-postman-api 资料夹。找到并打开它。

  4. 这次,在子目录中输入集合。

  5. 这里又出现了两个文件。一种是用于使用 future API。但我们正在使用 Spot ,因此您必须选择 Binance Spot API.postman_collection.json 档案。

  6. 现在您应该会看到一个确认画面,将汇入标识为 Postman Collection 格式。选择导入。

在视窗左侧的「集合」标签下,您现在会注意到我们有一个包含超过 100 个请求的资料夹。恭喜!我们可以出发了。在下一节中,我们将了解可以提出的请求类型。

发出请求

如果您展开「集合」标签下的资料夹,您会发现我们可以提出许多不同的请求。从颜色编码中,您可能会注意到我们可以使用三种类型的方法:

  • GET:GET 方法用于从伺服器检索内容。我们将用它来查找有关您的帐户余额、资产价格等的资讯。

  • POST:我们通常会使用 POST 方法在伺服器上建立资讯。下订单、请求提款等操作都需要此方法。

  • DELETE:DELETE方法请求伺服器删除资讯。取消订单时它会派上用场。

寻找交易品种清单和交易规则

是时候提出我们的第一个请求了!我们将获得可以在交易所交易的符号和交易规则:

取得 /api/v3/exchangeInfo

这个不需要任何额外的参数——你可以将其复制并贴上到网址列中,然后你就会得到回应。但是 Postman 可以轻松地查看和修改包含多个参数的请求。

若要载入此请求,请选择市场 > 交易所资讯。将弹出如下选项卡:

我们不需要在这里做任何其他事情,所以继续点击发送。然后你会得到回复:

在最上方突出显示的部分中,您将看到一些重要资讯:

  • 回应的状态(200 表示我们已成功,400-499 表示我们遇到了问题)。

  • 接收回应所花费的时间(不到一秒)。

  • 响应的大小 (~22KB)。

第二个框中是大部分响应。此方块包含有关交易所、您可以交易的货币对及其最小/最大金额的资讯。

它看起来有很多讯息,但这种格式使得以程式设计方式使用变得很容易。当编写脚本与之互动时,您将能够轻松地从回应中挑选出特定元素的特定属性。

检查帐户余额

让我们检查一下我们拥有哪些资产以及每种资产的数量:

取得/api/v3/帐户

您可以在「交易」>「帐户资讯」下找到此资讯。单击它可以看到与前一个类似的布局。不过,您也会注意到,我们有两个新变数:时间戳记和签名。签名是一种安全措施。因为我们现在要求提供敏感信息,这将证明我们是帐户持有人。

时间戳告诉伺服器请求何时发送。由于网路可能不可靠或面临停机,伺服器可能会比预期晚得多收到我们的请求。如果超过了太多时间,它将拒绝该请求。您可以使用recvWindow参数指定要等待的时间,预设为5000毫秒。

Postman 为我们处理这两个栏位的产生。点击发送,您将收到回复。在余额下,您应该会看到六种资产——BNB、BTC、BUSD、ETH、LTC 和 TRX。余额将分为免费资产和锁定资产。我们还没有锁定任何资产,所以你的资产应该都是免费的。

取得交易品种的当前价格

我们可以透过不同的方式取得资产的当前价格。也许最简单的是以下请求:

取得 /api/v3/ticker/24 小时

正如您可能猜到的,这将为我们提供过去二十四小时内资产价格的资讯。您可以在市场 > 24 小时股票价格变化统计中找到它。我们看到的作为符号变数的预设货币对是 BTC/USDT。

您可以立即发送此资讯以查看价格资讯的详细资讯。您也可以变更符号(变更为 BNB/USDT、LTC/USDT 等)或取消选取该变数以传回 40 个货币对的资料。

我们还有一个更简单的呼叫(市场 > 符号价格行情),它会传回资产交易的当前价格:

取得/api/v3/价格

与之前一样,您可以更改交易品种变数或完全删除它并获得所有交易品种的最新价格。

查看目前订单簿深度

订单簿深度(也称为市场深度 (DOM))可以告诉我们很多关于市场的资讯。我们将进行一个调用,该调用将返回一些有用的信息:

取得 /api/v3/深度

当我们使用预设值(市场 > 订单簿)发送此资讯时,我们会收到一条回应,告诉我们出价并询问 BTC/USDT。测试网伺服器不会产生与实际一样多的数据,因此以下是您期望在真实环境中看到的萤幕截图:

在上面突出显示的部分中,我们可以看到第一个出价。由于我们正在查看 BTC/USDT 的书籍,因此上面的数字是某人愿意为您的 BTC 支付的价格。以下是他们愿意购买的数量。因此,这表示该订单要求 0.999 BTC,价格为每 BTC 9704.65 USDT。如果我们继续向下滚动,我们会看到报价下降——代表买家支付的费用会减少。

如果您想物有所值,那么顶级报价自然是最具吸引力的。不过,例如,如果您尝试出售 3 BTC,则只能以最优惠的价格出售 0.999 BTC。您需要接受后续(更便宜的)报价,直到您的订单被填满。

继续滚动,您会看到询问。它们在功能上与出价类似,只不过它们代表以 USDT 出售 BTC 的订单。

下测试订单

现在我们要发布测试订单。

POST /api/v3/order/test

尽管我们只是使用测试网资金,但此请求实际上不会下订单。它对于在实际提交订单之前测试订单很有帮助。在交易 > 测试新订单 (TRADE) 下找到它。

您可以看到我们涉及更多参数。让我们看一下已检查的内容:

  • 符号——我们之前已经遇到过这个符号。这是您想要交易的货币对。

  • side – 在这里,您将规定是要买入还是卖出。对于 BTC/USDT 货币对,BUY 表示您想用 USDT 购买 BTC,而 sell 则表示您要出售 BTC 换取 USDT。

  • 类型 – 您要提交的订单类型。可能的值(详细资讯请参阅此处):

    • 限制

    • 市场

    • 停损

    • STOP_LOSS_LIMIT

    • 从中受益

    • TAKE_PROFIT_LIMIT

    • LIMIT_MAKER

  • timeInForce – 此参数表示您希望订单如何执行:

    • GTC(取消前有效)—也许是最受欢迎的设置,GTC 将确保您的订单在执行或取消之前一直有效。

    • FOK(成交或取消)-FOK 指示交易所立即执行全部订单。如果交易所不能这样做,订单将立即取消。

    • IOC(立即或取消)-全部或部分订单必须立即执行,否则将被取消。与 FOK 不同的是,如果订单可以部分成交,则不会被取消。

  • 数量 – 您想要购买或出售的资产数量。

  • 价格 – 您想要出售的价格。对于 BTC/USDT 货币对,以 USDT 表示。

  • newClientOrderId – 订单的识别码。这不是必填字段,但您可以将其设定为标识符,以便以后查询。否则,它是由交易所随机产生的。

好的!现在让我们建立一个测试订单。我们将继续处理自动产生的价值:以 9000 美元的价格出售 0.1 BTC 换取 USDT 的限价订单。点击发送。如果成功,我们将收到 {} 作为回应。

下真实订单

是时候下真正的订单了。

POST /api/v3/订单

导览至交易 > 新订单。您现在已经熟悉了测试订单,因此这里的参数并不奇怪。让我们保留所有值不变,但将销售价格更改为 40,000 美元。调整价格值以反映这一点。然后,点击发送。

如果成功,您的回应将传回一系列有关订单的详细资讯。

检查未结订单的状态

我们已确认订单已在上一部分下达,但如果我们想稍后重新检查怎么办?我们有一些请求可供处理。

取得 /api/v3/openOrders

您可以在交易 > 目前未结订单 (USER_DATA) 中找到它。预设选择BTC/USDT。如果您点击“发送”,您将收到所有未平仓的 BTC/USDT 订单(到目前为止,您应该只能看到我们之前设定的订单)。您也可以选择不指定代码,这将传回所有未结订单。

取得 /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) 下。它允许您检查每笔交易的特定交易品种。如果您想要查看预设交易品种 (BTC/USDT) 的所有交易,只需取消选取 startTime、endTime 和 fromId 即可。回应将返回最多 500 笔交易 – 如果您想查看更多,只需调整限制即可。

使用邮差调试

在 Postman 中,可以进一步揭示原始 HTTP 请求和回应。

此功能表将开启 Postman 控制台,该控制台会列印每个请求的详细资讯。

开始使用币安 API

本指南的目的是向您介绍 Binance API,而无需编写任何程式码。如果您已经跟进,您现在应该了解我们如何要求和提交资讯。

在此期间有疑问吗?前往我们不断发展的币安开发者社群论坛或查看文件。

进一步阅读

  • 术语表:应用程式介面 (API)

  • 什么是 API 金钥以及如何安全使用它?

  • 如何安全地使用 API 金钥:币安的 5 个提示