優化策略參數

From FxCodeBaseWiki
Jump to: navigation, search

什麼是策略參數優化?

策略參數優化是指嘗試找到對某個歷史市場使用策略時最合適的參數。由於市場不是絕對隨機的,您在過去看到的價格行為模式對相同或相關商品而言可能會再次出現。

實際上,找到最佳參數的唯一方式是嘗試所有可能的參數集(換言之,就是對策略進行回溯測試)。這種連續探尋所有可能組合的做法稱為窮舉優化。

但是,如果策略只有兩個整數參數,並且您想在 1-15 的範圍內嘗試第一個參數,在 15-50 的範圍內嘗試第二個參數,這將得出 576 種不同的組合。如果全部嘗試一遍,且每次只需 1 分鐘,找到最佳參數將需要 10 小時。時間太長了,不是嗎?

有一些方法可加速該過程。我們經常不需要真正的最佳參數,找到比較好的參數對我們來說就足夠了。或者,我們可以尋找較小範圍的參數值,將來可使用窮舉優化加以完善。SDK 2.0 可實現對參數的遺傳優化。

如何使用?

首先檢查效能

首先,對打算優化的價格資料範圍進行測試,以檢查策略效能。策略的執行速度必須足夠快,以便在 1 分鐘之內完成測試。較長的回溯測試時間可能會使優化時間過長。使用這種效能衡量方法可開發絕大多數策略。如果策略執行速度過慢,請優化策略或聯絡策略開發人員。

開始優化參數

然後選擇策略偵錯器 (Strategy Debugger) 的 Tools(工具)->Optimize(優化)命令。將顯示策略清單(和回溯測試一樣)。請注意,您可以優化使用者策略和標准策略的參數。選擇了要優化的策略時,將顯示優化參數表單。

該表單看上去非常類似於偵錯回溯測試中的策略參數。第一類參數的填充方式應與進行偵錯和回溯測試時完全相同。

第二類參數用於設定優化器:

Optimize1.png

第一個參數用於管理優化方法。選擇 Genetic(遺傳)在大參數集內確定近似的最佳參數範圍,選擇 Exhaustive(窮舉)在小範圍內尋找最佳參數。

第二個參數管理用於識別參數集是否更合適的衡量標準:

  • Highest balance(最高餘額)尋找提供最高期末賬戶餘額的參數集。
  • Profit factor(盈利因素)尋找產生的盈利交易比非盈利交易多的參數集。
  • Balance and profit factor(餘額及盈利因素)尋找提供餘額和盈利因素乘積最大值的參數集。盈利因素計算為總盈利與總虧損的比率。也就是說,此標準會使以下值最大:
    <math>

FinalBalance \times{\dfrac{TotalProfit}{TotalLoss}} </math>

  • Balance and average profit per trade(餘額及每筆交易的平均盈利)尋找提供餘額與每筆交易平均盈利乘積最大值的參數集:
    <math>

FinalBalance \times{\dfrac{TotalProfit - TotalLoss}{TradeCount \times{InitialBalance}}} </math>

  • Balance and minimal fall of balance(餘額及餘額的最小跌幅)尋找考慮餘額和餘額跌幅的參數集:
    <math>

FinalBalance \times{(1 - \dfrac{MaxFallBalance}{InitialBalance})} </math>

第三個參數用於管理資源使用情況。在預設情況下,優化器將嘗試使用所有可用的資源。如果您在執行某些對時間要求很高的應用程式,可能希望為其保留一部分資源。在這種情況下,請從清單中選擇處理器核數。

相關介紹就是這些。然後您必須設定策略的參數。參數看上去非常接近於偵錯或回溯測試中的參數,但對於可以優化的參數,您可以指定值的範圍而不是單個值。這種參數在參數名稱左側有個小加號:

Optimize2.png

如果按一下加號,將顯示用於輸入最小值和最大值的欄位以及步長。如果在最小值和最大值中輸入不同的值,將為該參數執行優化。

優化

優化器啟動時,它會執行一系列回溯測試器,並尋找最佳結果。您可以在進度條中看到測試的組合數。如果中斷進程,您將看到所有已通過的嘗試的結果。

如果已透過窮舉優化對所有組合進行了探尋,或進一步測試沒有為遺傳優化器提供任何重大改進,優化將會停止。

優化結果顯示位置:

Output(輸出)標籤

輸出標籤顯示使用的優化參數:

  • 要優化的參數及其範圍
  • 對於遺傳演算法:
    • 群體大小(最初探尋的隨機組合數)
    • 進化代數(要改進的最大嘗試數)
  • 優化期間表現出最佳結果的集合編號
Optimize4.png

Optimize Result(優化結果)

Optimize Result(優化結果)標籤包含詳細的表格,表格中記錄了探尋的所有參數集以及探尋期間收集到的所有統計資訊。完全不盈利的參數集以紅色顯示。找到的最佳參數集以綠色顯示。

Optimize5.png

Optimize Result Graph(優化結果圖)

Optimize Result Graph(優化結果圖)標籤將優化結果顯示為二維圖形。您可以從優化的參數中選擇任意兩個參數作為軸。綠色儲存格顯示有利的結果且越綠越好,紅色儲存格顯示不利的結果。白色儲存格顯示完全沒有嘗試過的集合。

如果儲存格中有多個結果(例如,如果有三個參數要優化),一個儲存格可以分割為幾個較小的儲存格,其中每個儲存格可能有不同的顏色。

按一下儲存格可獲取詳細資訊。

Optimize6.png

調整群體大小/進化代數參數

如果不喜歡優化結果,可以重新執行優化並指定遺傳優化參數(初始群體大小和進化代數),而不是使用預設值:

Optimize3.png

如果初始群體大小較大,在首次嘗試優化時會強制嘗試較多數量的集合。如果初始群體大小等於所有可能參數集的大小,遺傳優化的工作方式會與窮舉優化完全相同,即嘗試所有可能的變數。

群體大小較小可使優化過程較快,但會增加完全沒有探尋某些參數群組的風險。

進化代數用於管理優化器將需要多長時間來嘗試找到較好的變數。最大值會使過程時間較長,但會增加找到較好參數的機會。

初始群體大小和進化代數預設值的計算方法為:

<math>

\mbox{population} =
\begin{cases}
\mbox{set size} & \mbox{set size} < 25 \\
\frac {\mbox{set size}} {2} & 25 \le \mbox{set size} < 256 \\
2^{\operatorname{log}_{10}(\mbox{set size} + 1.5)} & \mbox{otherwise}
\end{cases}

</math>


<math> \mbox{generations} =

\begin{cases}
  1 & \mbox{set size} < 256 \\
  2^{\operatorname{log}_{10}(\mbox{set size} + 2)} & \mbox{otherwise}
\end{cases}

</math>

其中,一組有 n 個參數的集合的大小為:

<math> \mbox{set size} = \sum_{i=1}^n {(\frac{\mbox{max value}_i - \mbox{min value}_i} {\mbox{step}_i} + 1)} </math>

亦請參閱

使用 SDK 2.0 優化策略參數(逐步說明)

其他語言版本

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