Loạt bài về API Binance Pt. I – Giao dịch Spot với Postman
Loạt bài về API Binance Pt. I – Giao dịch Spot với Postman
Trang chủBài viết

Loạt bài về API Binance Pt. I – Giao dịch Spot với Postman

Nâng cao
Published Jul 13, 2020Updated Jun 1, 2021
13m


Nội dung


Giới thiệu

Việc hiểu và sử dụng API để giao dịch tiền mã hoá có thể mở ra một thế giới với các khả năng nhập và thoát các vị thế. Với một số kiến thức lập trình cơ bản, bạn có thể sử dụng chương trình bổ trợ từ back-end của sàn giao dịch, nhằm tạo ra một chiến lược giao dịch được thực thi tự động. Bằng cách tách trang web, bạn có thể có một con đường kết nối nhanh hơn, tạo ra các ứng dụng hiệu suất cao.

Mục đích của loạt bài này là giới thiệu cho bạn về API REST của Binance và hướng dẫn bạn cách tương tác với nó. Cuối cùng, bạn có thể tự tin vào khả năng truy vấn thông tin về thị trường và vị thế của mình và đặt hàng loạt các loại lệnh khác nhau.

Trong bài viết này, chúng tôi sẽ sử dụng Postman để liên lạc với sàn giao dịch. Đừng lo lắng - chúng ta sẽ không đặt bất kỳ khoản tiền thật nào vào rủi ro.


Điều kiện tiên quyết

Các khóa testnet

Chúng ta sẽ sử dụng testnet với mục đích của mình. Việc này sẽ cung cấp cho chúng ta một số tiền không có giá trị trong thế giới thực để thử nghiệm. Số tiền này hoạt động theo cách giống hệt như tiền mã hóa và token thực. Vì vậy khi bạn sẽ dễ làm quen với API và có thể bắt đầu sử dụng nó để giao dịch tiền thật.


  1. Chuyển đến Spot Test Network .
  2. Để có quyền truy cập, bạn cần đăng nhập bằng tài khoản GitHub. Tạo một cái nếu bạn chưa có.
  3. Nhấp vào Authenticate và đăng nhập qua GitHub.
  4. Trong API Keys, bạn sẽ được thông báo rằng mình chưa có các khóa được đăng ký. Nhấp vào Generate HMAC_SHA256 Key để tạo một cặp.
  5. Trên màn hình tiếp theo, hãy đặt nhãn cho các khóa. Gọi bất cứ điều gì bạn muốn và nhấn Generate
  6. Bạn sẽ được cung cấp hai khóa: API KeySecret Key . Điều quan trọng là bạn phải ghi lại những điều này ngay bây giờ. Bạn sẽ cần bắt đầu lại quá trình tạo khóa nếu không làm như vậy. Chúng tôi khuyên bạn nên lưu trữ chúng trên ứng dụng ghi chú trên máy tính để dễ dàng sao chép sau này.
Lưu ý: gắn nhãn cho các khóa của bạn là điều đáng làm để quản lý các khóa khác nhau khi sử dụng sàn giao dịch trong thực tế. Tài khoản của bạn có thể có nhiều khóa với các quyền khác nhau. Nếu bạn đang chạy một số bot giao dịch, việc sử dụng các khóa riêng biệt có nhãn mô tả giúp dễ dàng quản lý các quyền hoặc xóa các khóa riêng lẻ mà không cần thay đổi tất cả các bot của bạn.


Tải xuống và cài đặt Postman

Postman là một nền tảng Cộng tác API. Đây là một điểm rất thuận lợi – bởi chúng ta có quyền truy cập vào bộ sưu tập các yêu cầu của Binance mà không cần viết một dòng code nào.

Chương trình này có sẵn cho Mac, Windows và Linux. Đi tới trang Download và tải xuống tập tin .zip .

Sau khi hoàn tất, hãy đặt nó trong trình khám phá tệp của bạn và cài đặt nó. Kích hoạt ứng dụng và chúng ta sẽ tiếp tục! Lưu ý, bạn có thể tạo một tài khoản để đăng nhập, nhưng điều này không cần thiết. Nếu bạn muốn bỏ qua bước này, chỉ cần chọn tùy chọn đó ở dưới cửa sổ.


