バイナンスAPIシリーズPart.1 スポット取引とポストマン
バイナンスAPIシリーズPart.1 スポット取引とポストマン
ホーム記事

バイナンスAPIシリーズPart.1 スポット取引とポストマン

上級者
1w ago
13m

はじめに

仮想通貨取引のためのAPIを理解し、使用することで、ポジションを売買する際に、可能性を広げることができます。簡単なコーディングの知識があれば、取引所のバックエンドにプラグインして取引戦略を自動化することができます。ウェブサイトを回避することで、高性能なアプリケーションのためのマッチングエンジンへの道をはるかに速く進むことができます。

このシリーズの目的は、バイナンスのREST APIを紹介し、利用方法について伝えることです。最終的には、市場とポジションに関する情報を照会し、さまざまな種類の注文を出すことができるようになります。

この記事では、ポストマンを使用して取引所と通信します。心配しないでください。 ― 私たちは実際の資金を危険にさらすことはありません。


前提条件

テストネットキー

テストネットを目的に使う予定です。これにより、実際には何の価値もない資金を手に入れることができます。これらは本物のコインやトークンと全く同じように機能するので、APIに慣れてしまえば、本物の資金を取引する時に慣れた状態で始めることができます。


  1. まずはスポットテストネットワークへ。
  2. アクセスするには、GitHubアカウントでログインする必要があります。まだ作成していない場合は作成してください。
  3. AuthenticateをクリックしてGitHub経由でサインインします。
  4. API Keysの下に、鍵が登録されていないことが通知されます。Generate HMAC_SHA256 Keyをクリックしてペアを作成します。
  5. 次の画面で、キーにラベルを付けます。好きなように呼んで、Generateを押してください。 
  6. API KeySecret Keyの2つのキーが提示されます。今すぐこれらを記録することが重要です。記録しない場合は、鍵の作成プロセスを再度開始する必要があります。後で簡単にコピー&ペーストできるように、お使いのマシンのノートアプリに保存しておくことをお勧めします。
注意:鍵にラベルを付けることは、異なる鍵を管理するために実際の取引所を使用する際に行う価値のあることです。あなたのアカウントは、異なる権限を持つ複数のキーを持つことができます。複数の取引ボットを運用している場合は、説明的なラベルを付けた別々のキーを使用することで、すべてのボットを変更することなく、パーミッションの管理や個々のキーの削除が容易になります。


ポストマンのダウンロードとインストール

ポストマンはAPIコラボレーションプラットフォームです。これは私たちにとっての出発点です。一行のコードを書かなくてもテストできるバイナンスリクエストのコレクションにアクセスできるようになります。

このプログラムはMac、Windows、Linuxに対応しています。ダウンロードページにアクセスして、zipファイルをダウンロードしてください。

それが完了したら、ファイルエクスプローラーでそれを見つけてインストールしてください。アプリケーションを起動してください。ログインするためにアカウントを作成することができますが、その必要はありません。このステップをスキップしたい場合は、ウィンドウの下部にあるオプションを選択してください。


環境作り

この段階では、以下のようなインターフェースが必要です。



まず環境を作成したいと思います。これは、これから作業するリクエストのセットに変数を追加するためのものです。そのためには、まずバイナンスGitHubリポジトリから情報を取得する必要があります。こちらで、zipファイルをダウンロードしてください。



ダウンロードにはそれほど時間はかかりません。ファイルエクスプローラーで見つけて解凍してください。その後、ポストマンに戻って先に進むことができます。



右上の歯車のアイコンをクリックします。(上図)環境管理というポップアップが表示されます。 
  1. インポートを選択し、先ほど抽出したフォルダー(binance-postman-api)に移動します。 
  2. それを入力して、環境フォルダーに入ります。
  3. これで2つのファイルが表示されます。(1つはメインネット用、もう1つはテストネット用)binance_com_spot_testnet_api.postman_environment.jsonです。もう一方のファイルではキーが動作しないので、正しい方を確認してください。



もうすぐです。バイナンススポットテストネットAPIをクリックすると、以下の変数が表示されます。先に保存したキーを貼り付けて、赤で示された2つのパラメータを編集してください。更新をクリックしてポップアップを終了します。



