與Backtest (回測)有關的常問問題

這個分頁專注於回答與回測(Backtest)相關的常見問題。回測是MT4(MetaTrader 4)中一個重要的功能,它可以幫助您評估和優化交易策略。

在這個分頁中,您將了解如何執行回測、評估回測結果、解讀回測報告以及避免常見的回測陷阱。無論您是初學者還是有經驗的交易者,這裡都有您需要的信息和指導。

做一次BT要幾耐係無標準答案的。BT要做幾耐會受到以下因素影響:

  • 做緊咩EA嘅BT.. 有些EA會行得快些, 有些EA會行得慢些
  • EA嘅設定參數係咩
  • 如用AI CAD嘅EA, 要睇你有冇set Full Speed Mode.
  • BT嘅時期, 1個月? 1季? 1年? 10年?
  • BT嘅timeframe係幾大?
  • 電腦硬件

在此, 我比個參考大家。我2024年1月買新電腦時做咗個非常之唔詳盡同唔認真嘅Benchmarking, 測試吓部新desktop 同現有laptop嘅速度有幾大。

新Desktop: i5-12400/64GB DDR4
現有Laptop: i5-7200U/16GB DDR4
MT4 版本: Alpari MT4 Build 1403
EA: Ace Kirin v5.7
Symbol: NZDUSD
BT Period: 2022.01.01 – 2023.12.31

舊機需時: 3:40 (220秒)
新機需時: 2:10 (130秒)

快咗41% 🎉

如覺得自己部電腦BT特別慢,第一樣建議做嘅事係請同學幫手以同一個settings BT一次,看看你BT所需的時間是否真的特別慢。

當我覺得BT要做好耐時, 唔該得一樣嘢走去check吓你個set file。

  • 做BT時, 做把”Full Speed (for testing/optimize)” 設定為 true

人地已經把這個排係第一位, 你都唔理…. 

 

回測的時間長短取決於多個因素,包括回測的數據量、選擇的時間範圍、所使用的計算資源等。一般而言,回測可以是一個相對耗時的過程,特別是當使用大量的歷史數據進行詳細的分析時。

但如果你發現你的電腦配置跟別人差不多, 但回測的時間卻長很多, 可能是你的電腦/作業系統設定不佳

如你用的是筆記本電腦, 請先參閭以下文章:

如果是桌上型電腦,請參閱以下文章:

每一部電腦只能享用免費試用一次。

  • 你用另一個email去申請多一次試用也改不了這事實。
  • 就算你uninstall咗個軟件再安裝也改不了這事實。
  • 重裝Windows得唔得? 我未試過…. 但你估呢?  就算得, 值得去做嗎?

萬事皆有可能。

唔識crack?  我都唔識… 但可以上網找…但找都你敢用嗎? 花咁多時間去找值嗎(仲可能找唔到)? 如真係想找,我只會去問度娘…. 

乖乖比錢買License吧!!!

在MT4 Strategy Tester中的”Use tick data” checkbox不見了的最主要原因是MT4找不到 Tick Data Suite 的 service 服務程式。

一般這是因為:

  • Tick Data Service 死晒…. 
  • Tick Data Suite嘅License過期…
  • Tick Data Suite比你uninstall咗…

這時你可以從Windows的Start Menu 中啟動 Tick Data  Suite support assistant。

  • 在 License 分頁中你應要看到License 未過期, Last license autehntication應係一個好近嘅日期/時間。
  • 在 Maintenance 分頁中你應要看到 “The Tick Data Suite service is running”字句。  如未行, 就按”Start TDS Service”試吓。

出現「No tick data avilable for the selected symbol and source with the configured data range.」就是因為就針對要進行回測的symbol(例如貨幣對 audcad),相關日期的tick data不在存。

這很可能是因為

  • 你根本沒有下載過相應的symbol的tick data
  • 你過往曾下載過,但只是下載某個時段的的tick data (如2022-01-01至2024-03-31)。但現在你要回測的時段包括了2024年4月,或是由2022-01-01年之前開始。

解決的方法很簡單,只要啟動Tick Data Manager,然後把相應的數據下往便是了。

這很有可能是EA在啟動時發生問題,例如找不到授權檔或授權已過期。

這時,你可以去MT4 Strategy Test 中的”Journal” (日誌)那一分頁去查請相關信息。

首先,請確保你用緊正確嘅EA。唔好試把 EA A 的設置檔(set file)載入去 EA B度。

其次,留意:

  • 設置檔所放的路徑(即由根目錄開始的文件夾名)是有否中文字
  • 設置檔的名稱是否包含中文字

