ホームページ  >  記事  >  バックエンド開発  >  Python を使用して Binance の履歴トランザクションを簡単に取得

Python を使用して Binance の履歴トランザクションを簡単に取得

PHPz
PHPz転載
2023-04-12 22:16:191968ブラウズ

Python を使用して Binance の履歴トランザクションを簡単に取得

一部の戦略には一定レベルの技術データが必要ですが、他の戦略には 1 時間しかかからないことを考えると、プロセスは必ずしも単純ではなく、インフラストラクチャ、可用性、および次のような要素が考慮されます。接続性はデータの種類によって大きく異なる場合があります。

しかし、なぜこの記事では「トランザクション」データの取得についてのみ説明し、Binance API を使用するのでしょうか?私の記事の内容についていくつか質問があるかもしれません。

データの頻度とバランス

取引データのエンドポイントは主に 99.99% の取引所で利用できると思います。これは粒度が細かく、高頻度取引 (HFT) 戦略のバックテストに十分な詳細 (一部の非常に特殊なケース) を提供し、OHLC ローソク足 (必要に応じて 1S から 24H、またはそれ以上) ベースとして使用できます。

取引データは多用途であり、さまざまな頻度で戦略を使用して広範な実験を行うことができます。

バイナンスを選ぶ理由?

それは、その量が膨大なため、私が後回しにしてしまう傾向にある取引所の 1 つだからです。

これから行うエンコーディング

シンボルのペア、開始日、終了日をコマンドとして受け取る Python スクリプトを作成します。行の引数。すべてのトランザクションを含む CSV ファイルをディスクに出力します。このプロセスは、次の手順で詳しく説明します:

1. シンボル、starting_date およびending_date 引数を解析します。

2. 開始日に発生した最初のトランザクションを取得して、最初のトランザクション trade_id を取得します。

3.ending_date に達するまで、リクエストごとに 1,000 トランザクションを取得するループ (Binance API 制限)。

4. 最後に、データをディスクに保存します。この例では、CSV として保存しましたが、他のオプションもあり、必ずしも CSV として保存する必要はありません。

5.パンダ、リクエスト、時刻、sys、および日時を使用します。コード スニペットでは、説明に値を追加しないため、エラー検証は表示されません。

エンコード時間

スクリプトは次のパラメータを使用します:

1. シンボル: によって定義される取引ペアのシンボルバイナンス。これは、ここでクエリすることも、Binance Web アプリケーションの URL (_ 文字を除く) からコピーすることもできます。

Python を使用して Binance の履歴トランザクションを簡単に取得

-starting_date とending_date: 一目瞭然です。予期される形式は mm/dd/yyyy、または Python スラングを使用した %m/%d/%Y です。

パラメータを取得するには、組み込み関数 sys (特別なことは何もありません) を使用し、日付を解析するには、datetime ライブラリを使用します。

Python を使用して Binance の履歴トランザクションを簡単に取得

1 日を加算し、1 マイクロ秒を減算して、ending_date の時刻部分が常に 23:59:59.999 になるようにします。これにより、同じ日の間隔がより多く取得されます。実用的。

トランザクションの取得

Binance の API と aggTrades エンドポイントを使用すると、start パラメーターと end パラメーターを使用すると、1 回のリクエストで最大 1000 個のトランザクションを取得できます。それらの間隔は最大でも 1 時間です。

何度か失敗した後、時間間隔取得を使用することで (ある時点で流動性がおかしくなり、貴重な取引を失うことになります)、from_id 戦略を試してみることにしました。

aggTrades は圧縮された取引を返すので、選択したエンドポイントに設定します。そうすれば、貴重な情報が失われることはありません。

#圧縮された合計トランザクションを取得します。同じ注文から同じ価格で同時に取引が実行された場合、数量が集計されます。


from_id 戦略は次のようになります:


