algo-trader - リアルタイム取引、バックテスト、カスタム戦略などをサポートする取引ボット。

(Trading bot with support for realtime trading, backtesting, custom strategies and much more.)

Created at: 2021-09-14 14:47:59
Language: Python
License: MIT

アルゴリズムトレーダー

取引戦略ビルダー、バックテスター、およびリアルタイムトレーダー。

イントロ

アルゴリズムトレーダーは、アルゴリズム取引戦略の実行者とバックテスターの実装です。 戦略をローカルでバックテストし、ブローカーAPIを介してリアルタイムで取引することができます。

これは進行中の作業であり、トレーダーは外部市場データと取引プロバイダーを欠いていることに注意してください。 実際の取引にトレーダーを使用する場合は、ブローカーAPIを実装する必要があります。 リアルタイム取引は終了していませんが、バックテストは完全に機能しているため、実装された戦略はバックテストを行い、準備が整ったときに実際の取引で使用できます。

アルゴリズムトレーダーはPythonで書かれており、現在のスタックは以下で構成されています。

  1. バックテスト戦略のためのバックエンドデータストアとしてのMongoDB
  2. チューリップ -チューリップ指標のためのPythonバインディング。テクニカル指標の計算を提供するために使用されます。
  3. ib_client (オプション) - インタラクティブ・ブローカーズ・ゲートウェイと通信するための Python ライブラリー。IBを介して実際の取引を行う予定がある場合にのみ必要です。

建築

システム設計

ソース

ソースは、キャンドルイテレータの実装です。これはパイプラインの開始点であり、処理された着信ローソク足の「ソース」です。

プロセッサ

プロセッサは、パイプラインの主要な処理単位です。プロセッサは、Candleがソースからすべてのプロセッサを介して流れている間、任意の順序で構築できます。 各プロセッサは、処理するローソク足を次のプロセッサに送信する責任があります(送信しない理由がない限り)。

関数は、各ろうそくでSharedContextと呼ばれるオブジェクトも取得します。 コンテキストは、プロセッサ間でコンテキストと情報を共有するためのメモリ内 KV ストアのインスタンスです。

process()

プロセッサ間でデータを共有する別の方法は、キャンドル自体のフィールドを利用することです。 このフィールドは、そのローソク足の時点に関連する計算や状態など、ローソク足のメタデータを対象としています。ろうそくのアタッチメントは、パイプライン全体で永続的です。

attachments

再処理は、プロセッサがすでに処理済みのろうそくを次のプロセッサに再送信できるようにする機能です。 再処理は、パイプラインのメイン フローの外部でロジックを実行するプロセッサに役立ちます。たとえば、イベント、外部トリガー、市場/取引プロバイダーのイベント/問題など... 再処理の例については、アセット相関プロセッサを参照してください。

イベント

イベントは、その名前が示すように、システムで発生したイベントを定義します。 これは、Candlesと同じフローに従い、プロセッサ間を通過します。各プロセッサは、イベントを次のプロセッサに伝達する役割を担います (必要な場合)。

パイプラインはデータ駆動型であり、時間駆動型ではないため、イベントをチェックポイントとして使用して、データ ストリームで発生したことを示すことができます。 たとえば、DB ソースとリアルタイム市場データソースから同じパイプラインを実行すると、プロセッサが時間に依存する場合、異なる効果が生じる可能性があります。

バックテストが役立つためには、DBから高速実行する場合とリアルタイムで同じ動作を行うことが重要です。

戦略

ストラテジーは、ストラテジープロセッサによってろうそくごとに実行されます。 ストラテジーは、トレーディングロジックを実行し、シグナル(ストラテジーシグナル)をディスパッチする責任があります。 ストラテジーがトレーディングシグナルを発している場合、ストラテジープロセッサはそれをキャッチし、実行のためにシグナルエグゼキューターに渡します。

ターミネータ

ターミネータは、パイプラインのオプションの最後の部分です。これは、Source 反復子が完全に消費されたときにパイプラインの最後に実行されます。 ターミネータは、単体テスト、バックテスト、および環境のクリーンアップに役立ちます。

ローカルでの実行

アルゴリズムトレーダーはデータストレージにMongoDBを使用しています。Mongoをローカルで実行するには、使用します。

docker-compose

docker-compose -f docker-compose.yml up -d

仮想環境

仮想環境を使用してアルゴリズムを実行するのが最善です。

python3 -m venv run
source run/bin/activate
pip3 install -r requirements.txt

テストの実行

  • 単位:
    ./scripts/test-unit.sh
  • 統合(IBゲートウェイの実行が必要):
    ./scripts/test-integration.sh
  • すべての:
    ./scripts/test-all.sh

貢献

貢献は歓迎され、大いに必要とされています。 ガイドラインを参照してください。