Tạo môi trường

Ở giai đoạn này, bạn sẽ có một giao diện giống như sau.



Đầu tiên, chúng ta phải tạo môi trường. Đây chỉ là một cách để chúng ta thêm các biến vào tập hợp các yêu cầu mà chúng ta sẽ làm việc. Để làm được điều này, trước tiên chúng ta cần lấy một số thông tin từ kho Binance GitHub. Truy cập vào đây và tải xuống tập tin .zip .



Quá trình tải xuống sẽ không mất nhiều thời gian. Tìm tệp và giải nén nó. Sau đó, chúng ta có thể quay trở lại Postman.



Nhấp vào biểu tượng bánh răng ở góc trên cùng bên phải (minh họa ở trên). Bạn sẽ được chào đón bằng cửa sổ pop-up: Manage Environments. 
  1. Chọn Import và điều hướng đến thư mục bạn vừa giải nén (binance-postman-api). 
  2. Vào nó, sau đó vào thư mục môi trường .
  3. Bây giờ bạn sẽ thấy hai tệp (một cho mainnet và một cho testnet). Cái mà chúng ta đang theo đuổi là binance_com_spot_testnet_api.postman_enosystem.json. Hãy đảm bảo rằng bạn đã chọn đúng vì các khóa của chúng ta sẽ không hoạt động với các khóa khác.



Sắp xong rồi. Nhấp vào Binance Spot Testnet API và bạn sẽ thấy các biến bên dưới. Chỉnh sửa hai tham số được tô màu đỏ bằng cách dán các khóa bạn đã lưu trước đó. Nhấp vào cập nhật và thoát ra khỏi cửa sổ bật lên.



Trên màn hình này, hãy để trống các trường timestamp và signature. Hai giá trị này sẽ được tạo tự động theo mỗi yêu cầu.

Còn một việc cuối cùng cần làm. Ở bên phải của biểu tượng bánh răng mà chúng ta đã nhấp để thiết lập môi trường trước đó, bạn sẽ thấy menu thả xuống hiện No Environment . Nhấp vào nó và chọn Binance Spot Testnet API .


Nhập bộ sưu tập

Bây giờ, chúng ta sẽ nhập bộ sưu tập – một loạt các yêu cầu thực hiện công việc khi chúng ta thực hiện gọi các phương thức. Để tải nó vào môi trường chúng ta đã thiết lập, hãy làm như sau:

  1. Nhấp vào Import ở góc trên cùng bên trái.
  2. Trong cửa sổ bật lên, bên dưới tab File, hãy chọn Upload Files .
  3. Tìm lại thư mục binance-postman-api. Xác định vị trí và mở nó.
  4. Lần này, hãy nhập collections trong thư mục con.
  5. Có hai tệp ở đây một lần nữa. Một tệp là để làm việc với API tương lai. Nhưng chúng ta đang làm việc với tệp spot, vì vậy bạn sẽ cần chọn tệp binance_spot_api_v1.postman_collection.json.
  6. Bây giờ bạn sẽ thấy màn hình xác nhận xác định việc nhập đang ở định dạng Postman Collection. Chọn Import.

Trong tab Collections ở bên trái cửa sổ, bạn sẽ thấy chúng ta có một thư mục với hơn 100 yêu cầu. Xin chúc mừng! Chúng ta có thể đi tiếp. Trong phần tiếp theo, chúng ta sẽ xem xét các loại yêu cầu mà chúng ta có thể thực hiện.


Tạo yêu cầu

Nếu bạn mở rộng các thư mục trong tab Collections , bạn sẽ thấy có một loạt các yêu cầu khác nhau mà chúng ta có thể thực hiện. Từ những code-màu, bạn có thể lưu ý rằng có ba loại phương thức chúng ta có thể sử dụng:


  • GET: Phương thức GET được sử dụng để truy xuất nội dung từ máy chủ. Chúng ta sẽ sử dụng thông tin này để tìm hiểu thông tin về số dư tài khoản của bạn, giá tài sản, v.v.
  • POST : Chúng tôi thường sử dụng phương thức POST để tạo thông tin trên máy chủ. Điều này là cần thiết cho những việc như đặt lệnh, yêu cầu rút tiền, v.v.
  • DELETE: Phương thức DELETE là một yêu cầu máy chủ xóa thông tin. Nó sẽ hữu ích cho việc hủy lệnh.


