WeQuant教程—1.5 實盤運行須知

爲了保證明盤交易程序可以正常穩定地運行,同時保護您在使用時帳戶資金的安全,咱們設計了一些規則和機制。瞭解這些機制有助於您更快上手實盤交易。

啓動前檢查機制

在實盤交易程序啓動前,系統會執行一次檢查,出現如下異常時實盤不可啓動:安全

  • 若當前實盤所對應的API key或策略已被刪除,則當前實盤不能啓動;
  • 同一個API key對應的實盤交易程序同時最多隻能有一個在運行,若當前實盤所配置的API key已被其餘運行中實盤佔用,則該實盤不能啓動;
  • 爲保證帳戶資金安全,只有運行過回測的策略才能運行實盤,您能夠參考回測結果來決定是否運行該策略的實盤。

運行保護機制

運行中(或着正在執行啓動前檢查)的實盤,不能更改當前實盤的策略&API key配置,且當前配置的策略&API key被鎖定,沒法進行編輯或刪除操做,直到實盤中止運行時解鎖。函數

異常中止機制

當實盤交易程序在運行過程當中遇到如下異常狀況時,默認會報錯並自動中止運行:設計

  • 在啓動實盤時,若檢測到策略代碼自己有語法、格式等方面的錯誤,系統會報錯並啓動失敗;
  • 當實盤程序運行過程當中遇到運行時錯誤,系統會報錯並中止實盤;
  • 當實盤運行過程當中檢測到API key失效時,系統會報錯並中止實盤;
  • 當實盤程序運行過程當中獲取到的行情推送延遲太高時,爲了防止延遲致使錯過合適的交易時間(延遲超過frequency週期時甚至會觸發錯誤的交易信號)致使用戶損失,系統會報錯並自動中止實盤程序;
  • 爲了簡化運算場景、避免計算異常,實盤程序每次執行handle_data函數時都會檢測帳戶資金狀況,若含有有凍結資產、含有借貸、含有非策略指定交易品種持倉時,系統都會報錯並自動中止實盤程序;
  • 實盤程序運行過程當中,在每一次新的frequency週期到來以前都會先取消當前frequency週期內發起但未完成的訂單委託,以避免出現重複下單的狀況,若發生訂單取消超時的狀況(基本不會遇到),系統會報錯並中止實盤程序。

以上這種嚴格的異常中止機制可以在最大程度上保證明盤運行的準確性和安全性,但也在必定程度上喪失了連續性和容錯能力。因此咱們額外提供了實盤運行異常時的自動重啓和錯誤恢復功能,從而實現實盤程序持續長久託管運行,您能夠在新建/設置實盤交易時自行選擇是否開啓(默認不開啓)。如下是兩個功能的介紹:日誌

自動重啓功能

用戶開啓自動重啓選項之後,若實盤運行過程當中因出現異常而自動中止,則系統會在實盤中止24小時內不斷嘗試重啓,直到該實盤啓動成功正常運行爲止。重啓做爲一個新的實盤運行實例,與啓動實盤策略邏輯相同(從下一個frequency週期開始運行,輸出日誌有重啓提示,並推送啓動通知),目前不保留中間狀態。下次中止時若是自動重啓選項開啓,則從新計時,相同操做。用戶點擊中止則不會觸發重啓。(注:這個功能不能徹底保證明盤策略執行的連續性,若是用戶實盤是在frequency週期的末尾臨界時間結束並退出,跨frequency週期重啓時,因爲是等待下一個frequency週期到達,則會出現跳frequency週期的執行,所以,這個功能不是萬能的。因此有了下邊個功能設計。)基礎

錯誤恢復功能

用戶開啓錯誤恢復選項之後,則實盤在運行過程當中出現異常並不會馬上中止運行, 而是會保留現有的運行時上下文,等待下一個frequency週期到達後(若是行情推送沒有按時到達,則記爲一次恢復失敗,繼續等待下一個frequency週期),執行新的handle_data()函數(上一個handle_data函數已經執行完畢,或已經被Kill)。(這裏須要注意潛在運行風險,若是用戶依賴歷史運行狀態,例如經過user_data來計算趨勢,則在跳過上一個frequency週期,直接運行下一個frequency週期的handle_data函數時候,可能會使趨勢的判斷不許確,形成策略異常。)錯誤恢復時,會對現有的訂單記錄、持倉記錄進行合併,缺失的分析指標基礎數據會進行插值,輸出錯誤恢復日誌,並附帶錯誤恢復計數。每一次錯誤恢復,錯誤計數加1,連續5次錯誤恢復就錯誤恢復計數爲5,第六次錯誤恢復不進行恢復,直接退出。若是錯誤恢復成功,則錯誤計數清零。配置

中止保護機制

不管是您手動中止實盤,仍是實盤運行中出錯自動中止,系統都會在中止時撤銷您當前委託中的訂單,以避免形成損失。(當您的實盤程序是因API key失效致使自動中止時,系統沒法撤銷您當前委託中的訂單)語法

相關文章
相關標籤/搜索