Bạn tạo một Expert Advisor cho MT5 mà không cần lập trình bằng cách ghép nó từ các khối trên một canvas — khối chỉ báo, khối điều kiện, khối lệnh, khối rủi ro — rồi để máy chủ sinh và biên dịch MQL5 giúp bạn. File nhận về là một .ex5 thật, đúng loại file mà một EA viết tay biên dịch ra. Không có lấy một dòng cú pháp MQL5 nào ở bất kỳ khâu nào.
Phần mà no-code không loại bỏ được là công việc thiết kế, và đó chính là chỗ gần như ai cũng thua. Vậy nên hướng dẫn này làm cả hai nửa: con đường thao tác từ một ý tưởng tới một file đã biên dịch, và bằng chứng về điểm số của những file đó trước khi bạn động vào bất cứ thứ gì.
Bạn sẽ dựng ra cái gì
Đến cuối bài, bạn sẽ có một file .ex5 đã biên dịch nằm trong thư mục MQL5/Experts của MetaTrader 5, dựng từ một quy tắc do bạn chọn, với mức cắt lỗ và khối lượng lệnh do bạn cố ý đặt. Có hai con đường dẫn tới đó và chúng khác nhau thật sự về công sức:
- Bắt đầu từ một mẫu. Chọn một trong 84 chiến lược đã đấu nối sẵn trong thư viện, rồi sửa các khối của nó. Đây là cách nhanh nhất để thấy một luồng hoàn chỉnh, và cũng là cách nhanh nhất để thừa hưởng một tham chiếu thua lỗ mà không hề hay biết.
- Bắt đầu từ canvas trắng. Đặt một node Start, nối một chỉ báo vào một điều kiện, nối điều kiện đó vào một khối lệnh, rồi thêm phần rủi ro. Chậm hơn, nhưng bạn biết chính xác từng sợi dây nối làm gì.
Đi đường nào thì bộ từ vựng cũng như nhau: 118 loại khối trong 8 nhóm, với hạn mức 50 node mỗi thiết kế. Hạn mức đó không phải là ràng buộc mà người mới tưởng. Mẫu đạt điểm cao nhất trong cả thư viện chỉ dùng sáu node.
Trước khi bắt đầu: Builder là gì và không phải là gì
Bạn cần một ý tưởng phát biểu được thành “khi X xảy ra thì mua; khi Y xảy ra thì đóng”, 15–30 phút, và một terminal MetaTrader 5 để chạy kết quả. Bạn không cần MQL5, không cần trình biên dịch, cũng không cần Windows — trình soạn thảo chạy trong trình duyệt và việc biên dịch diễn ra trên máy chủ.
Có ba ranh giới đáng biết trước khi bạn dốc cả một buổi tối vào đây.
Nó sinh code; nó không giao dịch. Builder không bao giờ đặt lệnh, không kết nối với nhà môi giới của bạn, cũng không phát tín hiệu. Nó trao cho bạn một file. Mọi thứ sau đó xảy ra trong terminal của bạn, trên tài khoản của bạn, dưới quyền kiểm soát của bạn.
Thiết kế thì miễn phí; biên dịch thì cần tài khoản. Kéo thả khối, nạp mẫu và đọc phần xem trước inputs trong tab Code đều không cần đăng nhập. Biên dịch ra .ex5 và chạy bài kiểm tra độ mạnh thì cần một tài khoản miễn phí có địa chỉ email đã xác minh — tài khoản chưa xác minh sẽ nhận lỗi 403 kèm thông báo “Your account is not eligible yet”, và đó là một kiểu hỏng khác với EAB-E601 “Sign in to compile” mà bạn gặp khi hoàn toàn chưa có tài khoản. Biết mình đang dính cái nào sẽ tiết kiệm mười phút loay hoay.
File .ex5 miễn phí được cấp phép, không mang đi được. Mọi bản biên dịch miễn phí đều đi kèm một khóa tài khoản: EA chỉ chạy trên một tài khoản IB đã xác minh với nhà môi giới được hỗ trợ, và MetaTrader 5 phải có https://mt5depot.com trong danh sách cho phép ở Tools > Options > Expert Advisors > Allow WebRequest, nếu không EA sẽ tự vô hiệu hóa khi khởi động. Các lần backtest trong Strategy Tester được miễn kiểm tra đó — và đó chính là lý do bạn kiểm thử được trước khi liên kết bất cứ thứ gì. Mã nguồn .mq5 sửa được là tính năng trả phí duy nhất, tương ứng giấy phép Pro 399 $ trả một lần.
Từng bước: dựng EA
- Mở trình soạn thảo từ trang Builder — nút ghi Open the builder — free. Không phải cài gì cả và phần việc của bạn tự lưu trong trình duyệt.
- Chọn điểm khởi đầu. Màn hình chào mời Build Your EA — Free, Start with blank canvas và một 3-min tour, kèm thư viện mẫu lọc theo Basic / Intermediate / Advanced / Portfolio. Một canvas trắng vẫn cần một node Start lấy từ bảng Utility — thiếu nó, phần xác thực sẽ chặn bạn lại bằng
EAB-E202. - Đặt các khối. Kéo từ bảng bên trái hoặc nhấp đúp vào một mục;
Ctrl+Ktìm cả 118 loại theo tên. Nối chúng bằng cách kéo từ cổng ra của một node ở bên phải sang cổng vào của node kế tiếp ở bên trái, hoặc bấm nút + trên một node để thêm và tự động nối node tiếp theo. - Đặt tham số cho từng khối trong tab Properties bên phải. Đây là nơi chứa chu kỳ, giá áp dụng và khung thời gian của một chỉ báo — mỗi khối chỉ báo có thể đọc một khung thời gian khác với khung của biểu đồ nó đang chạy, và đó là cách dựng một bộ lọc đa khung thời gian mà không cần một dòng code.
- Đặt các quy tắc áp cho cả tài khoản trong tab Settings: Money Management, Filters, Exit Strategy, Position Management, Risk Management. Khối lượng lot mặc định là mức cố định
0.01, còn lớp bảo vệ vào lệnh dùng chung mặc định là cắt lỗ 50 pip và mục tiêu 100 pip cho tới khi bạn thay đổi. - Đọc thanh xác thực và bảng Preflight diagnosis. Lỗi thì chặn việc sinh code; cảnh báo thì không. Một luồng không có lệnh cắt lỗ sẽ dựng lên một chẩn đoán
CRITICALvà buộc bạn xác nhận “Generate anyway?” trước khi nó chịu dựng. - Bấm Measure để chạy bài backtest gần đúng tích hợp sẵn — chọn một cặp, một khung thời gian và một mức spread tính bằng point, rồi đọc phán quyết đối chiếu với ngưỡng đã in ra. Hãy làm việc này trước khi biên dịch, không phải sau.
- Bấm Compile .ex5. Máy chủ sinh MQL5, biên dịch bằng MetaEditor và trả về
EA_Builder.ex5. Chuyển file vàoMQL5/Expertsqua File > Open Data Folder, rồi nhấp chuột phải vào Navigator và chọn Refresh — nếu EA không hiện ra thì gần như luôn là do thư mục, không phải do file. - Kiểm thử nó trong Strategy Tester trước khi gắn vào bất kỳ biểu đồ nào. Khi gắn vào rồi, nút Algo Trading trên thanh công cụ phải đang bật và Allow Algo Trading phải được tích trong tab Common của EA. Một khuôn mặt buồn trên biểu đồ nghĩa là một trong hai thứ đó đang tắt, không phải chiến lược bị hỏng.
- Chọn một mẫu hoặc một canvas trắng
- Nối chỉ báo vào điều kiện, điều kiện vào lệnh
- Đặt cắt lỗ, mục tiêu và khối lượng lot
- Đo độ mạnh của luồng
- Biên dịch ra .ex5
- Kiểm thử trong MT5 Strategy Tester
- Chạy demo rồi mới quyết định
Có một chi tiết ở bước 3 khiến nhiều người bất ngờ: trình soạn thảo từ chối dựng một luồng có thể hoạt động sai một cách âm thầm. Nối một chỉ báo thẳng vào khối lệnh, bạn sẽ nhận EAB-E205 — “An indicator is wired straight into an action. Insert a condition node (Compare/Cross) in between.” Một node không tới được từ Start sẽ dựng lên EAB-E203 và được nói thẳng rằng nó “will not be included in the generated EA”. Đây không phải cảnh báo về phong cách. Đây là những lỗi ngăn một người mới xuất xưởng một EA mà một phần ba ở giữa chẳng làm gì cả.
Nếu chính khâu biên dịch hỏng thì thường không phải lỗi thiết kế của bạn. EAB-E402 nghĩa là MetaEditor bác phần mã nguồn được sinh ra, và ba mã con của nó — định danh chưa khai báo, sai số lượng tham số, sai cú pháp — được ghi nhãn ngay trong giao diện là “a bug on our side, not yours” kèm lời đề nghị đính kèm luồng của bạn. Bất cứ thứ gì bộ ánh xạ không nhận ra đều được hiện nguyên dòng lỗi thô của MetaEditor thay vì một lời xin lỗi chung chung, và đó đúng là điều khiến việc báo lỗi trở nên đáng làm. EAB-E401 và EAB-E404 lại là chuyện khác: trình biên dịch đang bận, và giới hạn tần suất theo từng người dùng. Cả hai đều nghĩa là chờ, không phải dựng lại.
Khối, điều kiện vào và thoát lệnh, và những thiết lập rủi ro không hề tùy chọn
Bảng khối là một bộ từ vựng duy nhất chia thành tám nhóm. Ngày đầu tiên bạn không cần phần lớn trong đó; bạn cần biết nhóm nào trả lời câu hỏi nào.
| Nhóm khối | Số loại | Nó điều khiển gì | Thiết lập đầu tiên hợp lý |
|---|---|---|---|
| Utility | 2 | Luồng bắt đầu ở đâu, và các lần đọc đa khung thời gian | Một node Start |
| Indicators | 52 | Phép đo mà quy tắc của bạn dựa vào | Một chỉ báo, khung thời gian của biểu đồ |
| Price / Info | 5 | Giá thô, OHLC, đồng hồ, trạng thái tài khoản | Cứ để yên tới khi cần |
| Conditions | 10 | Phép so sánh kích hoạt quy tắc | Compare hoặc Cross |
| Filters | 21 | Khi nào mới được phép giao dịch | Bộ lọc spread, giới hạn số vị thế |
| Actions | 15 | Bản thân lệnh, và cách nó đóng | Open Buy / Open Sell |
| Money Mgmt | 7 | Vị thế lớn cỡ nào | Fixed Lot, 0.01 |
| Exit Strategy | 6 | Một vị thế kết thúc ra sao | Cắt lỗ và mục tiêu cố định |
Bốn trong số các loại đó — nhồi lệnh, trung bình giá xuống, vào lệnh đảo chiều và đóng tất cả — chỉ được cấu hình từ bảng Settings. Thả một cái lên canvas thì preflight sẽ bác nó bằng EAB-E304 và chỉ cho bạn biết nó thật sự nằm ở đâu. Chuyện nhỏ thôi, nhưng đúng là loại chuyện nhỏ ngốn mất một tiếng khi thông báo lỗi viết tệ, còn ở đây thì không tệ.
Hai khối điều kiện phủ được phần lớn chiến lược đầu tiên. Compare hỏi xem một giá trị có nằm trên hay dưới một giá trị khác không — RSI dưới 30, giá trên một đường trung bình động. Cross hỏi xem một đường có cắt qua đường kia trên cây nến này hay không, và đó là một câu hỏi khác hẳn, chặt hơn nhiều so với “đang nằm trên”. Nhầm lẫn giữa hai cái này là lý do phổ biến nhất khiến một luồng bắn liên tục thay vì thỉnh thoảng mới bắn.
Thời điểm ra quyết định quan trọng không kém gì bản thân điều kiện. Mặc định là đánh giá một lần mỗi khi nến đóng, chứ không phải trên từng tick. Trên biểu đồ M5, đó là khác biệt giữa vài quyết định mỗi giờ và hàng trăm — và một quy tắc trông có lãi trên nến đã đóng có thể hành xử hoàn toàn khác khi được phép bắn giữa nến.
Backtest nó trước mọi thứ khác
Builder có một nút Measure, và nó in ngay ngưỡng đạt của chính nó cạnh kết quả: hệ số lợi nhuận ít nhất 1,2, ít nhất 60 lệnh, sụt giảm tối đa không tệ hơn 20%. Ngưỡng đó mới là phần hữu ích. Đây là một ngưỡng cố định, đã công bố, nên một kết quả hoặc là vượt qua nó hoặc là không, và có nheo mắt nhìn đường cong vốn bao lâu cũng không đổi được câu trả lời.
Và đây là điều ngưỡng đó làm với các mẫu xuất xưởng. Đây là dữ liệu của chính chúng tôi, không phải tuyên bố của một nhà cung cấp: mọi mẫu trong thư viện đều mang bản ghi đã đo của một lần chạy, và bảng dưới đây đếm chúng. Cách chúng tôi kiểm thử mô tả tiêu chuẩn mà các bản ghi đó phải chịu, còn script tổng hợp nằm trong repository ngay cạnh kết quả của nó, nên con số đếm được là tái lập được chứ không phải chỉ nói suông.
| Mẫu dựng sẵn | Đã đo |
|---|---|
| Số mẫu trong thư viện | 84 |
| Số mẫu mang tham chiếu đã đo | 53 |
| Bị manifest gắn cờ yếu | 53 trên 53 |
| Dưới hệ số lợi nhuận 1,0 ở thiết lập gốc | 46 trên 53 |
| Trung vị hệ số lợi nhuận | 0,92 |
| Hệ số lợi nhuận tốt nhất trong tập | 1,10 |
| Vượt ngưỡng đạt của chính bảng Measure | 0 trên 53 |
| Điều kiện kiểm thử | |
|---|---|
| ID thí nghiệm | EXP-BUILDER-TEMPLATE-BASELINE-001 |
| Môi trường | Exness MT5 |
| Cặp / khung thời gian | USDJPYm M5 |
| Giai đoạn | 2025-06-01 – 2026-06-09 |
| Mô hình | M1 OHLC (Model=1) |
| Tiền nạp | 10,000 |
| Tham chiếu đo ngày | 2026-06-18 |
| Tổng hợp / kiểm chứng lần cuối | 2026-08-25 |
Có ba cách đọc bảng đó đáng nói rõ ra, bởi cách đọc hiển nhiên lại không phải cách đọc hữu ích.
Độ phức tạp không giúp được gì. Tham chiếu tốt nhất trong tập, ở mức 1,10, thuộc về một thiết kế hồi giá theo trung bình động gồm sáu node. Chồng dao động đa khung thời gian 27 node chỉ đạt 1,04. Điểm tệ nhất trong tập, 0,63, thuộc về một thiết kế đa khung thời gian 15 node có tự động tính khối lượng lot và trailing stop. Thêm khối là thêm tham số, và tham số chính là con đường khiến một thiết kế tối ưu hóa quá mức chứ không phải con đường khiến nó tốt lên.
Độ sâu và độ dài là hai bài toán tách biệt. Một mẫu đạt hệ số lợi nhuận 1,03 trên 8.765 lệnh với sụt giảm tối đa -7,92%; một mẫu khác đạt 0,69 với sụt giảm -22,54%. Một tỷ số quanh mức 1 gần như không nói gì cho bạn biết về cảm giác khi phải nắm giữ nó.
Tám mẫu đã được dò tìm, và cuộc dò tìm thất bại. Tám mẫu mang theo một lần quét tham số có ghi lại — các lưới cắt lỗ và chốt lời chạy trên ba cửa sổ: trong mẫu, ngoài mẫu, và giai đoạn trước cả hai. Cả tám đều trả về no_robust_edge. Hai mẫu chưa từng cho ra một thiết lập thắng ngay cả trong mẫu. Sáu mẫu tìm được một thiết lập nhưng không lặp lại được — tổ hợp cắt nhau của trung bình động tốt nhất đạt 1,23 trên H1 trong mẫu và 0,98 trên cửa sổ trước đó, còn một thiết lập CCI giữ được 1,05 ngoài mẫu thì vẫn rơi xuống 0,92 ở giai đoạn trước đó. Ngưỡng là phải thắng cả ba cửa sổ, và chẳng có gì vượt qua. Đó là một kết quả trung thực hơn một con số đã tinh chỉnh, và nó là lập luận tốt nhất cho việc tự kiểm thử những chỉnh sửa của chính bạn thay vì tin vào giá trị mặc định của bất kỳ ai, kể cả những giá trị này.
Phép đo này cố tình chỉ ở mức gần đúng — theo cây nến, chỉ tính các node chính, không phải một terminal thật. Nó là bộ lọc, không phải phán quyết. Thứ gì sống sót qua nó thì sau đó nên được biên dịch và chạy lại trong chính Strategy Tester của MT5, nơi việc khớp lệnh, spread và mô hình tick đều là thật. Cách chạy một bài backtest trong MT5 dẫn trọn lần chạy thứ hai đó từ đầu đến cuối trên một bản ghi thật đã công bố. Nếu bạn muốn đi sâu hơn vào ý nghĩa của những con số đó thì phần ấy thuộc về các hướng dẫn backtesting chứ không phải trang này.
- Đã đo luồng và đọc kết quả đối chiếu với ngưỡng đã in ra, không phải đối chiếu với cảm giác
- Đã chạy lại file
.ex5đã biên dịch trong MT5 Strategy Tester trên cùng cặp và cùng khung thời gian - Đã đặt mức cắt lỗ rõ ràng thay vì chấp nhận mặc định 50 pip
- Đã kiểm tra mức sụt giảm mà bạn sẽ phải ngồi chịu đựng, không chỉ nhìn kết quả cuối
- Đã chạy tài khoản demo đủ lâu để thấy chiến lược thua rồi hồi lại
- Đã viết ra trước, mức lỗ nào sẽ khiến bạn tắt nó đi
Những lỗi thường gặp cần tránh
Biên dịch một mẫu rồi coi như xong. Đây là lỗi số một, bỏ xa phần còn lại, và bảng ở trên là lý do. Một mẫu là sơ đồ đấu nối mà ai đó đã vẽ sẵn cho bạn. Các tham số trong đó chưa bao giờ được khớp với cặp của bạn, khung thời gian của bạn hay mức spread của nhà môi giới bạn dùng.
Tinh chỉnh cho tới khi backtest trông đẹp. Nếu bạn đổi một tham số, đo lại, đổi tiếp rồi giữ cái tốt nhất, bạn không đang cải thiện một chiến lược — bạn đang khớp nó vào một lát cắt lịch sử. Tám lần dò tham số được ghi lại trong thư viện đều kết thúc bằng no_robust_edge: sáu lần tìm được một thiết lập thắng trong mẫu nhưng không sống sót qua cửa sổ kế tiếp, và hai lần không tìm được gì cả. Của bạn cũng sẽ hành xử y như vậy trừ khi bạn kiểm tra nó theo cùng cách.
Kiểm thử đúng một năm may mắn. Tham chiếu ở trên chỉ trải một năm duy nhất trên một cặp duy nhất tại một nhà môi giới. Chừng đó đủ để nói “cái này chưa xong”; còn xa mới đủ để nói “cái này chạy được”. Hãy nới rộng cửa sổ và đổi cặp trước khi bạn tin bất cứ điều gì.
Chất thêm bộ lọc để cứu một quy tắc thua lỗ. Có hai mươi mốt loại bộ lọc, và thêm năm cái trong số đó sẽ làm gần như mọi backtest trông đẹp hơn. Nó cũng sẽ cắt giảm số lệnh cho tới khi kết quả chỉ còn dựa trên một nhúm lệnh. Hãy theo dõi số lệnh sát sao ngang với hệ số lợi nhuận — bảng Measure gắn cờ mẫu quá mỏng khi dưới 60 lệnh chính vì lý do này.
Chạy nhiều EA mà không tách chúng ra. Nếu bạn chạy hơn một EA trên cùng một tài khoản, mỗi cái cần magic number riêng, nếu không logic thoát lệnh của EA này sẽ đóng vị thế của EA kia. Làm đúng thì chẳng tốn gì, còn chẩn đoán sau khi đã hỏng thì rất mệt.
Bỏ qua vòng chạy demo. Một backtest giới hạn điều mà một bộ quy tắc lẽ ra đã có thể làm trên giá đã ghi lại. Nó không bao gồm độ trễ của bạn, các lần báo giá lại, hay mức spread giãn ra đúng lúc quy tắc của bạn bắn. Không có gì ở đây là lời hứa về lợi nhuận, và mọi bản ghi trên trang này đều mô tả quá khứ.
Bước tiếp theo và các biến thể
Đi đâu tiếp phụ thuộc vào phần nào bạn thấy còn mỏng.
Nếu chiến lược là khoảng trống, hãy bắt đầu từ một quy tắc bạn phát biểu được trong một câu và dựng luồng nhỏ nhất diễn đạt được nó. Sáu node thắng hai mươi bảy node trong tập đã đo, nên phiên bản nhỏ không hề là một sự thỏa hiệp. Đến lúc này, dạo qua thư viện chỉ báo còn hữu ích hơn là thêm một bộ lọc nữa — một cú phá vỡ kênh Donchian và một cú đảo chiều RSI là hai ý tưởng trái ngược nhau, và biết mình đang dựng cái nào sẽ quyết định mọi tham số phía sau. Cách dựng một EA RSI và cách dựng một EA MACD dẫn trọn mỗi loại một ví dụ từ đầu đến cuối, kèm cả điểm số của các mẫu xuất xưởng trước khi bạn thay đổi bất cứ thứ gì.
Nếu khâu kiểm thử là khoảng trống, đó là kỹ năng sâu hơn và nó có nhà riêng ở các hướng dẫn backtesting. Bản rút gọn: kiểm thử ngoài mẫu, theo dõi số lệnh, và coi một kết quả mà bạn phải dò tìm mới ra là một lời cảnh báo chứ không phải một phát hiện.
Nếu bạn muốn một tham chiếu đã làm sẵn trước khi tự dựng, mỗi EA đã công bố đều cho xem danh sách lệnh đã đóng đầy đủ, mức sụt giảm và manifest chạy — hãy đọc một cái từ đầu đến cuối, vì nó cho bạn thấy một bản ghi có tài liệu trông ra sao và cho bạn thứ để đối chiếu với phép đo của chính mình. Expert advisor có sinh lời không? đọc chính danh mục đó để xem lợi nhuận thật sự trông thế nào từ bên trong, kể cả những quãng dài chẳng gì hiệu quả.
Nếu bạn đang phân vân có nên tự động hóa hay không, EA và giao dịch thủ công phát lại các bản ghi sở hữu dưới những quy tắc dừng mà một người giao dịch tùy nghi thực sự sẽ dùng, và đó là phiên bản trung thực của phép so sánh ấy.
Còn nếu bạn dựng được thứ gì đáng khoe, luồng biên dịch sẽ mời bạn gửi nó vào kho công khai miễn phí — mọi bài gửi đều được duyệt, và một thiết kế vượt ngưỡng đạt trên nhiều hơn một cặp thì thật sự hiếm. Cách dùng EA miễn phí ghi lại chính xác những gì khâu duyệt đó kiểm tra, huy hiệu Verified có nghĩa và không có nghĩa là gì, và phía miễn phí của trang được tài trợ ra sao — đáng đọc từ phía người gửi bài chẳng kém gì từ phía người tải về.