日付間隔をエンドポイントに送信することで、最初のトランザクションの starting_date を取得したいと考えています。その後、最初に取得したトランザクション ID から始まる 1000 件のトランザクションを取得します。次に、最後のトランザクションがending_date 以降に発生したかどうかを確認します。


そうであれば、すべての期間を反復処理し、結果をファイルに保存できます。それ以外の場合は、from_id 変数を更新して最後のトランザクション ID を取得し、ループを再度開始します。


最初のトランザクション番号の取得


Python を使用して Binance の履歴トランザクションを簡単に取得

まず、new_end_date を作成します。これは、startTime パラメータと endTime パラメータを渡して aggTrades を使用しているためです。


ここで必要なのは、期間の最初のトランザクション番号だけなので、60 秒を追加します。流動性の低い通貨ペアでは、リクエストされた初日にトランザクションが発生することが保証されていないため、このパラメーターは変更できます。


次に、ヘルパー関数を使用して日付を解析し、calendar.timegm 関数を使用して日付を Unix ミリ秒表現に変換します。 timegm 関数は、日付を UTC で保持するため、推奨される関数です。

Python を使用して Binance の履歴トランザクションを簡単に取得

##リクエストに対する応答は、次の形式で日付順に並べ替えられた取引オブジェクトのリストです:


Python を使用して Binance の履歴トランザクションを簡単に取得

したがって、最初のトランザクション ID が必要なので、その応答[0]["a"] 値を返します。


メイン ループ


最初のトランザクション ID を取得したので、ending_date に達するまで一度に 1000 個のトランザクションを抽出できます。次のコードはメインループで呼び出されます。 from_id パラメータを使用してリクエストを実行し、startDate パラメータと endDate パラメータを破棄します。


Python を使用して Binance の履歴トランザクションを簡単に取得

#これは、リクエストを実行して DataFrame を作成するメイン ループです。


Python を使用して Binance の履歴トランザクションを簡単に取得# current_time に to_date よりも後の最近取得したトランザクション日付が含まれているかどうかを確認し、含まれている場合は次のようにします。 # use From_id パラメータでトランザクションを取得します。

最新のトランザクションから取得した情報を使用して、from_id パラメータと current_time パラメータを更新します。

    わかりやすいデバッグ メッセージを出力します。
  • pd.concat これらのトランザクションと前のトランザクション DataFrame
  • Binance が 429 HTTP 応答を返さないようにスリープを使用します

  • Clean and Save

  • DataFrame を組み立てた後、簡単なデータ クリーニングを実行する必要があります。重複したトリムを持つトランザクションと、to_date 以降に発生したトランザクションを削除します (この問題が発生するのは、1000 件のトランザクションのほとんどを取得しているためです。したがって、一部のトランザクションは目標終了日以降に実行されることが予想されます)。

トリム関数をカプセル化できます:


# とデータ クリーニングを実行できます:


Python を使用して Binance の履歴トランザクションを簡単に取得# これで、次の to_csv メソッドを使用してファイルに保存できるようになります:


# 他のデータ ストア メカニズムを使用することもできます。北極のように。 Python を使用して Binance の履歴トランザクションを簡単に取得

最後に: データを確認します

取引戦略を使用する際には、データを信頼することが重要です。次の検証を適用することで、フェッチしたトランザクション データでこれを簡単に行うことができます。 Python を使用して Binance の履歴トランザクションを簡単に取得


コード スニペットでは、この DataFrame を NumPy 配列に変換し、行を反復処理します。行ごとにトランザクション ID が 1 ずつ増加するかどうかを確認します。

Binance トランザクション ID には増分番号が付けられ、シンボルごとに作成されるため、データが正しいことを簡単に確認できます。

追記: 成功するトレーディング戦略を作成するための最初のステップは、適切なデータを入手することです。 Python を使用して Binance の履歴トランザクションを簡単に取得

以上がPython を使用して Binance の履歴トランザクションを簡単に取得の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。