アルゴ取引でインタフェースを呼び出す時に例外が発生する場合、APIExceptionがスローされます。APIExceptionのerr_codeプロパティには、具体的なエラーコード情報が含まれています。これらのエラーコードは、それぞれのシーンに対応しています。
エラーコード
|
対応シーン
|
ExceedReqLimit
|
リクエストが頻繁すぎるため、制限がかかります。
|
ReqTimeout
|
リクエストがタイムアウトしました。
|
NoQuoteRight
|
データ権限が不足しています。
|
InvalidArgument
|
無効なパラメータ(パラメータの検証に失敗)です。
|
ReqFailed
|
インタフェースのリクエストに失敗しました。
|
NoDataAvailable
|
データなし(NAを返します)です。
|
EmptySymbol
|
パラメータsymbolが空です。
|
Unknow
|
不明なエラーです。
|
戦略を堅牢化するために、戦略の重要な部分でエラーコードをキャッチし、カスタムロジックを実行することができます。
例えば、注文を確実に行うため、「セルフコード条件」を使用することで、注文が失敗する場合に、注文を繰り返して出します。
while True:
try:
place_limit(symbol=self.対象銘柄1, price=2, qty=100, side=OrderSide.BUY, time_in_force=TimeInForce.DAY)
break # 注文が成功します。戦略の循環を終了します。
except APIException as ex:
print('注文に失敗しました。2秒後に再試行してください')
time.sleep(2)
continue # 注文し失敗しました。再試行します。
「セルフコード条件」を使用することで例外をキャッチすることは、グローバル設定の例外処理と比べて、優先順位がより高いです。以下は2つの例を通して、この両方の関係を説明します。
この例では、「セルフコード条件」を使用せず、例外設定に「今回の実行をスキップします」を選択します。
戦略は「再試行不可な買い注文」まで実行されるとき、注文に失敗した場合、例外設定に従って今回の実行がスキップされます。このため、次のブロックが実行されなくなります。次回の実行トリガーが発生するのみ、「再試行不可な買い注文」が再度実行されます。
この例では、「セルフコード条件」を使用することで、エラーコードをキャッチし、成功するまで注文を繰り返して出します。また、例外設定には変わらず「今回の実行をスキップします」を選択します。
戦略は「再試行可能な買い注文」まで実行されるとき、注文に失敗した場合、コードのロジックに従って、例外をキャッチし、成功するまで注文を繰り返して出します。その後、「注文完了としてマーク」が実行されます。このため、例外をキャッチできる「セルフコード条件」に例外が発生する場合、グローバル設定の例外処理に従って実行されることではなく、ブロックが先に例外をキャッチします。
リスク開示 これらの内容は、情報提供及び投資家教育のためのものであり、いかなる個別株や投資方法を推奨するものではありません。こちらの投資情報は説明目的の用途でのみ提供されており、すべての投資家にとって適切であるとは限りません。また、こちらの内容には何人の投資家の個人的な投資目的、経済状況についての考慮は含まれておらず、個人への投資アドバイスではありません。投資家の皆様が投資判断を下される際には、ご自身の状況に基づき、情報の適切性のご検討をお願いいたします。過去の投資実績は、将来の成功を保証するものではありません。すべての投資は、リスクや元本割れの可能性を免れることが出来ません。moomooは、上記内容の真実性、完全性、正確性、いかなる特定の目的への適時性について、何の表明や保証もいたしません。