検索
ホームページバックエンド開発Python チュートリアルPython を使用して Binance の履歴トランザクションを簡単に取得

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 までご連絡ください。
Pythonを使用した科学コンピューティングでアレイはどのように使用されていますか?Pythonを使用した科学コンピューティングでアレイはどのように使用されていますか?Apr 25, 2025 am 12:28 AM

Arraysinpython、特にvianumpy、arecrucialinscientificComputing fortheirefficienty andversitility.1)彼らは、fornumericaloperations、data analysis、andmachinelearning.2)numpy'simplementation incensuresfasteroperationsthanpasteroperations.3)arayableminablecickick

同じシステムで異なるPythonバージョンをどのように処理しますか?同じシステムで異なるPythonバージョンをどのように処理しますか?Apr 25, 2025 am 12:24 AM

Pyenv、Venv、およびAnacondaを使用して、さまざまなPythonバージョンを管理できます。 1)Pyenvを使用して、複数のPythonバージョンを管理します。Pyenvをインストールし、グローバルバージョンとローカルバージョンを設定します。 2)VENVを使用して仮想環境を作成して、プロジェクトの依存関係を分離します。 3)Anacondaを使用して、データサイエンスプロジェクトでPythonバージョンを管理します。 4)システムレベルのタスク用にシステムPythonを保持します。これらのツールと戦略を通じて、Pythonのさまざまなバージョンを効果的に管理して、プロジェクトのスムーズな実行を確保できます。

標準のPythonアレイでnumpyアレイを使用することの利点は何ですか?標準のPythonアレイでnumpyアレイを使用することの利点は何ですか?Apr 25, 2025 am 12:21 AM

numpyarrayshaveveraladvantages-averstandardpythonarrays:1)thealmuchfasterduetocベースのインプレンテーション、2)アレモレメモリ効率、特にlargedatasets、および3)それらは、拡散化された、構造化された形成術科療法、

アレイの均質な性質はパフォーマンスにどのように影響しますか?アレイの均質な性質はパフォーマンスにどのように影響しますか?Apr 25, 2025 am 12:13 AM

パフォーマンスに対する配列の均一性の影響は二重です。1)均一性により、コンパイラはメモリアクセスを最適化し、パフォーマンスを改善できます。 2)しかし、タイプの多様性を制限し、それが非効率につながる可能性があります。要するに、適切なデータ構造を選択することが重要です。

実行可能なPythonスクリプトを作成するためのベストプラクティスは何ですか?実行可能なPythonスクリプトを作成するためのベストプラクティスは何ですか?Apr 25, 2025 am 12:11 AM

craftexecutablepythonscripts、次のようになります

numpyアレイは、アレイモジュールを使用して作成された配列とどのように異なりますか?numpyアレイは、アレイモジュールを使用して作成された配列とどのように異なりますか?Apr 24, 2025 pm 03:53 PM

numpyarraysarasarebetterfornumeroperations andmulti-dimensionaldata、whilethearraymoduleissuitable forbasic、1)numpyexcelsinperformance and forlargedatasentassandcomplexoperations.2)thearraymuremememory-effictientivearientfa

Numpyアレイの使用は、Pythonで配列モジュール配列の使用と比較してどのように比較されますか?Numpyアレイの使用は、Pythonで配列モジュール配列の使用と比較してどのように比較されますか?Apr 24, 2025 pm 03:49 PM

NumPyArraySareBetterforHeavyNumericalComputing、whilethearrayarayismoreSuitableformemory-constrainedprojectswithsimpledatatypes.1)numpyarraysofferarays andatiledance andpeperancedatasandatassandcomplexoperations.2)thearraymoduleisuleiseightweightandmemememe-ef

CTypesモジュールは、Pythonの配列にどのように関連していますか?CTypesモジュールは、Pythonの配列にどのように関連していますか?Apr 24, 2025 pm 03:45 PM

ctypesallowsinging andmanipulatingc-stylearraysinpython.1)usectypestointerfacewithclibrariesforperformance.2)createc-stylearraysfornumericalcomputations.3)passarraystocfunctions foreffientientoperations.how、how、becuutiousmorymanagemation、performanceo

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。