Tìm danh sách theo ký hiệu và các quy tắc giao dịch

Đã đến lúc thực hiện yêu cầu đầu tiên! Chúng ta sẽ truy xuất các ký hiệu - mã giao dịch trên sàn và các quy tắc giao dịch:

GET / exchangeInfo


Phương thức này không có bất kỳ thông số bổ sung nào – bạn có thể sao chép và dán thông số đó vào thanh địa chỉ của mình và nhận được phản hồi. Nhưng đối với các yêu cầu bao gồm một số tham số, Postman sẽ giúp bạn dễ dàng xem và sửa đổi chúng.

Để tải yêu cầu này, hãy chọn Market > Exchange Information. Một tab như sau sẽ bật lên:



Chúng ta không cần phải làm gì khác ở đây, vì vậy hãy tiếp tục và nhấn Send. Sau đó, bạn sẽ nhận được phản hồi:



Trong phần được đánh dấu trên cùng, bạn sẽ thấy một số thông tin quan trọng:

  • trạng thái của phản hồi ( 200 có nghĩa là chúng ta đã thành công, 400-499 có nghĩa là chúng ta đã gặp sự cố)
  • thời gian cần thiết để nhận được phản hồi (ít hơn một giây)

  • kích thước của phản hồi (~ 22KB).


Phần lớn trong hộp thứ hai là phản hồi. Nó được định dạng khá đẹp nên dễ nhìn hơn một chút. Nó chứa thông tin về chính sàn giao dịch, cũng như các cặp bạn có thể giao dịch và số tiền tối thiểu / tối đa của chúng.

Dù trông có vẻ rất nhiều thông tin để theo dõi, nhưng với định dạng, chúng sẽ giúp bạn làm việc theo chương trình một cách rất dễ dàng. Khi viết script để tương tác với nó, bạn sẽ dễ dàng chọn ra các thuộc tính cụ thể của các phần cụ thể từ phản hồi.


Kiểm tra số dư tài khoản

Hãy kiểm tra xem chúng ta có những tài sản nào và bao nhiêu của mỗi loại:

GET /account
Bạn có thể tìm thấy thông tin này trong Trade > Account Information . Nhấp vào nó và bạn sẽ thấy một bố cục tương tự như bố cục trước đó. Tuy nhiên, bạn cũng cần lưu ý rằng chúng ta có hai biến mới: timestampsignature . Chữ ký là một biện pháp bảo mật. Bởi vì chúng ta đang yêu cầu thông tin nhạy cảm, nó sẽ chứng minh chúng ta là chủ tài khoản. 
Timestamp cho máy chủ biết khi nào yêu cầu được gửi. Vì mạng có thể không đáng tin cậy hoặc phải đối mặt với thời gian chết, máy chủ có thể sẽ nhận được yêu cầu muộn hơn so với dự định. Nếu thời gian đã trôi qua quá nhiều, nó sẽ từ chối yêu cầu. Bạn có thể chỉ định thời gian bạn muốn đợi bằng tham số recvWindow, mặc định là 5000 mili giây.
Postman xử lý việc tạo ra cả hai trường này cho chúng ta. Nhấp vào gửi và bạn sẽ nhận được phản hồi. Theo số dư, bạn sẽ thấy sáu tài sản – BNB, BTC, BUSD, ETH, LTC và TRX. Số dư sẽ được chia thành free (mở)locked (khóa) . Chúng ta chưa khóa bất kỳ tài sản nào, vì vậy tất cả tài sản của bạn sẽ là mở.

Xin chúc mừng về sự giàu có (trên thế giới ảo) của bạn!


Cách lấy giá hiện tại từ một ký hiệu

Chúng ta có thể tìm giá hiện tại của một tài sản theo nhiều cách khác nhau. Các đơn giản nhất là gửi yêu cầu như sau:

