幣安 API 系列 第一部分 – 用 Postman 進行現貨交易
HomeArticles

幣安 API 系列 第一部分 – 用 Postman 進行現貨交易

進階
5d ago
13m

目錄


前言

了解並使用 API 接口進行加密貨幣交易可以為進入和退出部位打開無限可能。僅需要一些簡單的編碼知識,您就可以使用交易後端程序來自動執行交易策略。在不使用網站的情況下,您可以更快找到與之匹配的高性能應用程序。

本系列的目的是向您介紹幣安的寧靜式 API 並教您如何交互。最後您會可以自己查詢市場和部位的信息以及下達各種不同的訂單類型。

在本文中,我們將使用 Postman 來與交易所進行通信。別擔心 – 我們不會讓任何實際資金置於風險之中。


先決條件

測試網密鑰

我們使用測試網:我們獲得一些沒有實際價值的資金,它們的功能與真實硬幣和代幣完全相同,直到您熟悉這個 API,就可以開始使用它來交易真實資金。


  1. 首先到現貨測試網路
  2. 要獲得訪問權限,需要使用GitHub的帳戶登錄。如果您沒有,請創建一個。
  3. 點擊驗證並通過 GitHub 登錄。
  4. 在 API 目錄下,系統會通知您還沒有註冊密鑰,單擊生成 HMAC_SHA256 密鑰以創建一個密碼對。
  5. 在下一個畫面上,將密鑰鍵添加標籤。你可以隨便幫他們取名,然後按生成。 
  6. 您會看到兩個密鑰:API 密鑰秘密密鑰,請記錄下來,這些很重要,否則需要再創建另一組密鑰。我們建議將它們存儲在電腦的記事本程序中,以便日後輕鬆複製貼上。

注意: 在真實交易情況下,標記密鑰對管理不同密鑰十分重要。您的帳戶可以同時具有多種不同權限的密鑰,如果您運行多種交易機器人,使用帶有描述性標籤的單獨密鑰可以更輕鬆地管理權限或刪除,而無需更改所有的交易機器人。


下載並安裝 Postman

Postman 是一個 API 協作平台,對我們來說是一個完美的起點 – 我們可以訪問將測試的幣安請求集合,而無需編寫任何代碼。

該程序可用於 Mac、Windows 和 Linux 。請到下載頁面下載 .zip 文件。

完成後,在文件瀏覽器中找到並安裝、啟動該應用程序,這樣就完成了。請注意,您可以創建一個帳戶來登錄,但也可以跳過該步驟,選擇窗口底部的選項即可。


架構環境

在此階段,您應該看到類似於以下的界面。



我們要首先架構環境,這僅是在我們將要使用的功能中添加變量的一種方式。我們首先需要從幣安 GitHub 的存儲庫中獲取一些信息:請到此處下載 .zip 文件。



下載應該不會花費太長的時間。在文件瀏覽器中找到並解壓縮,之後會到 Postman。



單擊右上角的齒輪圖標(如上圖所示),您會看到“管理環境” 彈出頁面。 

  1. 選擇導入,然後導向您剛剛提取的文件夾(binance-postman-api)。 
  2. 進入文件夾並選擇環境文件夾。
  3. 現在您會看到兩個文件(一個用於主網,一個用於測試網)。我們在這裡選擇binance_com_spot_testnet_api.postman_environment.json。確認您擁有正確的密碼,因為密碼不能與另一個一起使用。



我們快完成了。點擊 幣安現貨交易測試網 API ,您將看到以下變量。在紅色框中貼上先前保存的兩個參數,點擊更新並退出當前視窗。



在此頁面上,“時間戳記”和“簽名”部分留空。這兩個值會在每次請求時自動創建。

還有最後一項:在之前設置環境的齒輪圖標右側,您會看到一個下拉選單顯示為無環境。點擊它並選擇幣安現貨交易測試網 API


