AlgoVesta › 用語集 › 冪等性

注文執行

冪等性

冪等性とは、同じ操作を複数回行っても、1回行った場合と同じ結果になる性質のことです。取引自動化においては、シグナルが二重に配信されたり、ネットワークエラーの後に注文リクエストが二重に送信されたりしても、結果が1つのポジションになり、2つにはならないという性質を指します。

なぜ重要か

重複はメッセージングシステムでは普通に起こります。Telegramは編集されたメッセージを新しいイベントとして配信することがあり、Webhook送信元は迅速な確認応答が得られないと再送を行い、トレーダーが「テストシグナル送信」を二度クリックしてしまうこともあります。冪等性がなければ、重複はそれぞれが実際の証拠金を伴う実際の注文になってしまいます。この問題が最も深刻になるのは、まさにシステムがストレス下にあるとき、つまり取引先の遅延や障害の間であり、そのときこそ再試行や重複配信が増える時です。

AlgoVestaでの扱い

AlgoVestaは複数の箇所で冪等性を適用しています。受信したTelegramメッセージはそのメッセージ識別子で記録されるため、同じメッセージが二度処理されることはありません。重複防止機能は、同一口座・同一シンボル・同一方向の2つ目のシグナルを短い時間枠内で拒否し、再投稿や二重クリックを吸収します。この拒否はサイレントに破棄されるのではなく、理由とともにログに記録されます。発注は、あいまいな失敗の後に無条件で再試行されることはありません。プラットフォームは取引所のポジションと取引履歴と照合し、次の行動を取る前に注文が実際に存在するかどうかを判断します。各戦略には独自のWebhookトークンがあり、各執行はそれを引き起こしたシグナルに紐づけられているため、同じシグナルが2つの経路で執行されることはありません。リトライ(再試行)ロジックとTradingViewボットページをご覧ください。

例

あるTradingViewアラートが1分足チャートに設定されており、戦略の設定の都合で、同じ足の中で同一のメッセージが2回発火してしまうとします。最初のリクエストはETHUSDTでロングを開きます。2回目は20秒後に到着し、時間枠内の同一シンボル・同一方向として重複防止機能により拒否されます。これはシグナルログに重複を理由としてブロック済みと表示され、2つ目のポジションは開かれません。

よくある間違い

実践例

AlgoVestaがこれを自動化する方法を見る