AlgoVesta › 用語集 › リトライロジック

注文執行

リトライロジック

リトライ(再試行)ロジックとは、取引所またはブローカーへの失敗したリクエストを再送するかどうか、何回、どのくらい待ってから再送するか、そして最も重要な点として、繰り返すと二重発注になり得るためどのリクエストを絶対に再送してはならないかを決める一連のルールのことです。

なぜ重要か

ネットワークや取引先は、外部から見ると同じように見える形で失敗します。タイムアウトは注文がそもそも到達しなかったことを意味することもあれば、受け付けられたのに確認応答が失われたことを意味することもあります。読み取り(残高、ポジション、注文状況)の再試行は無害ですが、あいまいな失敗の後に発注を再試行すると、ポジションが二重になる可能性があり、これは1回の取引を逃すよりも悪い結果です。再試行はレートリミットとも関係します。取引先の障害中に再試行が連続すると、IPやキーが一時的にBAN(利用制限)されることがあり、そのサーバー上の他のすべての口座も巻き込んで停止させてしまいます。

AlgoVestaでの扱い

AlgoVestaは読み取りと書き込みを区別します。ポジションの取得などの読み取りリクエストは、短い待機の後に1回だけ再試行されます。発注についてはタイムアウト後に無条件で再試行することはありません。確認応答が失われたことは、注文が失われたことの証明にはならないためです。代わりにプラットフォームは取引先と照合します。取引所のポジションと取引履歴が確認され、実際に発注されていたことが判明した注文は重複させず記録されます。重複防止機能は、同一口座・同一シンボル・同一方向の2つ目の同一シグナルを短い時間枠内で拒否するため、提供元がメッセージを再投稿しても2つのポジションが開かれることはありません。取引先がレートリミットまたはBANの応答を返した場合、影響を受けたキーまたはサーバーは取引先を叩き続けるのではなく後退し、その状態はダッシュボードに表示されます。作成に失敗した保護注文は再試行のうえ検証され、フォレックス口座ではストップが確認できないポジションは設計上クローズされます。冪等性と取引所のレートリミットをご覧ください。

例

0.05 BTCを購入する注文が、応答のないまま10秒後にタイムアウトします。AlgoVestaはそれを再送しません。代わりに口座のオープンポジションと直近の約定を照会し、その注文に一致する新規の0.05 BTCのロングポジションを見つけ、取引所の約定価格とともにそれを記録し、ストップとターゲットを設定します。もし照会結果が何もなければ、そのシグナルはタイムアウトの理由とともに失敗として記録され、トレーダーは意図的にそれを再送できます。

よくある間違い

実践例

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