Cách tối ưu hóa EA (Optimization) để tìm bộ cài đặt (setfile) tốt nhất

Sau khi backtest EAđọc báo cáo kết quả, bạn có thể thấy lợi nhuận không như ý (Profit Factor thấp, Drawdown cao). Nhưng điều này không có nghĩa là EA đó vô dụng. Rất có thể, các thông số cài đặt (Inputs) mặc định của nó không phù hợp với sản phẩm (Symbol) hoặc khung thời gian (Timeframe) bạn đang test.

Vậy, làm thế nào để tìm ra bộ thông số "vàng" (ví dụ: MA Period = 50, RSI Period = 10) mang lại lợi nhuận cao nhất? Thay vì backtest thủ công hàng ngàn lần, chúng ta sử dụng một tính năng siêu cấp của MT5: Optimization (Tối ưu hóa).

Bài viết này sẽ hướng dẫn bạn cách "ra lệnh" cho máy tính tự động tìm ra bộ cài đặt (setfile) tốt nhất cho robot của mình.

1. Tối ưu hóa (Optimization) là gì?

Optimization là một tính năng trong Strategy Tester (Ctrl+R) cho phép bạn chạy hàng trăm, hàng ngàn, thậm chí hàng triệu bài backtest một cách tự động.

Thay vì bạn tự mình thử: "Backtest với MA=10", rồi "Backtest với MA=11",... bạn chỉ cần ra lệnh cho MT5: "Hãy test tất cả các chu kỳ MA từ 10 đến 200, và báo cho ta biết chu kỳ nào cho lợi nhuận cao nhất và rủi ro thấp nhất."

Kết quả cuối cùng của quá trình này là một (hoặc nhiều) bộ thông số cài đặt đã được chứng minh là hoạt động tốt nhất trong quá khứ. Bộ thông số này được lưu dưới dạng file .set, hay còn gọi là setfile.

2. Hướng dẫn chạy Tối ưu hóa (Optimization)

Quá trình này dựa trên các bước backtest cơ bản, nhưng có 3 điểm khác biệt quan trọng.

Bước 1: Chọn Chế độ Tối ưu hóa (Trong tab "Settings")

Mở Strategy Tester (Ctrl+R). Trong tab "Settings", ở dòng cuối cùng (bên cạnh nút Start), bạn sẽ thấy một danh sách thả xuống. Thay vì "Disabled" (Tắt), bạn cần chọn một chế độ:

  • Slow complete algorithm (Thuật toán chậm toàn diện): Nên dùng. MT5 sẽ test TẤT CẢ các kết hợp có thể. Lâu nhất nhưng chính xác nhất.
  • Fast genetic based algorithm (Thuật toán di truyền nhanh): Dùng khi bạn có quá nhiều thông số. Nó dùng AI để "đoán" các vùng thông số tốt nhất và bỏ qua các vùng xấu, giúp tiết kiệm thời gian.
  • Chọn Tiêu chí Tối ưu hóa: Ngay bên dưới, bạn chọn mục tiêu của mình. Đừng chọn "Maximal Profit". Hãy chọn "Maximal Complex Criterion" (Tiêu chí Phức hợp Tối đa). Đây là một chỉ số "thông minh" do MT5 tạo ra, nó tự động cân bằng giữa Lợi nhuận (Profit), Hệ số Lợi nhuận (Profit Factor) và Sụt giảm (Drawdown).

Bước 2: Chọn Thông số để Tối ưu hóa (Trong tab "Inputs")