この画面では、タイムスタンプと署名フィールドは空白のままにしてください。これら2つの値は各リクエストで自動的に作成されます。

最後にしなければならないことがあります。先ほど環境を設定するためにクリックした歯車のアイコンの右側に、No Environmentと表示されるドロップダウンメニューが表示されます。それをクリックして、バイナンススポットテストネットAPIを選択してください。


コレクションのインポート

次に、このコレクションをインポートします。これは、コールを行う際に大変な負担となるさまざまなリクエストです。環境にロードするには、次の手順に従います。

  1. 左上の隅にあるインポートをクリックします。
  2. ポップアップで、ファイルタブの下で、アップロードファイルを選択します。
  3. binance-postman-apiフォルダーを見つけて開いてください。
  4. 今回はサブディレクトリにコレクションを入力します。
  5. ここにも2つのファイルがあります。1つは先物APIで作業するためのものです。しかし、私たちはスポットを使用しているため、binance_spot_api_v1.postman_collection.jsonファイルを選択する必要があります。
  6. これで、インポートがポストマンコレクション形式であることを確認する確認画面が表示されるはずです。インポートを選択します。

ウィンドウの左側にあるコレクションタブの下に、100以上のリクエストがあるフォルダーの存在に気づくでしょう。おめでとうございます!次のセクションでは、リクエストの種類を見てみましょう。


リクエストをする

コレクションタブの下のフォルダーを展開すると、さまざまなリクエストがあることがわかります。また、色分けを見ると、3つのタイプのメソッドがあることが分かります:


  • GETGETメソッドは、サーバーから何かを取得するために使用されます。これを使ってアカウント残高や資産価格などの情報を取得します。
  • POST:一般的にはPOSTメソッドを使用してサーバー上に情報を作成します。これは、注文や出金のリクエストなどを行う際に必要となります。
  • DELETEDELETEメソッドは、サーバーに情報の削除を依頼するものです。注文をキャンセルするときに重宝します。


シンボルの一覧と取引ルールを探す

最初のリクエストの時間です!取引所で取引できるシンボルと取引ルールを教えてもらいましょう:

GET /exchangeInfo


これは追加のパラメーターを取得しません。アドレスバーにコピーして貼り付けることで、レスポンスが返ってきます。しかし、いくつかのパラメーターを含むリクエストのために、ポストマンはそれらを簡単に見たり修正したりすることができます。

このリクエストをロードするには、Market > Exchange Informationを選択します。すると以下のようなタブがポップアップします:



ここでは他に何もする必要はありませんので、先に進み送信を押してください。すると返事が返ってきます:



一番上のハイライト部分には、重要な情報が表示されています。

  • 回答の状態(200は成功したことを意味し、400から499は問題に遭遇したことを意味します)
  • 応答の受信に掛かった時間(1秒未満)

  • レスポンスのサイズ(22KBまで)


2番目のボックスには、応答の大部分が表示されます。きれいにプリントされているので、目に優しいです。これには、取引所自体の情報、および取引可能なペアとその最小・最大金額が含まれます。

情報量が多いように見えますが、このフォーマットはプログラム的に非常に簡単に作業できるようにしてくれます。これと対話するスクリプトを書くときには、レスポンスから特定の要素の特定のプロパティを簡単にピックアップすることができるようになります。


アカウント残高の確認

どんな資産があるのか、それぞれどれくらいあるか確認してみましょう:

GET /account
こちらはTrade > Account Informationの下にあります。こちらをクリックすると、前と同じようなレイアウトが表示されます。しかし、タイムスタンプ署名という2つの新しい変数が追加されていることにも注目してください。署名はセキュリティ対策です。今、私たちは機密情報を求めているので、それは私たちがアカウント所有者であることを証明してくれます。 
タイムスタンプは、リクエストがいつ送信されたかをサーバーに通知します。ネットワークの信頼性が低下したり、ダウンタイムが発生したりする可能性があるため、サーバーが要求を受け取るのが予定より大幅に遅れる場合があります。経過時間が長すぎると、要求が拒否されます。recvWindowパラメータを使用して、待機する時間を指定できます。デフォルトは5,000ミリ秒です。
この2つのフィールドの生成はポストマンが代行してくれます。送信をクリックすると、応答が返ってきます。残高の下には、BNB、BTC、BUSD、ETH、LTC、TRXの6つの資産が表示されているはずです。残高は無料ロックされているものに分かれます。まだロックされていないので、あなたの資産はすべて無料になっているはずです。