GET / api / v3 / ticker / 24hr
Như bạn dự đoán, dòng lệnh này sẽ cung cấp thông tin về giá tài sản trong 24 giờ qua. Tìm nó trong Market > 24hr Ticker Price Change Statistics. Cặp mặc định mà chúng ta có là BTCUSDT
Bạn có thể gửi ngay thông tin này để xem bảng phân tích thông tin giá. Bạn cũng có thể thay đổi ký hiệu (thành BNBBUSD , LTCUSDT , v.v.) hoặc bạn có thể bỏ chọn biến để trả về dữ liệu cho 40 cặp.
Chúng ta cũng có một lệnh gọi đơn giản hơn ( Market > Symbol Price Ticker ) trả kết quả về giá hiện tại mà một tài sản đang giao dịch:
GET / api / v3 / price

Như với lần trước, bạn có thể thay đổi hoặc loại bỏ hoàn toàn biến ký hiệu và nhận giá mới nhất cho tất cả các mã.


Kiểm tra độ sâu của sổ lệnh hiện tại

Độ sâu của sổ lệnh (còn được gọi là độ sâu của thị trường, hoặc DOM) có thể cho chúng ta biết rất nhiều điều về thị trường. Chúng ta sẽ thực hiện một lần gọi để trả lại một số thông tin hữu ích:

GET api / v3 / depth

Khi chúng ta gửi thông tin này với các giá trị mặc định (Market > Order Book), chúng tôi sẽ gửi lại phản hồi cho bạn biết về giá thầu và yêu cầu BTCUSDT. Máy chủ testnet sẽ không mang lại nhiều dữ liệu như máy chủ thực tế, vì vậy dưới đây là ảnh chụp màn hình những gì bạn sẽ thấy trong môi trường thực:



Trong phần được đánh dấu ở trên, chúng ta sẽ thấy giá bid đầu tiên. Vì chúng ta đang xem sổ lệnh về BTCUSDT, con số trên là giá mà ai đó sẵn sàng trả cho BTC của bạn. Dưới đây là số lượng họ sẵn sàng mua. Do đó, điều này nói lên rằng lệnh này đang yêu cầu 0,999 BTC với tỷ lệ 9704,65 USDT cho mỗi BTC. Nếu tiếp tục cuộn xuống, chúng ta sẽ thấy giá ưu đãi giảm – thể hiện người mua sẽ trả ít hơn. 

Ưu đãi hàng đầu đương nhiên sẽ là ưu đãi hấp dẫn nhất, nếu bạn đang tìm kiếm sự thay đổi đáng đồng tiền bát gạo. Điều đó nói rằng, nếu bạn đang cố gắng bán 3 BTC trên thị trường, bạn có thể chỉ bán được 0,999 BTC với mức giá tốt nhất. Bạn sẽ cần nhận các lời đề nghị tiếp theo (rẻ hơn) cho đến khi toàn bộ lệnh mua của bạn được lấp đầy.



Tiếp tục cuộn và bạn sẽ thấy các yêu cầu. Chúng có chức năng tương tự như giá bid, ngoại trừ chúng đại diện cho lệnh bán BTC lấy USDT. 


Đặt lệnh của bạn

Bây giờ chúng ta sẽ đăng một lệnh thử nghiệm.

POST api / v3 / order / test
Mặc dù chúng ta chỉ sử dụng tiền của testnet, nhưng yêu cầu này sẽ không thực sự đặt lệnh. Bởi nó hữu ích cho việc kiểm tra các lệnh trước khi được gửi. Tìm nó trong Trade> Test New Order (TRADE) .