導入巨集

現在我們要導入巨集 – 就是我們在交易中會需要的各種各樣的請求。以下是如何將其加載到我們的環境中:

  1. 點擊左上角的導入
  2. 在彈出視窗的文件標籤下,選擇上傳文件
  3. 我們再次尋找 binance-postman-api 的文件夾並打開它。
  4. 這次請在子目錄中輸入集合。
  5. 這次仍有兩個文件:一種是使用期貨 API,但是我們現在使用的是現貨,因此請選擇binance_spot_api_v1.postman_collection.json 文件。
  6. 現在您應該會看到一個確認畫面,將導入的集合標示為 Postman 巨集格式。選擇導入。

在視窗左側的“集合”標籤下,您會發現我們有一個包含 100 多種請求的文件夾。恭喜你,已經導入成功了。在下一節中,我們將詳細說明可以提出的各種請求。


下達指令

如果您在“集合”標籤下展開文件夾,會看到許多不同的請求。從顏色編碼中,您可能會注意到我們可以使用三種類型:


  • GETGET用於搜索服務器的內容,可以使用它來查找帳戶餘額、資產價格等信息。
  • POST:我們通常使用POST在服務器上創建信息、下訂單、請求提款等操作。
  • DELETEDELETE是指在服務器刪除信息,會用來取消訂單。


查找交易品種列表和交易規則

現在我們來進行第一項指令!我們將得到可以在交易所的交易符號和交易規則:

GET /exchangeInfo


這項指令不需要任何其他參數,您可以將其複制黏貼到地址欄中得到響應。如果是包含多個參數的請求,Postman 可以輕鬆查看和修改它們。

要加載此請求,請選擇市場 > 交易信息。將彈出以下視窗:



在這裡不需要執行任何其他操作,請繼續並點擊發送。您將得到響應:



在最上方加強顯示的部分中,您會看到一些重要信息:

  • 響應的狀態( 200 表示我們已成功,400-499 表示我們遇到問題)

  • 接收響應所花費的時間(不到一秒鐘)

  • 響應的大小(〜22KB)。


在第二個框中是響應的主體,為了更容易查看已經仔細編排過了:其中包含交易所的信息、您可以交易的貨幣對及其最小/最大金額。

信息量看起來很多,但這種格式使您可以很容易地將之編程處理。在編寫交互時腳本時,您可以從響應中選擇特定元素的屬性。


查看帳戶餘額

讓我們查看自己擁有什麼資產,以及各有多少:

GET /account

可以在交易 > 帳戶信息下找到該選項。單擊它將看到與上一個相似的佈局,但有兩個新變量:時間戳簽名。簽名是一種安全措施,因為我們現在正在訪問敏感信息,必須證明我們是帳戶持有人。 

時間戳告訴服務器請求是何時發送的。由於網絡可能不穩定或停機,因此當服務器收到請求的時間可能比預期的要晚得多。如果時間過長,它將拒絕該請求。您可以使用 recvWindow參數指定要等待多長時間,該參數默認為 5000 毫秒。

Postman 幫我們處理這兩個部分:點擊發送您便可以得到答复。您可以看到六種資產餘額 – BNB、BTC、BUSD、ETH、LTC 和 TRX。餘額將分為可使用鎖定兩部分。我們尚未鎖定任何資產,因此您的應全部顯示為可使用。

恭喜您獲得了新的資產!(但他們其實不存在的)


如何獲得符號的當前價格

我們可以通過不同的方式獲取資產的當前價格。最簡單的是以下請求:

GET /api/v3/ticker/24hr

您可能已經猜到,以上指令這為我們提供過去二十四小時的資產價格信息。在市場 > 24 小時行情價格變動統計中可以找到,使用的默認符號變量為 BTCUSDT。 

您可以發送此信息以立即查看價格信息明細。您也可以更改符號(更改為BNBBUSDLTCUSDT等),也可以取消選取的變量,返回 40對數據。