新たな(存在しない)資産を手に入れられたこと、おめでとうございます!


シンボルの現在の価格を取得する方法

私たちは、さまざまな方法で資産の現在の価格を取得することができます。おそらく最も簡単なのは、次のようなリクエストです:

GET /api/v3/ticker/24hr
お察しの通り、過去24時間の資産価格の情報が出てきます。Market > 24hr Ticker Price Change Statisticsで見つけてください。シンボル変数として迎えられるデフォルトのペアは、BTCUSDTです。 
これをストレートに送ることで、価格情報の内訳を見ることができます。シンボルの変更(BNBBUSDLTCUSDTなどに変更)もできますし、変数のチェックを外すと40ペア分のデータが返ってきます。
また、資産が取引されている現在の価格を返す、よりシンプルなコール(Market > Symbol Price Ticker)もあります:
GET /api/v3/price

先ほどと同様に、シンボル変数を変更したり、完全に削除したりして、すべてのシンボルの最新価格を取得することができます。


現在のオーダーブックのデプスを確認

オーダーブックのデプス(市場のデプス、またはDOMとも呼ばれている)は、市場について多くのことを教えてくれます。有益な情報が返ってくるようなコールをします:

GET api/v3/depth

これをデフォルト値(Market > Order Book)で送信すると、入札に関する応答が返信され、BTCUSDTをリクエストされます。テストネットサーバーは実際のデータほど多くのデータを生成しないため、次のスクリーンショットは実際の環境で表示されることを想定しています:



上の赤枠の部分では、最初の入札を見ることができます。私たちはBTCUSDTの本を見ているので、下の赤枠は誰かがあなたのBTCのために支払う意志がある価格です。下の数字は、彼らが買いたいと思っている金額です。これは何を意味するかというと、したがって、この注文は、0.999 BTCをBTCあたり9704.65 USDTのレートでリクエストしているということです。我々は下にスクロールし続けた場合、提示価格の減少が表示されます。これは購入者の支払いが少なくなることを示しています。

最高のオファーは、当然、あなたが投資に見合う価値を探しているなら、最も魅力的なものになるでしょう。とはいえ、例えば3 BTCを売り込もうとしているのであれば、0.999 BTCしか最低価格で売ることができません。あなたの注文がすべて埋まるまで、次の (安い) オファーを受ける必要があります。



スクロールを続けると、質問が表示されます。機能的には入札と似ていますが、USDT向けにBTCを販売する注文を表します。 


テストオーダーの発行

今度はテストオーダーを発行します。

POST api/v3/order/test
私たちはテストネットの資金を使っていますので、このリクエストは実際には注文されません。実際に送信する前に注文をテストする場合に便利です。Trade > Test New Order (TRADE)で検索します。



この他にも多くのパラメーターがあることがわかります。チェックしたものを見ていきましょう:


  • symbol ― 以前にも見たことがあります。これは取引したいペアです。
  • side ― ここでは、購入か売却を指定します。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 ― 注文の識別子。これは必須フィールドではありませんが、後で簡単に問い合わせができるように識別子を設定することができます。そうでない場合は、取引所によってランダムに生成されます。
よし!では、テスト注文を作成してみましょう。自動生成された値を使用して、USDTで0.1BTCを9000ドルで売る指値注文を作成し、送信をクリックします。これが成功した場合、{}という応答が返されます。 

 

実際の注文をする

実際に注文する時が来ました。

POST /api/v3/order
Trade > New Orderに移動します。これまでテスト注文で慣れて来ましたので、ここでのパラメーターは驚くことはありません。すべての値をそのままにしておきますが、私たちは条件を満たしていますので、販売する価格を40,000ドルに変更します。これを反映するように価格を調整します。次に、送信を押してください。

あなたのレスポンスが成功した場合、注文に関する詳細が返されます。


未決済注文の状況を確認する

前の項で注文確認は取れましたが、再度確認したい場合はどうすればいいのでしょうか?いくつかのリクエストがあります。