Bạn có thể thấy chúng ta có nhiều tham số khác liên quan. Hãy xem qua những cái này:


  • symbol - ký hiệu. Hay cụ thể là cặp bạn muốn giao dịch.
  • side - ở đây, bạn sẽ quy định xem mình muốn MUA hay BÁN. Với cặp BTCUSDT, MUA cho biết rằng bạn muốn mua BTC bằng USDT, trong khi bán sẽ bán BTC lấy USDT.
  • type - loại lệnh mà bạn muốn gửi lên hệ thống. Các giá trị có thể có (chi tiết tại đây):
    • LIMIT
    • MARKET
    • STOP_LOSS
    • STOP_LOSS_LIMIT
    • TAKE_PROFIT
    • TAKE_PROFIT_LIMIT
    • LIMIT_MAKER
  • timeInForce- tham số này thể hiện cách bạn muốn lệnh thực thi:
    • GTC (tốt cho đến khi bị hủy) - có lẽ là thiết lập phổ biến nhất, GTC sẽ đảm bảo rằng lệnh bạn đặt có giá trị cho đến khi chúng được thực hiện hoặc cho đến khi bạn hủy lệnh.
    • FOK (lấp đầy hoặc hủy) - FOK hướng dẫn sàn giao dịch thực hiện tất cả các lệnh cùng một lúc. Nếu sàn giao dịch không thể làm như vậy, lệnh sẽ bị hủy ngay lập tức.
    • IOC (ngay lập tức hoặc hủy bỏ) - tất cả hoặc một phần của lệnh phải được thực hiện ngay lập tức, hoặc nó sẽ bị hủy. Không giống như FOK, lệnh không bị hủy nếu chúng có thể được thực thi một phần.
  • quantity - đơn giản là số lượng tài sản bạn muốn mua hoặc bán.
  • price - giá mà bạn muốn bán. Đối với cặp BTCUSDT, điều này được thể hiện bằng USDT.
  • newClientOrderId - mã định danh cho lệnh. Đây không phải là trường bắt buộc, nhưng bạn có thể đặt nó thành một số nhận dạng để dễ dàng truy vấn sau này. Nếu không, nó sẽ được tạo ngẫu nhiên bởi sàn giao dịch.
Được rồi! Hãy thử tạo một lệnh ngay bây giờ. Chúng ta sẽ thử với các giá trị được tạo tự động: lệnh giới hạn bán 0,1 BTC cho USDT ở mức 9000 USD. Nhấn Send . Nếu điều này thành công, thì chúng ta sẽ nhận được {} dưới dạng phản hồi. 

 

Đặt một lệnh thật

Đã đến lúc đặt một lệnh giả nhưng thật . 

POST /api/v3/order
Điều hướng đến Trade > New Order . Bây giờ, bạn đã quen với các lệnh thử nghiệm, vì vậy các thông số ở đây sẽ không có gì khiến bạn xa lạ. Hãy để tất cả các giá trị như hiện tại, nhưng vì chúng ta đang thử nghiệm, nên chúng ta có thể thay đổi giá bán ở mức 40.000 đô la. Điều chỉnh giá trị để phản ánh điều này. Sau đó, nhấn Send .

Nếu thành công, bạn sẽ được phản hồi bằng một loạt thông tin chi tiết về lệnh vừa đặt. 


Kiểm tra trạng thái của một lệnh đang mở

Chúng ta đã được xác nhận rằng lệnh đã được đặt ở phần trước, nhưng nếu chúng ta muốn kiểm tra lại thì sao? Ta có một số truy vấn có thể sử dụng.

GET / api / v3 / openOrders
Bạn có thể tìm nó trong Trade> Test New Order (TRADE). Theo mặc định, BTCUSDT được chọn. Nếu bạn nhấn Send, bạn sẽ nhận được tất cả các lệnh BTCUSDT đang mở của mình (tính tới thời điểm này, bạn sẽ chỉ thấy lệnh mà chúng ta đã đặt trước đó). Bạn có thể không chỉ chọn một ký hiệu cụ thể. Thay vào đó, ký hiệu sẽ trả về tất cả các lệnh đang mở của bạn.
GET /api/v3/allOrders
Trade > All Orders (USER_DATA) cung cấp cho bạn cái nhìn tổng quan về tất cả các lệnh - không chỉ những lệnh đang mở. Ở đây, bạn phải cung cấp một mã ký hiệu. orderId , startTime , endTime và giới hạn là các tham số tùy chọn có thể giúp bạn tinh chỉnh tìm kiếm của mình. Chúng ta sẽ để chúng ở ngoài, vì vậy hãy bỏ chọn chúng. Nhấn Send và bạn sẽ thấy phản hồi giống như trước . Nếu bạn có bất kỳ lệnh nào đã đóng hoặc bị hủy, bạn cũng sẽ thấy chúng ở đây. 


Cuối cùng, chúng ta có thể truy vấn các lệnh cụ thể với:

GET /api/v3/order
Lấy điều này trong Trade > Query Order (USER_DATA)  . Bạn sẽ cần cung cấp orderId hoặc origClientOrderId (thẻ tùy chọn “newClientOrderId” mà bạn có thể thêm vào lệnh). Bỏ chọn orderId . Đối với origClientOrderId , chúng ta sẽ cung cấp thẻ mặc định trước đó - ”my_order_id_1”. Điền vào trường và nhấn Send để nhận phản hồi.


