策略優化

From FxCodeBaseWiki
Jump to: navigation, search

優化 Lua

首先,請參閱 Lua 效能優化提示:lua-users.org 上的優化提示

正確處理用途

指標用於計算。策略用於制定交易決策。已經說得非常清楚了!

每次當您必須執行讀取和比較最新指標值或價格之外的操作時,您在嘗試制定指標而不是策略。

理想的情況是,有一個指標(或多個指標)實現所有邏輯,並返回 -1(代表賣出)、1(代表買進)和 0(代表無操作)之類的結果。策略必須僅讀取這些命令並呼叫終端功能進行交易。

這一點很重要,因為指標計算是高度優化的。如果指標編寫良好,則只會對以前從未計算過的資料呼叫指標,並且指標會以最快的速度執行計算。策略對每個價格點 (tick) 執行所有計算。

使用快速指標

策略使用的指標也必須是最優的。請使用指標偵錯器 (Indicator Debugger) 檢查指標效能。如果效能不足,請嘗試優化指標程式碼(請參閱指標優化)。

避免對每個價格點執行頻繁操作

存取交易表格

若非確實有必要,請勿涉及交易表格。存取交易表格這種操作代價很高。請儘量少涉及交易表格。順便說一下,在 SDK 2.0 版本中,有一個 version 方法值,它表明表格內容已變化(新增或移除了行)。應該將此資訊保留在策略中,並且僅在表格版本發生變化時進行更新。遺憾的是,匯圖寶目前的產品正式版不支援此方法,但此方法有助於改進回溯測試/參數優化。

此外,如果設計的策略經常進行交易(例如,基於價格點),但依靠交易表格來檢查使用者是否已進行了交易,這樣是非常不安全的。請記住,根據實際的網路連線情況,交易或訂單表格中的資訊更新時間可能比實際執行交易/訂單的時間滯後一秒以上。

避免不必要的指標更新

如果策略使用基於棒線資料的指標並應用於最近完成的棒線,請勿針對每個價格點強制更新指標。

使循環體儘量小

在迴圈之外進行所有可能的計算。不要忘記 Update 函數也是大循環的一部分。如果存在可切換模式的策略參數,請將用於實現所選模式的函數的引用資訊儲存在 Prepare 函數中,而不要總是採用 if ... elseif ... end 的結構。

其他語言版本

Language: English  • español • français • русский • 中文 • 中文(繁體)‎