AI 專家顧問測試與優化指南 | Deriv Blog
透過正確的測試技巧,讓您的AI專家顧問更臻完善。我們的指南涵蓋常見問題、測試方法,以及專家顧問優化技巧,協助您打造更可靠的交易機器人。
Deriv 編輯團隊 · 21 April 2025 · 3 分鐘閱讀

AI交易專家顧問已經登場——但您仍然需要測試並持續優化它們。
如果您已經使用Claude或ChatGPT等AI工具,為Deriv MT5建立專家顧問,或為Deriv cTrader建立cBot,那麼您已經踏出了很好的第一步。但即使程式碼看起來正確,仍可能包含會影響機器人運作方式的錯誤。
在您於真實市場中執行專家顧問(EA)之前,先進行測試並確認其運作符合您的預期,這一點非常重要。
在本指南中,我們將說明AI生成的EA中常見的程式錯誤、如何修正,以及提升機器人效能的實用技巧。
常見的AI MQL5程式錯誤
以下是AI生成的EA中最常見的一些問題,以及相應的修正方式:
- MQL5中未宣告的識別碼錯誤
當機器人使用了尚未正確定義的變數或名稱時,就會出現這個錯誤,例如缺少參數,或在像iMA()這類指標中使用了錯誤名稱。
修正方式:
檢查指標參數,並確認所有變數名稱都與MetaEditor(MT5的程式編輯工具)中的預期一致。
- 缺少Buy/Sell交易執行函式
有些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()等特定函式內執行。這些函式會在市場變動時自動觸發。如果您的程式碼放在這些區塊之外,例如放在錯誤的迴圈或全域範圍中,就不會如預期執行。
修正方式:
請確保K線與跳動點的處理都在OnBar() 或OnTick()內完成。這樣您的機器人才能在回測和真實交易期間正確回應新的跳動點或K線。
- 根據餘額百分比計算手數時發生錯誤
當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在執行時的一致性與效率。