GET /api/v3/openOrders
Trade > Current Open Orders(USER_DATA)で確認できます。デフォルトではBTCUSDTが選択されています。送信をクリックすると、未決済のBTCUSDT注文がすべて表示されます(今のところ、先ほど設定した注文だけが表示されています)。シンボルを指定しないように選択すると、未処理の注文がすべて返されます。
GET /api/v3/allOrders
Trade > All Orders(USER_DATA)では、未決済の注文だけでなく、すべての注文の概要を確認することができます。ここでは、シンボルを指定する必要があります。orderIdstartTimeendTime、およびlimitは検索の絞り込みに役立つオプションのパラメーターです。ここでは省略しますので、チェックを外してください。送信をクリックすると、以前と同じ応答が表示されます。自身でキャンセルした注文やキャンセルされた注文がある場合、ここにも表示されます。 


最後に、次のように特定の注文照会ができます:

GET /api/v3/order
Trade > Query Order(USER_DATA)で取得します。orderIdまたはorigClientOrderId(オプションのタグ "newClientOrderId "は注文に追加することができます)のいずれかを指定する必要があります。orderIdのチェックを外します。origClientOrderIdの場合は、先ほどのデフォルトタグ "my_order_id_1 "を使用します。フィールドに入力し、送信を押すとレスポンスが返ってきます。


注文をキャンセルする

しばらくすると、40,000ドルの目標は少し楽観的すぎると判断し、キャンセルしたくなるかもしれません。その場合は次のものを使用します:

DELETE /api/v3/order
Trade > Cancel Orderの下にあるリクエストは、キャンセルする注文を一つに絞るためのものです。orderIdnewClientOrderIdのチェックを外し、origClientOrderIdの値として "my_order_id_1 "を渡します。
このリクエストを送信すると、注文が返ってきます。ステータスまでスクロールすると、確かにキャンセルされていることがわかります。これを確認するには、再度GET /api/v3/openOrdersエンドポイントを使用するか(空のリストを与える)、origClientOrderIdを指定してGET /api/v3/orderを使用します。


すぐに満タンになる注文を出す

前回の注文は、BTC価格が40,000ドルに達したときにのみ発動する指値注文だったため、注文が成立しませんでした。市場注文では、基本的には”資産が現在取引されている価格で売買する”ということになります。これは瞬時に満たされます。
そのために、Trade>New Orderに戻ってみましょう。レスポンスタイプ(newOrderRespType)について説明します。これは、サーバーから取得したいレスポンスに応じて調整できるパラメーターです。ここにはACKRESULTFULLの3つのオプションがあります。それぞれのレスポンスの例はこちらで見ることができます。ここではACKを使用します。ACKを使用すると、注文が受信されたことを簡単に確認することができます。

下の画像の例では、現在の相場でBNBをBUSDで販売るための市場注文を出していることがわかります。



このレスポンスでは最低限の情報しか得られないことに注意してください:



注文が満たされたかどうかは、/api/v3/allOrdersエンドポイントで確認することができます。


取引の確認

最後に、取引をチェックするためのエンドポイントを見てみましょう:

GET /api/v3/myTrades
これは、Trade > Account Trade List(USER_DATA)の下にあります。これにより、各トレードで特定のシンボルを確認できます。デフォルトのシンボル(BTCUSDT)のすべての取引を確認したい場合は、startTimeendTimefromIdのチェックを外してください。レスポンスは最大500回の取引まで返されます。もっと多くの取引を見たい場合は、指値を微調整してください。


ポストマンでのデバッグ

ポストマンでは、生のHTTPリクエストとレスポンスをさらに明らかにすることができます。



このメニューは、各リクエストの詳細を出力するポストマンコンソールを開きます。



おわりに

このガイドの目的は、1行のコードも書かずにバイナンスAPIを優しく紹介することでした。このガイドをお読みになった方は、情報をリクエストして送信する方法を理解しているはずです。

次回は、仮想通貨やその他のデジタル資産の売買を自動化するための基本的なコーディングの考え方をご紹介します。 
その間に質問がありますか?成長を続けるバイナンス・ディベロッパー・コミュニティをご覧になるか、ドキュメントをご覧ください。