Đây là bước quan trọng nhất. Bạn phải "chỉ" cho MT5 biết bạn muốn nó "thử" thông số nào.

  1. Chuyển sang tab "Inputs".
  2. Bạn sẽ thấy danh sách các thông số của EA (LotSize, TakeProfit, MA_Period...). Bên trái mỗi thông số là một ô vuông (checkbox).
  3. Nếu bạn KHÔNG tích vào ô vuông: MT5 sẽ giữ cố định giá trị đó (ví dụ: LotSize = 0.1).
  4. Nếu bạn TÍCH vào ô vuông: 3 ô mới sẽ xuất hiện: Start, Step, Stop. Đây là lúc bạn ra lệnh:
    • Ví dụ 1 (MA_Period): Tích vào ô vuông.
      • Start: 20 (Bắt đầu thử từ 20)
      • Step: 5 (Bước nhảy là 5)
      • Stop: 100 (Dừng lại ở 100)
      (MT5 sẽ test các giá trị: 20, 25, 30, 35,... đến 100)
    • Ví dụ 2 (TakeProfit): Tích vào ô vuông.
      • Start: 100 (TP 100 points)
      • Step: 100
      • Stop: 1000 (TP 1000 points)
      (MT5 sẽ test các giá trị: 100, 200, 300,... đến 1000)

Cảnh báo: Nếu bạn tối ưu hóa nhiều thông số cùng lúc, số lần chạy (passes) sẽ là TÍCH SỐ của chúng. (Ví dụ: 10 giá trị MA x 10 giá trị TP = 100 lần backtest). Hãy cẩn thận, con số này có thể lên đến hàng triệu và mất nhiều ngày để chạy!

Bước 3: Chạy và Đọc kết quả

Sau khi thiết lập, quay lại tab "Settings" và nhấn "Start". Quá trình này sẽ mất rất nhiều thời gian. MT5 sẽ tận dụng tất cả các nhân CPU của bạn để chạy song song nhiều bài backtest.

Khi hoàn tất, một tab mới tên "Optimization Results" (Kết quả Tối ưu hóa) sẽ hiện ra. Đây là một bảng Excel khổng lồ, mỗi dòng là một bài backtest với bộ thông số khác nhau. Bạn chỉ cần nhấp vào tiêu đề cột "Result" (hoặc "Profit Factor") để sắp xếp và tìm ra dòng (bộ thông số) tốt nhất.

3. Cách lưu và sử dụng Setfile

Khi đã tìm thấy dòng kết quả ưng ý nhất trong tab "Optimization Results":

  1. Nhấp chuột phải vào dòng đó.
  2. Chọn "Save as Setfile" (Lưu dưới dạng Setfile).
  3. Lưu file .set này lại (ví dụ: XAUUSD-H1-Best.set).

Cách sử dụng: Lần sau, khi bạn muốn chạy EA (dù là backtest hay chạy live), bạn chỉ cần vào tab "Inputs", nhấn nút "Load" (Tải), và chọn file .set bạn vừa lưu. Tất cả các thông số sẽ được tự động điền vào.

4. Cảnh báo lớn: Rủi ro "Over-fitting" (Quá tối ưu hóa)

Đây là "cạm bẫy" chết người của optimization. Over-fitting là khi bạn "tra tấn" dữ liệu quá khứ để tìm ra một bộ cài đặt hoàn hảo "như tranh vẽ" cho quá khứ. Nhưng bộ cài đặt đó lại hoàn toàn thất bại khi chạy trong tương lai (live) vì nó quá khớp với dữ liệu cũ mà không có tính tổng quát.

Để tránh điều này, hãy luôn backtest trên một khoảng thời gian đủ dài (ít nhất 3-5 năm) và không nên tối ưu hóa quá nhiều thông số cùng một lúc.

Kết luận

Tối ưu hóa là một công cụ cực kỳ mạnh mẽ để cải thiện hiệu suất của robot. Hầu hết các EA MT5 đa chức năng đều đi kèm với các setfile đã được tối ưu sẵn cho từng cặp tiền.

Toàn bộ công việc của một người Lập trình EA MT4/MT5 theo yêu cầu chuyên nghiệp không chỉ là viết code, mà phần lớn thời gian là dành cho việc backtest và optimization để tìm ra các bộ cài đặt (setfile) mạnh mẽ và bền vững nhất. Khi bạn Học Code Lập Trình EA, bạn sẽ được học cách làm thế nào để tối ưu hóa mà không bị "over-fitting".

>> Đọc tiếp: Phân biệt MQL5 và Myfxbook: Cách kết nối MT5 để theo dõi live