程式演算交易功能的接口在使用出現異常時,會指出 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個例子來了解它們的關係:
在下圖例子中,我們使用普通卡片,不使用自訂編碼的方式主動尋找異常錯誤碼。整體的異常設定爲“跳過本輪運作”。
所提供的圖片並非最新圖片,任何證券或輸入內容僅用於說明目的,並非推薦。
假設,當策略運作到“無重試的下單開倉”卡片時,提交訂單失敗。此時會按照整體的異常設訂,跳過本次運作。因此,後面的“完成標記”卡片就不會運作。直到下一個訊號觸發策略時,會再次運作“無重試的下單開倉”卡片。
在下圖例子中,我們使用自定編碼卡片,主動尋找異常錯誤碼後重新提交訂單直至成功。整體的異常仍設定爲“跳過本輪運作”。
所提供的圖片並非最新圖片,任何證券或輸入內容僅用於說明目的,並非推薦。
假設,當策略運作到“有異常重試的下單開倉”卡片時,第一次提交訂單失敗。
按照圖中的代碼邏輯,發現到異常後,重複提交訂單直至成功。之後會運作下一張“完成標記”卡片。因此,在有異常的自訂編碼卡片中,異常在發生後,會先被卡片發現,不會再執行整體的異常設定了。
本內容僅用作提供信息及教育之目的,不構成對任何特定証券或投資策略的推薦或認可。本內容中的信息僅用於説明目的,可能不適用於所有投資者。本內容未考慮任何特定人士的投資目標、財務狀況或需求,並不應被視作個人投資建議。建議您在做出任何投資於任何資本市場産品的決定之前,應考慮您的個人情況判斷信息的適當性。過去的投資表現不能保証未來的結果。投資涉及風險和損失本金的可能性。本平台對上述內容的真實性、完整性、準確性或對任何特定目的的時效性不做任何陳述或保証。