Hướng dẫn kiểm thử và tối ưu hóa AI expert advisor | Deriv Blog

Hoàn thiện AI expert advisor của bạn với các kỹ thuật kiểm thử phù hợp. Hướng dẫn của chúng tôi bao gồm các lỗi thường gặp, phương pháp kiểm thử và tối ưu hóa expert advisor để tạo ra các bot giao dịch đáng tin cậy.

Nhóm biên tập Deriv · 21 April 2025 · 6 phút đọc

Share

AI trading expert advisors đã xuất hiện — nhưng bạn vẫn cần kiểm thử và tinh chỉnh chúng.

Nếu bạn đã dùng các công cụ AI như Claude hoặc ChatGPT để tạo một expert advisor cho Deriv MT5 hoặc một cBot cho Deriv cTrader, bạn đã đi được một bước khởi đầu rất tốt. Nhưng ngay cả khi đoạn mã có vẻ đúng, nó vẫn có thể chứa lỗi ảnh hưởng đến cách bot hoạt động.

Trước khi chạy expert advisor (EA) của bạn trên thị trường thực, điều quan trọng là phải kiểm thử để đảm bảo nó hoạt động theo đúng kỳ vọng của bạn.

Trong hướng dẫn này, chúng tôi sẽ cùng bạn tìm hiểu các lỗi lập trình thường gặp trong EA do AI tạo ra, cách khắc phục và những mẹo thực tế để cải thiện hiệu suất bot của bạn.

Các lỗi lập trình MQL5 do AI thường gặp

Đây là một số vấn đề phổ biến nhất thường gặp trong EA do AI tạo ra, cùng với cách khắc phục:

  • Lỗi identifier chưa được khai báo trong MQL5

Lỗi này xuất hiện khi bot sử dụng một biến hoặc tên chưa được định nghĩa đúng cách, chẳng hạn như thiếu tham số hoặc dùng sai tên trong các indicator như iMA().

Khắc phục:
Kiểm tra các tham số của indicator và đảm bảo tất cả tên biến đều khớp với những gì MetaEditor (công cụ lập trình của MT5) yêu cầu.

  • Thiếu các hàm thực thi giao dịch Buy/Sell

Một số bot do AI tạo ra bỏ qua phần logic thiết yếu để mở giao dịch.

Khắc phục:
Thêm thủ công các hàm thực thi giao dịch cơ bản. Dưới đây là ví dụ về cấu trúc cơ bản để đặt lệnh mua:

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); 

}

Hãy nhớ thêm logic cho lệnh bán và xác định các điều kiện mà theo đó giao dịch sẽ được đặt.

  • Điều kiện vòng lặp không đúng trong Deriv cTrader

Trong Deriv cTrader, logic của bot cần chạy bên trong các hàm cụ thể như OnBar() hoặc OnTick(). Các hàm này được kích hoạt tự động khi thị trường di chuyển. Nếu mã của bạn được đặt ngoài các phần này, chẳng hạn như trong vòng lặp sai hoặc phạm vi global, nó sẽ không chạy như mong đợi.

Khắc phục:

Đảm bảo các bar và tick được xử lý bên trong OnBar() hoặc OnTick(). Điều này sẽ giúp bot của bạn phản ứng chính xác với tick hoặc bar mới trong quá trình backtest và giao dịch thực.

  • Tính sai kích thước lot dựa trên phần trăm số dư

Khi AI cố gắng đặt kích thước lot dựa trên số dư tài khoản của bạn (ví dụ: rủi ro 2% cho mỗi giao dịch), nó có thể bỏ qua một chi tiết quan trọng — kích thước hợp đồng. Điều này có thể dẫn đến kích thước lot không chính xác. Lỗi này sẽ không tạo ra lỗi mã, nhưng trong quá trình kiểm thử, bạn sẽ thấy kích thước giao dịch không khớp với thiết lập rủi ro của mình, dẫn đến mức phơi nhiễm quá cao hoặc quá thấp trong các giao dịch thực.

Khắc phục:
Dùng công thức với kích thước lot có tính đến kích thước hợp đồng, chẳng hạn như:

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

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;

  • Các lỗi khác

Nếu bạn gặp một trong những lỗi này — hoặc bất kỳ lỗi nào khác — bạn luôn có thể nhờ mô hình AI hỗ trợ xác định và khắc phục sự cố.

Chỉ cần sao chép thông báo lỗi và đoạn mã liên quan, sau đó gửi cho mô hình AI. Trong hầu hết trường hợp, AI sẽ có thể xác định vấn đề và đưa ra bản sửa lỗi hoặc đề xuất các giải pháp khả thi.

Mẹo: Luôn chạy backtest trước khi giao dịch thực. Những vấn đề như thế này sẽ không xuất hiện cho đến khi bạn kiểm thử chiến lược với dữ liệu thị trường thực.

Cải thiện AI-generated expert advisor của bạn

Khi bot của bạn đã hoạt động, bạn có thể thực hiện một vài thay đổi nhỏ để cải thiện hiệu suất và độ ổn định. Dưới đây là một số mẹo phổ biến để làm điều đó:

  • Thêm logic xử lý lỗi để quản lý hành vi bất thường trong thời điểm biến động mạnh hoặc khi có sự cố kết nối.
  • Dùng cắt lỗ động để khóa lợi nhuận tiềm năng khi thị trường di chuyển theo hướng có lợi cho bạn.
  • Backtest chiến lược của bạn với dữ liệu lịch sử để xem nó sẽ hoạt động như thế nào.
  • Dọn dẹp và sắp xếp mã của bạn để cải thiện độ dễ đọc và hiệu quả. Điều này sẽ giúp việc cập nhật hoặc khắc phục sự cố sau này dễ dàng hơn.

Mẹo: Dùng MetaEditor Debugger (trên MT5) để kiểm thử cách bot của bạn chạy từng bước một.

Vì sao backtest giao dịch là điều thiết yếu

Bot do AI tạo ra là một cách tuyệt vời để tự động hóa giao dịch mà không cần viết mã từ đầu. Nhưng ngay cả khi có AI, chiến lược của bạn vẫn cần sự kiểm tra và điều chỉnh của con người để hoạt động tốt trong điều kiện thực tế.

Trước khi giao dịch thực, hãy dành thời gian kiểm thử kỹ lưỡng và thực hiện những cải tiến nhỏ. Ngay cả các chỉnh sửa nhỏ cũng có thể tạo ra khác biệt lớn về mức độ nhất quán và hiệu quả khi EA của bạn hoạt động.

Join 3M+ global traders

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