目录
导语
先决条件
测试网密钥
下载并安装Postman
创建环境
导入集合
提出请求
总结
了解并使用API接口进行数字货币交易可以为买入和卖出创造更多的可能性。只需掌握一些简单的编码知识,即可使用交易平台的后端程序自动执行交易策略。绕过网站后,可以更快地为高性能应用程序找到撮合引擎。
这一系列文章旨在介绍币安推出的REST API并演示具体的交互方法。经过学习,您可以游刃有余地查询有关市场和头寸的信息并下达各种不同类型的订单。
在本文中,我们将使用Postman与交易平台通信。别担心,我们不会让任何真实资金面临风险。
演示过程将在测试网中完成,事先可以领取没有任何实际价值的虚拟资金,它们的功能与真实货币和代币完全相同。在您熟练使用这款API后,即可通过其交易真实资金。
首先,登录现货测试网络。
如需获得访问权限,应使用GitHub帐户登录。如果是新用户,请首先创建GitHub帐户。
点击验证并通过GitHub登录。
在API密钥目录下,系统将通知您尚未注册密钥。点击生成HMAC_SHA256密钥,创建密钥对。
在下一个画面中,为密钥添加标签。您可以随意取名,然后点击生成。
此时可以看到两个密钥:API密钥和加密密钥。请将这两项重要内容记录下来,否则您将需要重新再创建一组密钥。我们建议将其存储在计算机的记事本程序中,以便日后轻松复制粘贴。
注:在真实交易中,标记密钥是管理不同密钥的关键。您的帐户可以同时拥有具备不同权限的多个密钥。如果运行多种交易机器人,使用添加了不同描述性标签的密钥,可以更轻松地管理权限或删除相应密钥,无需对所有交易机器人进行调整。
Postman是一种API协作平台。对我们来说,它是一个完美的起点——不必编写任何代码,即可通过Postman访问我们需要测试的币安请求集合。
该程序适用于Mac、Windows和Linux系统。请转至下载页面下载“.zip”文件。
下载完毕后,请在文件浏览器中找到该文件并进行安装。然后启动应用程序,即可完成操作。请注意,您可以通过创建帐户登录程序,但创建账户并非必要的步骤。如果您想要跳过该步骤,只需选择窗口底部的选项即可。
在此阶段,屏幕中应显示类似于下图的界面。
首先,我们需要创建环境。这只是在即将使用的功能中添加变量的一种方式。为此,首先需要从币安GitHub存储库中抓取一些信息。请转至此处下载“.zip”文件,
下载过程应该很快。在文件浏览器中找到该文件并解压。然后,即可返回Postman。
点击右上角的齿轮图标(如上图所示)。您将看到管理环境弹出窗口。
选择导入并转至刚刚提取的文件夹(“binance-postman-api”)。
进入文件夹并选择环境文件夹。
您将看到两个文件(分别应用于主网和测试网)。此时,我们选择binance_com_spot_testnet_api.postman_environment.json。必须输入正确的密码,因为两个密码不能混用。
操作差不多完成了。点击币安现货测试网API,画面中将显示以下变量。将先前保存的密钥粘贴于红线框出的字段中,编辑两个参数。点击更新并退出弹窗。
此画面中的“时间戳”和“签名”字段为空,具体值将在每次请求时自动创建。
只剩最后一步了——在先前设置环境的齿轮图标右侧,您将看到一个下拉菜单,当前显示无环境。点击该菜单并选择币安现货测试网API。
现在我们导入集合——其中包含各种各样的请求,在我们调用时执行繁重而复杂的任务。如需将其载入我们的环境:
点击左上角的导入。
在弹出窗口的文件选项卡下,选择上传文件。
再次找到binance-postman-api文件夹并将其打开。
此时,请在子目录中输入集合。
画面中再次出现两个文件:其中一个适用于期货API,而我们需要使用现货文件,因此请选择binance_spot_api_v1.postman_collection.json文件。
现在应显示确认画面,显示导入的集合被标识为Postman集合格式。选择“导入”。
在窗口左侧的“集合”选项卡下,可以找到一个存储100多种请求的文件夹。恭喜您,导入成功!在下一节中,我们将详细说明可以提出的各种请求。
如果在“集合”选项卡下展开文件夹,可以看到许多不同的请求。根据颜色编码,我们一般可以使用三种方法:
GET:GET方法用于检索服务器中的内容。我们通过其查询帐户余额和资产价格等信息。
POST:我们通常使用POST方法在服务器中创建信息,为下订单和请求提现等操作提供帮助。
DELETE:DELETE方法是请求服务器删除信息,可在取消订单时发挥重要作用。
现在我们提出第一项请求!我们将获得可以在交易平台交易的资产以及交易规则:
GET/exchangeInfo
这项请求不需要其他任何参数,将其复制粘贴到地址栏即可获得响应。如果是包含多项参数的请求,则可通过Postman轻松查看和修改。
如需加载这项请求,请选择市场 > 交易平台信息。随即会弹出以下窗口:
我们不需要执行其他任何操作,请继续并点击发送。然后即可得到响应:
在最上方高亮显示的部分,会显示一些重要信息:
响应状态(200表示操作成功,400-499表示遇到问题)
响应接收时间(不到1秒)
响应文本大小(约为22 KB)。
第二个框是响应的容量。为了便于阅读和学习,我们进行了仔细编排——其中包含交易平台信息、可以交易的货币对及其最低/最高金额。
信息量貌似很大,但这种格式很容易通过编程处理。在编写交互脚本时,您将可以轻松地从响应中选择特定元素的特定属性。
在此处可以查看所持资产以及对应的金额:
GET/account
在交易 > 帐户信息下可以找到该选项。点击后将显示与上一个选项相似的布局,但请注意出现的两个新变量:时间戳和签名。签名是一种安全保障措施。由于我们是在请求访问敏感信息,签名可以证明我们的确是帐户持有者本人。
时间戳告知服务器请求的发送时间。考虑到网络状态不稳定或面临停机,服务器收到请求的时间可能比预期晚得多。如果时间过长,它将拒绝该请求。通过recvWindow参数可以设定等待时间,默认值为5000毫秒。
这两个字段的值由Postman生成。点击“发送”,即可获得响应。在“余额”项下,您将看到六种资产 – BNB、BTC、BUSD、ETH、LTC和TRX。余额将分为自由使用和已锁定两部分。我们尚未锁定任何资产,您的所有资产均可自由使用。
恭喜您获得了新资产!(但实际并不存在)
我们可以通过不同方式获取资产的当前价格。最简单的可能是通过以下请求:
GET /api/v3/ticker/24hr
如您所料,通过上述请求,我们可以获取过去24小时内的资产价格信息。在市场 > 24小时内价差指标统计下可以找到该请求。该资产变量的默认交易对是BTCUSDT。
您可以直接发送该请求,查看价格信息明细。您也可以更改资产(更改为BNBBUSD、LTCUSDT等),也可以取消所选变量,返回40对的数据。
还有一种更简单的调用方法:(市场 > 资产价格指标),其可返回资产当前的交易价格:
GET /api/v3/price
与之前一样,您可以更改或完全删除资产变量,获得所有资产的最新价格。
订单簿深度(也称为市场深度或DOM)蕴藏着许多市场信息。我们可以调用以下请求来获得这些有效信息:
GET api/v3/depth
当我们以默认值(市场 > 订单簿)发送这项请求时,它将告知我们有关BTCUSDT的出价与需求。测试网服务器产生的数据量低于实际,因此下面是在实际环境中显示的屏幕截图:
在上方高亮显示的部分中,可以看到第一笔出价。我们查看的是BTCUSDT的订单簿,上面的数字是某位交易者愿意用来支付比特币的价格,下方则是其愿意购买的数量。因此,该数据表示这份订单请求以9704.65 USDT的单价买入0.999枚BTC。继续向下观察,可以看到价格由高到低排列,代表买方的出价逐渐降低。
想让自己的资产物有所值,最高报价自然最具吸引力。也是就是说,如果在市场中出售3枚BTC,其中只有0.999枚BTC能够以最高的价格出售。剩余部分需要按后续更低的报价出售,直至整个订单成交。
继续向下滚动,可以看到其他需求。它们与出价类似,不同之处在于其表示的是通过出售BTC换取USDT的订单。
现在我们发布测试订单。
POST api/v3/order/test
即使只是使用测试网中的资金,该请求实际上也不会发布订单。在实际提交前,这项请求对测试订单非常有效。在交易 > 测试新订单(TRADE)中可以找到该请求。
您可以看到更多参数。我们来浏览一下选中的参数:
symbol – 上文中已经有所介绍,表示需要交易的货币对。
side – 在此处指定BUY或SELL。对于BTCUSDT交易对,BUY表示以USDT购买BTC,SELL则是出售USDT来换取BTC。
type – 需要提交的订单类型。可能的数值(点击此处了解详情):
LIMIT
MARKET
STOP_LOSS
STOP_LOSS_LIMIT
TAKE_PROFIT
TAKE_PROFIT_LIMIT
LIMIT_MAKER
timeInForce– 此参数表示预期的订单执行方式:
GTC(取消前有效)– 这是最受欢迎的设置。GTC将确保订单在成交或取消前始终有效。
FOK(全部成交或取消)– FOK指示交易平台立即执行整张订单。如果无法执行操作,订单立即取消。
IOC(立即成交或取消)– 订单将立即全部或部分执行,否则将会取消。与FOK不同的是,如果订单可以部分执行,则不会取消。
quantity – 就是指需要购买或出售的资产数量。
price – 目标出售价格。在BTCUSDT交易对中,价格以USDT表示。
newClientOrderId – 订单标识。这不是必填字段,但可以将其设置为某个标识,以便日后查询。否则,它将由交易平台随机生成。
好的!现在就来创建测试订单。我们使用自动生成的值:一份以9000美元的单价卖出0.1枚BTC来换取USDT的限价单。点击发送。如果操作成功,我们将收到的响应是{}。
现在我们发布真实的虚拟订单。
POST /api/v3/order
转至交易 > 新订单。现在,您已经熟悉了测试订单,因此不会对此处的参数感到陌生。我们让所有数值维持原状,但由于一直处于多头状态,因此将出售价格更改为4万美元。调整价格数值,使其反映到系统中。然后点击发送。
如果交易成功,您的响应将返回有关订单的一系列详细信息。
在上一章节中,我们已收到订单发布成功的确认,那如果我们后来想要查看订单,该怎么操作呢?有几项请求可供我们使用。
GET /api/v3/openOrders
在交易 > 当前的未结订单(USER_DATA)中可以找到相关请求。BTCUSDT是默认选项。如果点击发送,您将看到所有未结的BTCUSDT订单(目前只能看到我们之前设置的订单)。您可以不指定某项资产,系统将响应所有未结订单。
GET /api/v3/allOrders
交易 > 所有订单(USER_DATA)提供有关所有订单的概述,不局限于未结订单。在此处,您必须指明一项资产。orderId、startTime、endTime和limit均为有助于优化搜索的可选参数,但我们此时不予选择,请将其保持在未选中状态。点击发送,画面中将显示与之前相同的响应。在此处也可以查看已经关闭或取消的订单。
最后,可以使用以下请求查询特定订单:
GET /api/v3/order
在交易 > 查询订单(USER_DATA)下可以获得该请求。您需要提供orderId或origClientOrderId(可以选择在订单中添加的“newClientOrderId”标签)。取消选中orderId。对于origClientOrderId,必须提供之前添加的默认标签“my_order_id_1”。将此标签填入字段并点击发送,以获取回应。
经过一段时间,我们可能认为4万美元的目标过于乐观,因而希望取消该订单。在这种情况下,需要使用:
DELETE /api/v3/order
在交易 > 取消订单下找到该请求,可通过其选择需要取消的订单。取消选中orderId和newClientOrderId并将“my_order_id_1”设置为origClientOrderId的值。
发送此请求后,订单将会退回。如果向下滚动至“状态”,即可看到订单确实已经取消。如需确认,请再次使用GET /api/v3/openOrders端点(系统会显示一份空列表)或带有origClientOrderId的GET /api/v3/order。
我们之前的订单未能成交,因为它属于限价单,只有在BTC价格达到4万美元时才能触发。对于市价单,基本等同于“按资产当前的交易价格买入/卖出”。订单将立即成交。
为此,让我们返回交易 > 新订单。我们将演示响应类型(newOrderRespType),这是一个可以调整的参数,具体取决于我们想要服务器给出什么样的响应。共有三个选项:ACK、RESULT或FULL – 您可以在此处查看每个响应的示例。我们使用ACK,可通过其直接确认已收到的订单。
下面,您可以看到我们即将提交一份市价单,按当前市场价出售BNB来换取BUSD。
请注意,该响应仅向我们提供了最简洁的信息:
您可以通过/api/v3/allOrders端点验证该订单是否成交。
最后,我们了解一下检查交易的端点:
GET /api/v3/myTrades
该请求位于交易 > 帐户交易列表(USER_DATA)之下。通过该端点,可以检查特定资产对应的每笔交易。如需查看默认资产(BTCUSDT)的所有交易,只需取消选中startTime、endTime和fromId。该响应最多可以返回500笔交易——若要查看更多内容,只需调整limit。
Postman中可以详细显示原始HTTP请求和响应。
通过此菜单可打开Postman控制台,打印出每项请求的详细信息。
本指南旨在简要介绍如何在不编写代码的情况下,使用币安API。如果已经详细阅读本文,现在应该对如何请求和提交信息有所了解。
本系列的后续文章将介绍一些基础编码概念。掌握了这些概念,我们便可以自动买卖数字货币和其他数字资产。
是否还有其他疑问?请访问我们不断发展的币安开发者社区论坛,或查看相关文档。