如是,請把中文字刪去。MT4因為係好舊嘅程式,當時在處理非英文字串上的編程技術還沒有標準化 (如你懂什麼是unicode應明白我講緊咩),故在處理中文字串上有可能會出現問題 (即MT4可能load到一個中文設置檔, 但又load唔到第二個)。

 

註: 在處理中文字串上有可能會出現問題亦代表只要你用的中文字是可以被處理就不會有問題。至於如何知道一個中文字是否被支援, 這涉及較深的電腦知識,這裡就不詳談了。不懂的就用全英文的名字吧。

Strategy Tester中的Symbol dropdown的選項是基建於MT4中的Market Watch。

你找不到想要BT的貨幣對,請先在查看Market Watch中有沒有那Symbol。當然,你也可以直接在Market Watch中右搫,再點選「Show All」來把所有的Symbol加進Market Watch內。

更新Market Watch後可能需要重啟MT4。

留意在visual mode進行時,有個input slider係可以調較速度的。

可以考慮以下嘅做法:

  • 把BT時期的結束日期推遲 (例如推遲一個月)再進行回測。
    • 這樣做是要確保你口中未平的單最終是能夠在有盈利的情況下平倉。因為BT結束時強平的單所做成的虧損利應不會用BT結果有很大的影響(假設你BT的時期夠長, 如兩年)。因這虧損而對BT做成重大影響可以意味著當時夾倉很嚴重。能否順利渡過也一個問題。
  • 當推遲結束日期後得到一個理想結果後,你也可以考慮打把結束日期推早,推早到你套強平的單未開前的日子再進行回測。

請確保以下幾點:

  • 你們用的是相同版本的EA
  • 你們進行BT的設定是一樣的, 當中包括(但不限於):
    • spread
    • BT用的period
    • 起始本金
    • BT的日期範圍
    • 你們使用了相同的Broker環境來進行回測

註: 每次BT結果都可能出現輕微的差別, 如Profit可能有幾美元的出入,這是正常的。

這是因為不同的Broker (CFD券商)所保留給客戶來進行回測做資料可能不同。例如數據不全, 可以顯示的BAR數不同, 出針 等等。在這大前題下,即使使用了Tick data,但基於MT4/MQL4自身的設計/限制,回測結果也會受到影響。

因此,我們需要使用相同、獨立的第三方環境去進行回測,以確保大家使用相同EA設定進行的回測結果一致。

其實情況同上面「為何使用不同Broker環境來進行回測會影響回測結果?」的答案差唔多。除此之外

  • 真倉broker的點差是浮動的,異常大點差可以令你走到單 (或走唔到單)。
  • 在EA設定中,也有設定是在點差大過設定值時不開單。
  • 另在BT結束時,BT會強制平倉… 這樣套單可能佰出現較大的虧蝕。但在行真倉時,那樣單只會為你帶來浮動盈虧(DD)。

Anyway,就算兩個同一個broker的真倉, 行同一settings, 也可能表現不同。形況同兩個人用同一個價位排隊買股票一樣, 可以一個成交到, 但另一個就成交唔到。故此,不要期望BT 到真倉的結果。

站在學術研究或辯論角度來說, 有人可i能會話BT係完無意義的。理據可能係因為你BT用的是歷史數據, 你行真倉是用實時數據。而歷史數據可能與實時數據一點關係也沒有。故兩者出來的結果不能100%保證有關聯。

但不能100%保證就是沒意義?? 這也未免太過極端。歷史數據來做回測是去了解EA在使用特定settings時的表現,例如DD、profit 有幾大等。這有助我們去預測EA的表現。

再簡單點: 阿Sir叫你去做咁咪去做囉… 總之照跟… 日後你就會明為何要做。

一份EA回測報告的準確性決定了該測試是否具備參考的價值,而測試的準確程度又取決於數據是否精細與齊全。而在MT4的EA回測報告中,有一個指標叫做復盤模型質量(Modelling quality),可用於衡量測試的精確度,最優秀的質量即為99.9%。

想達到99.9%數據質量的前提,是測試中所使用的交易品種,需擁有完備的歷史價格資料,可是一般外匯經紀商提供的歷史價格數據都有不少的缺漏,所以,假若只是單純使用外匯經紀商提供的歷史價格數據來進行EA回測的話,報告的質量幾乎不可能高於90%。因此,我們就需要通過其他軟件,以獲取更詳細的交易產品歷史價格,好用來提高測試的質量。這也是為何我們要另外購買 Tick Data Suite的原因。