我們還有一個更簡單的調用(市場 > 符號價格代碼),它會返回資產當前的交易價格:

GET /api/v3/price

與以前一樣,您可以更改或刪除符號變量,並獲得所有符號的最新價格。


查看當前委託簿的深度

委託簿深度(也稱為市場深度或 DOM )可以告訴我們很多市場信息。我們將使用以下指令來獲得一些有用的信息:

GET api/v3/depth

當我們使用默認值(市場 > 委託簿)發送此指令時,它會告知我們有關 BTCUSDT 的出價與需求。 測試網服務器不會產生與實際數據一樣多的數據,所以下面是您在實際環境下會看到的屏幕截圖:



在上面加強顯示的部分中,我們可以看到第一個出價。由於我們正在看 BTCUSDT 的委託簿,上面的數字是某人願意為您 BTC 支付的價格,下方則是是他們願意購買的。表示此訂單要求以每 BTC 9704.65 USDT 的價格買下 0.999 BTC。如果我們繼續向下看,我們會看到價格逐漸下降 – 代表願意支付較少費用的買方。

如果您想要物有所值,最高報價自然是最有吸引力的。如果您要推銷 3 BTC,那麼您只能以最佳價格出售 0.999 BTC,剩下的需要接受後續更便宜的報價,直到整個訂單被執行。



繼續向下滾動,您將看到其他需求。它們與出價類似,不同之處在於它們要 出售 BTC 換成 USDT。 


下測試訂單

現在我們要來發布測試訂單。

POST api/v3/order/test

即使我們只是使用測試網上的資金,該請求也不會實際下單。測試網在實際提交訂單之前對測試訂單很有用。在交易 > 測試新訂單(TRADE) 中可以找到這個指令。



您可以看到涉及了更多參數。讓我們仔細檢查一下:


  • symbol – 我們以前有說過,這表示您要交易的貨幣對。
  • side – 這裡指定要購買還是出售。對於 BTCUSDT,買入表示您想以 USDT 的價格購買 BTC,而賣出則會以 USDT 的價格出售 BTC。
  • type – 要提交的訂單類型跟可能的價格(此處詳細說明):
    • 限價單
    • 市價單
    • 止損單
    • 限價止損單
    • 止盈單
    • 止盈限價單
    • 供應限價單
  • timeInForce– 此參數表示您希望訂單執行的方式:
    •  GTC (有效至取消)– 是最受歡迎的設置,GTC 將確保您的訂單在填滿或取消之前一直有效。
    • FOK(填滿或殺死)– FOK 指示交易所一次執行所有訂單。如果交易所無法這樣做,則立即取消訂單。
    • IOC (立即成交否則取消) – 必須立即執行全部或部分訂單,否則該訂單將被取消。與 FOK 不同的是如果訂單可以部分填滿,則不會取消。
  • quantity – 就是您要購買或出售的資產數量。
  • price – 您要出售的價格。比如在 BTCUSDT 交易對中,以 USDT表示。
  • newClientOrderId – 訂單的標識符。這不是必填字段,但是您可以將其設置為一個標識符以便日後查詢。否則它將由交易所隨機生成。

好的!我們現在就創建一個測試訂單。我們使用自動生成的值:一份以 9000 美元的價格賣出 0.1 BTC的 USDT 的限價訂單。點擊 發送。如果下單成功,我們將得到{} 的響應。 

 

下真實訂單

是時候來下真實的假訂單了 

POST /api/v3/order

教易 > 新訂單中,由於您已經熟悉測試訂單,因此這裡的參數您應該熟悉。讓我們將所有的參數維持原狀,但由於我們一直處於死多頭狀態,因此我們將出售的價格更改為 40,000 美元。調整價格值然後,點擊發送

如果交易成功,您將得到有關該訂單的大量詳細信息的回饋。


查看未結訂單狀態

