富途牛牛幫助中心-主動發現異常,讓策略更有效
繁體中文
返回

主動發現異常,讓策略更有效

如何主動發現異常

程式演算交易功能的接口在使用出現異常時,會指出 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:有主動發現異常

在下圖例子中,我們使用自定編碼卡片,主動尋找異常錯誤碼後重新提交訂單直至成功。整體的異常仍設定爲“跳過本輪運作”。

所提供的圖片並非最新圖片,任何證券或輸入內容僅用於說明目的,並非推薦。

假設,當策略運作到“有異常重試的下單開倉”卡片時,第一次提交訂單失敗。

按照圖中的代碼邏輯,發現到異常後,重複提交訂單直至成功。之後會運作下一張“完成標記”卡片。因此,在有異常的自訂編碼卡片中,異常在發生後,會先被卡片發現,不會再執行整體的異常設定了。

本內容僅用作提供信息及教育之目的,不構成對任何特定証券或投資策略的推薦或認可。本內容中的信息僅用於説明目的,可能不適用於所有投資者。本內容未考慮任何特定人士的投資目標、財務狀況或需求,並不應被視作個人投資建議。建議您在做出任何投資於任何資本市場産品的決定之前,應考慮您的個人情況判斷信息的適當性。過去的投資表現不能保証未來的結果。投資涉及風險和損失本金的可能性。本平台對上述內容的真實性、完整性、準確性或對任何特定目的的時效性不做任何陳述或保証。