moomoo JP ヘルプセンター-例外のキャッチについて
donwloadimg

アプリをダウンロード

ログイン後利用可能
トップに戻る

例外のキャッチについて

例外をキャッチする方法

アルゴ取引でインタフェースを呼び出す時に例外が発生する場合、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つの例を通して、この両方の関係を説明します。

例1:例外をキャッチしない場合

この例では、「セルフコード条件」を使用せず、例外設定に「今回の実行をスキップします」を選択します。

戦略は「再試行不可な買い注文」まで実行されるとき、注文に失敗した場合、例外設定に従って今回の実行がスキップされます。このため、次のブロックが実行されなくなります。次回の実行トリガーが発生するのみ、「再試行不可な買い注文」が再度実行されます。

例2:例外をキャッチする場合

この例では、「セルフコード条件」を使用することで、エラーコードをキャッチし、成功するまで注文を繰り返して出します。また、例外設定には変わらず「今回の実行をスキップします」を選択します。

戦略は「再試行可能な買い注文」まで実行されるとき、注文に失敗した場合、コードのロジックに従って、例外をキャッチし、成功するまで注文を繰り返して出します。その後、「注文完了としてマーク」が実行されます。このため、例外をキャッチできる「セルフコード条件」に例外が発生する場合、グローバル設定の例外処理に従って実行されることではなく、ブロックが先に例外をキャッチします。

リスク開示 これらの内容は、情報提供及び投資家教育のためのものであり、いかなる個別株や投資方法を推奨するものではありません。こちらの投資情報は説明目的の用途でのみ提供されており、すべての投資家にとって適切であるとは限りません。また、こちらの内容には何人の投資家の個人的な投資目的、経済状況についての考慮は含まれておらず、個人への投資アドバイスではありません。投資家の皆様が投資判断を下される際には、ご自身の状況に基づき、情報の適切性のご検討をお願いいたします。過去の投資実績は、将来の成功を保証するものではありません。すべての投資は、リスクや元本割れの可能性を免れることが出来ません。moomooは、上記内容の真実性、完全性、正確性、いかなる特定の目的への適時性について、何の表明や保証もいたしません。