我們在上一章節已經確認訂單。但是如果要再次檢查該怎麼辦?我們有一些指令可以操作。

GET /api/v3/openOrders

您可以在交易> 當前的未結訂單(USER_DATA) 中找到這個指令。默認情況下選擇 BTCUSDT,如果您點擊發送,您將獲得所有未完成的 BTCUSDT 訂單(目前為止,您只會看到我們之前設置的訂單)。您可以不指定交易品種來返回所有的未結訂單。

GET /api/v3/allOrders

交易 > 所有訂單(USER_DATA)為您提供所有訂單的概述–不只是未結訂單,您必須提供一個符號, orderIdstartTimeendTime 和 limit 是一些可以幫助您優化搜索的參數,但此時我們不選擇它們。點擊發送,您會看到與以前相同的響應。如果您有任何關閉或取消的訂單,也可以在這裡看到它們。 


最後,我們可以使用以下命令查詢特定訂單:

GET /api/v3/order

交易 > 查詢順序(USER_DATA 下可以獲得該指令。您將需要提供 orderId 或 origClientOrderId(可以在訂單中添加的標記“newClientOrderId”)。取消選取orderId。對 origClientOrderId,我們必須提供稍早添加的標籤 – ”my_order_id_1”;。將此標籤填入後點擊發送以獲取響應。


取消訂單

一段時間後,我們可能會認為 40,000 美元的目標過於樂觀,希望取消該訂單。在這種情況下,我們將使用:

DELETE /api/v3/order

交易 > 取消訂單中找到該請求,使我們能夠選擇要取消的訂單。取消選取 orderIdnewClientOrderId 並將“ my_order_id_1” 作為 origClientOrderId 的值。

當您發送此請求時,訂單將被退回。如果您往下到 “狀態” 欄目,;您會看到它確實被取消了。如果要確認,請再次使用 GET / api / v3 / openOrders端點(提供了一個空列表)或使用origClientOrderId 在指令 GET / api / v3 / order 之中。


下訂單即刻成交

我們之前的訂單沒有成交,因為它是一個限價訂單,只有 BTC 價格達到 40,000 美元時才會成交。對於市價單,基本表明“以資產當前交易價格買賣”,這筆訂單就會立即被填滿。

為此,讓我們回到交易 > 新訂單。我們將演示響應的類型( newOrderRespType),該參數讓我們可以根據服務器獲取的響應進行參數調整。這裡有三個選項: ACKRESULTFULL – 您可以在此處查看每個響應的示例。我們使用可以簡單確認已收到訂單的 ACK 模式

下面您可以看到我們即將提交的市價單,以當前市場 BUSD 的價格出售 BNB。



請注意,該響應僅向我們提供了最簡略的信息:



您可以驗證訂單是否已填充: / api / v3 / allOrders 


檢查您的交易

最後,讓我們看一下檢查您的交易的端點:

GET /api/v3/myTrades

這指令位於交易 > 帳戶交易清單(USER_DATA)中可以找到。它允許您檢查每個交易中的特定交易品種,如要查看默認符號下(BTCUSDT )的所有交易,只需取消選取 startTimeendTimefromId。最多可以返回 500 筆交易 – 如果 想查看更多內容,需調整 limit 的值。


使用 Postman 進行調試

在 Postman 中,可以進一步顯示原始 HTTP 請求和響應。



此選單將打開 Postman 控制台,並打印出每個請求的詳細信息。



結語

本指南的目的是向您簡要介紹無需編寫任何代碼的使用幣安 API。如果您詳讀指南,那麼您現在應該對我們如何請求和提交信息有所了解。

在本系列的下一部分中,我們將介紹一些基本編碼概念,這些概念使我們能夠自動執行加幣貨幣和其他數位資產的買賣。 

仍然疑問嗎?前往我們不斷進步的幣安開發者社區論壇,或查看技術文檔