前回の記事では、イベント、データ ストレージ、個別の構成の使用など、取引ソフトウェアを開発するためのベスト プラクティスについて説明しました。今回は、戦略的な部分、具体的にはアーキテクチャの観点から効果的に組織する方法について掘り下げてみましょう。
最も単純なアプローチは、システムのこの部分が価格変動などの入力データを受け取り、イベント、つまりシグナルを生成すると想定することです。すべてのロジックはこのモジュール内にカプセル化できます。以下に例を示します:
def run(self, event): signal = self.calc_rsi(event) if signal != 'FLAT': self.create_event(event, signal)
この例では、RSI を計算し、それに基づいて買いや売りなどのイベントを生成します。これは基本的な図ですが、コンセプトは明確です。シグナルには希望の売買価格が含まれる場合があります。もちろん、実際の取引アルゴリズムはより複雑ですが、それはすでにご存知です!
残高やオープンポジションに関するすべてのデータを 1 か所に集めておくと便利です。こうすることで、USD または BTC での合計保有額がわかります。この知識は、システムがシグナルを生成するときに注文のサイズを決定するために不可欠です。
def run(self, event): # Calculate USD values # Calculate targets # Check targets # Generate orders
この疑似コードは次の手順の概要を示します:
すべての残高データ、シグナルを取得し、ポジションが希望のポジションと一致しているかどうかを確認し、一致していない場合は注文を生成します。
このモジュールは、Portfolio モジュールと密接に関連しています。特に少額の管理を始めたばかりの場合は、リスク管理ロジックをその内部に直接実装できる場合があります。大企業の場合、これは最も複雑なシステム要素となる可能性があり、各企業が正確なアルゴリズムを定義しています。リスク管理内で対処できるいくつかのタスクを次に示します:
市場に長くいるほど、取引アルゴリズムのこの部分の重要性が高まります。
すべての価格と残高のデータを取得し、シグナルを生成し、最適なポートフォリオのサイズを計算し、考えられるすべてのリスクを考慮した後は、取引所に注文を送信しない理由はありません。複数の取引所にまたがる注文ルーティングを実装していない限り、これは最も単純な部分のように思えるかもしれません。通常、注文を正しくフォーマットし、取引する取引所に送信します。
4 つのモジュールの機能について説明しました。それぞれのモジュールは取引アルゴリズムの 90% で役立ちます。コードを構造化し、適切なアーキテクチャを選択すると、取引システムの保守と更新の負担が大幅に軽減されます。
完全なコードは、aspis.finance のオープンソース取引アルゴリズムとして利用可能になります。これにはいくつかの簡単な取引戦略が含まれますが、重要な機能は、Aspis スマート コントラクトを通じてストレージを作成し、投資家の資金を引き付け、透明性のある利益分配を確保する機能です。戦略を開発して Aspis に接続すると、アルゴリズムが DEX で取引され、投資家とマネージャー (あなた) はスマート コントラクトを通じて利益を得ることができます。乞うご期待!
以上が取引システムのコンポーネントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。