AI 智能交易顧問測試與優化指南 | Deriv Blog
透過正確的測試技巧完善您的 AI 智能交易顧問。本指南涵蓋常見問題、測試方法,以及智能交易顧問優化技巧,助您打造可靠的交易機器人。
Deriv 編輯團隊 · 2025年4月21日 · 4 分鐘閱讀

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 表現的一致性與有效性。