Hủy bỏ một lệnh

Sau một thời gian, chúng ta có thể quyết định rằng mục tiêu 40.000 USD hơi quá lạc quan, vì vậy chúng ta muốn hủy bỏ nó. Trong trường hợp đó, chúng ta sẽ sử dụng:

DELETE /api/v3/order
Trong Trade > Cancel Order là một yêu cầu cho phép chúng ta chọn ra các lệnh để hủy. Bỏ chọn orderIdnewClientOrderId và chuyển “my_order_id_1” làm giá trị cho origClientOrderId .
Khi bạn gửi yêu cầu này, lệnh sẽ được thu hồi. Nếu bạn cuộn xuống “ status ”, bạn sẽ thấy rằng nó thực sự đã bị hủy. Để xác nhận điều này, hãy sử dụng truy vấn GET  /api /v3/ openOrders (cung cấp cho bạn một danh sách trống) hoặc GET / api / v3/order với origClientOrderId .


Đặt một lệnh sẽ được thực thi ngay lập tức

Lệnh trước đó của chúng ta đã không được thực hiện vì đó là lệnh giới hạn, nó chỉ kích hoạt khi giá BTC chạm mức 40.000 USD. Với một lệnh thị trường, về cơ bản chúng ta đang muốn "mua / bán ở bất kỳ mức giá nào mà tài sản hiện đang giao dịch." Điều này sẽ được thực thi ngay lập tức.
Điều hướng đến Trade > New Order . Chúng ta sẽ chứng minh loại phản hồi ( newOrderRespType ) là một tham số chúng ta có thể điều chỉnh tùy thuộc vào phản hồi mà chúng ta muốn nhận được từ máy chủ. Có ba tùy chọn ở đây: ACK , RESULT hoặc FULL - bạn có thể xem ví dụ về từng phản hồi tại đây . Chúng ta sẽ sử dụng ACK , điều này sẽ cung cấp cho chúng ta một xác nhận đơn giản rằng lệnh đã được nhận.

Dưới đây, bạn có thể thấy rằng chúng ta sắp gửi lệnh thị trường bán BNB lấy BUSD theo giá thị trường hiện tại.



Lưu ý rằng phản hồi cung cấp cho chúng ta thông tin tối thiểu:



Bạn có thể xác minh đơn đặt hàng đã được thực hiện bằng điểm cuối / api / v3 / allOrders .


Kiểm tra giao dịch của bạn

Cuối cùng, hãy xem xét bước cuối cùng để kiểm tra các giao dịch của bạn:

GET /api/v3/order
Nó được đặt trong Trade > Query Order (USER_DATA)  . Truy vấn này cho phép bạn kiểm tra mỗi giao dịch theo một ký hiệu cụ thể. Nếu bạn muốn xem tất cả các giao dịch của mình cho ký hiệu mặc định ( BTCUSDT ), chỉ cần bỏ chọn startTime , endTimefromId . Phản hồi sẽ trả về tối đa 500 giao dịch – chỉ cần điều chỉnh giới hạn nếu bạn muốn xem thêm.


Debug với Postman

Trong Postman, có thể lấy yêu cầu HTTP raw và phản hồi.



Menu này sẽ mở ra bảng điều khiển Postman. Bảng điều khiển này sẽ in ra chi tiết từng yêu cầu.



Tổng kết

Mục đích của hướng dẫn này là cơ bản giới thiệu cho bạn về Binance API và bạn không cần viết một dòng code nào. Nếu bạn đã đọc hết bài viết, bạn đã có ý tưởng về cách chúng tôi có thể yêu cầu và gửi thông tin.

Với những bài tiếp theo trong loạt nội dung này, chúng tôi sẽ tiếp tục giới thiệu một số khái niệm mã hóa cơ bản cho phép chúng tôi tự động hóa việc mua và bán tiền mã hoá và tài sản kỹ thuật số khác. 
Bạn vẫn còn thắc mắc về những điều trên? Truy cập diễn đàn của Cộng đồng các nhà phát triển Binance hoặc xem thêm tài liệu.