AI 智能交易顧問測試與優化指南 | Deriv Blog

透過正確的測試技巧完善您的 AI 智能交易顧問。本指南涵蓋常見問題、測試方法,以及智能交易顧問優化技巧,助您打造可靠的交易機器人。

Deriv 編輯團隊 · 2025年4月21日 · 4 分鐘閱讀

Share

AI 交易智能顧問已經登場——但您仍然需要測試並加以完善。

如果您已經使用 Claude 或 ChatGPT 等 AI 工具,為 Deriv MT5 建立智能交易顧問,或為 Deriv cTrader 建立 cBot,那您已經有了很好的開始。但即使程式碼看起來正確,仍可能存在影響機器人運作的錯誤。

在即時市場中執行您的智能交易顧問(EA)之前,測試它並確保其運作符合預期非常重要。

在本指南中,我們將說明 AI 生成的 EA 中常見的程式碼錯誤、如何修正,以及提升機器人表現的實用技巧。

常見的 AI MQL5 程式碼錯誤

以下是 AI 生成的 EA 中最常見的一些問題,以及修正方法:

  • MQL5 中的未宣告識別碼錯誤

當機器人使用尚未正確定義的變數或名稱時,就會出現此錯誤,例如缺少參數,或在 iMA() 等指標中使用了不正確的名稱。

修正方法:
檢查指標的參數,並確保所有變數名稱與 MetaEditor(MT5 的程式碼編輯工具)中的預期名稱相符。

  • 缺少買入/賣出交易執行函數

部分 AI 生成的機器人會略過開倉交易的必要邏輯。

修正方法:
手動加入基本的交易執行函數。以下是下達買入訂單的基本結構範例:

void OpenBuy() { 

   MqlTradeRequest request; MqlTradeResult result; 

   request.action = TRADE_ACTION_DEAL; 

   request.type = ORDER_TYPE_BUY; 

   request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK); 

   request.volume = 0.1; request.magic = 12345; 

   OrderSend(request, result); 

}

也請務必加入賣出訂單的邏輯,並定義應在何種條件下執行交易。

  • Deriv cTrader 中的迴圈條件不當

在 Deriv cTrader 中,機器人的邏輯需要在 OnBar() 或 OnTick() 等特定函數內執行。這些函數會在市場變動時自動觸發。如果您的程式碼放在這些區段之外,例如放在錯誤的迴圈或全域範圍中,就無法如預期運作。

修正方法:

確保 bar 和 tick 的處理位於 OnBar() OnTick() 之內。這樣您的機器人才能在回測和即時交易中,正確回應新的 tick 或 bar。

  • 依餘額百分比計算手數時出錯

當 AI 嘗試依您的帳戶餘額設定手數時(例如每筆交易承擔 2% 風險),可能會忽略一個重要細節——合約規模。這可能導致手數不準確。這不會觸發程式碼錯誤,但在測試中,您會看到交易規模與風險設定不符,進而在即時交易中造成過度曝險或曝險不足。

修正方法:
使用納入合約規模的手數計算公式,例如:

//-----------------------------------------------------------------

double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE);

double riskMoney = accountBalance * (RiskPercent / 100.0);

double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);

double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);

double pointValue = tickValue / tickSize;

double contractSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE);

if(contractSize > 0)

pointValue = pointValue / contractSize;

double lotSize = riskMoney / (StopLossPoints * pointValue);

double minLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);

double maxLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);

double lotStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);

lotSize = MathMax(lotSize, minLot);

lotSize = MathMin(lotSize, maxLot);

lotSize = MathFloor(lotSize / lotStep) * lotStep;

  • 其他錯誤

如果您遇到上述任一錯誤——或任何其他錯誤——您隨時可以請 AI 模型協助找出並修正問題。

只需複製錯誤訊息和相關程式碼,然後提供給 AI 模型。大多數情況下,它應能找出問題所在,並提供修正方法或建議可能的解決方案。

小提示:上線前務必先執行回測。這類問題在您使用真實市場數據測試策略之前不會顯現。

改善您的 AI 生成智能交易顧問

機器人運作正常後,您可以進行一些小調整,以提升其表現與穩定性。以下是幾個常見做法:

  • 加入錯誤處理邏輯,以因應高波動或連線問題期間的非預期行為。
  • 使用移動止損,在市場朝您有利方向移動時鎖定潛在獲利。
  • 以歷史數據回測您的策略,了解其過往表現。
  • 整理並組織您的程式碼,以提升可讀性與效率。這將使日後更新或疑難排解更加容易。

小提示:使用 MetaEditor Debugger(在 MT5 上)逐步測試機器人的執行過程。

為什麼回測交易至關重要

AI 生成的機器人是自動化交易的絕佳方式,無需從頭編寫程式碼。但即使有 AI,您的策略仍需要人工檢查與調整,才能在即時環境中良好運作。

上線前,請花時間徹底測試並進行小幅改善。即使是細微的修正,也能大幅提升您的 EA 表現的一致性與有效性。

Join 3M+ global traders

Open an account in minutes and start trading the world's markets — forex, stocks, indices, and more.