Dự án thuật toán đầu tiên có thể chỉ ghi tín hiệu, tính khối lượng hoặc kiểm tra phơi nhiễm mà không đặt giao dịch. Chọn một thao tác có kết quả bạn giải thích và kiểm chứng được. Xác định dữ liệu, quy tắc và hành vi chương trình trước khi cấp quyền đặt lệnh; tự động hóa không chứng minh chiến lược có lãi.

Giao dịch thuật toán là gì và không phải là gì?

Tách chọn tín hiệu, thực hiện quyết định đã có, quản lý vị thế và báo cáo. Chương trình chia nhỏ lệnh đã quyết định không cùng mục đích với robot tự chọn điểm vào. Báo cáo BIS 2020 về thuật toán thực hiện FX bàn về cấu trúc, thực hiện và rủi ro, không chứng minh robot bán lẻ sinh lời. Trong báo cáo đó EA là execution algorithm; MetaTrader dùng EA cho Expert Advisor.

Ghi mã giao dịch, nguồn dữ liệu, giờ hoạt động, thời điểm quyết định, quy tắc vào/thoát, khối lượng, giới hạn phơi nhiễm và hành vi khi đã có vị thế. Các đầu vào và giám sát vẫn là quyết định con người. Tự động hóa có thể ngăn một lỗi tay nhưng tạo lỗi khác, như gửi trùng yêu cầu sau khởi động lại. Kiểm tra tính đúng của chương trình riêng với kết quả kinh tế của quy tắc.

Chọn công cụ theo công việc

Tác vụ thông báo có thể chỉ cần alert. Alerts gốc của MT5 hỗ trợ so sánh giá, khối lượng giao dịch gần nhất hoặc thời gian, không phải trình soạn tùy ý điều kiện trung bình động kết hợp ATR. Logic riêng có thể cần indicator hoặc EA. MQL5 chạy trong MT5; Python có thể phân tích dữ liệu hoặc dùng kết nối được tài liệu hỗ trợ. Không có lộ trình bắt buộc alert → MQL5 → Python → FIX.

Chọn môi trường phù hợp tài khoản, dữ liệu và thao tác. Không giả định mọi sản phẩm broker đều có cùng số dòng code, thời gian xây dựng, độ trễ hoặc quyền API. EA bằng MQL5 giải thích hành vi chương trình trong nền tảng; backtest Forex bằng Python là quy trình nghiên cứu riêng. Không bắt buộc viết lại cùng ý tưởng bằng cả hai.

Không đoán giá thứ ba bị thiếu

Số bản ghi yêu cầu là một phần quy tắc. Hai giá hợp lệ không xác định trung bình ba giá.

Vuốt ngang để xem toàn bộ sơ đồ →

Cuộn ngang để xem hết sơ đồ.

Không đoán giá thứ ba bị thiếuQuy tắc so giá đóng mới nhất 102 với trung bình đúng ba giá đã đóng. Chỉ biết hai giá mới 100 và 102; giá cũ x bị thiếu. Nếu x = 98, trung bình 100 và 102 lớn hơn 100. Nếu x = 106, trung bình 102,666… và 102 không lớn hơn. Hai giả định điền lịch sử cũ, không phải giá tương lai. Hai trung bình dùng cùng trục 99–104 và mốc 102. Thiếu x thì tạm ngừng đánh giá, không điền 0.THIẾU DỮ LIỆU, ĐỔI KẾT LUẬNQuy tắc: giá cuối > trung bình 3 giáx = ?100102Chưa biết giá cũ x.Hai giả định điền lịch sử cũ:x = 98: (98 + 100 + 102) /3 = 100x = 106: (106 + 100 + 102) /3 ≈ 102.667Giá cuối: 1029910499104x = 98x = 106Thiếu x: chưa đánh giá quy tắc 3 giá.

Mô hình giả định cho một công cụ và khung. Các bản ghi là nến lịch sử đã đóng; x là giá cũ thiếu, không phải tương lai. Ba giá từ cũ đến mới: x, 100, 102; trọng số bằng 1/3, không làm tròn trước khi so.

Nếu x=98, trung bình 100; nếu x=106, trung bình 308/3 ≈ 102,667. Điều kiện giá cuối 102 lớn hơn trung bình có hai kết quả khác nhau. Trung bình hai giá biết là 101 nhưng đổi quy tắc; điền 0 tạo dữ liệu giả. Ghi thiếu dữ liệu và chưa đưa quyết định; nếu tải lại thành công, kiểm tra đúng các nến dự định. CopyRates trả số bản ghi thực có; bài này không kiểm tra chiều chỉ số mảng.

Cùng giá cuối cho hai quyết định khác nhau tùy lịch sử bị thiếu.

Kỹ năng và ngôn ngữ

Cần lập trình, xử lý dữ liệu, tính khối lượng rủi ro và tư duy thống kê đủ cho chức năng đang dùng. Đường vốn ngắn chỉ mô tả mẫu đó, không chứng minh lợi nhuận tương lai. Lập quy trình kiểm định với dữ liệu phù hợp, đánh giá ngoài mẫu và kiểm tra thực hiện demo. MQL5 kết nối qua MT5; Python có thể dùng terminal hoặc giao diện khác được tài liệu hỗ trợ. Độ trễ đầu cuối phụ thuộc code, hosting, mạng và broker, không được bảo đảm ở mức một chữ số mili giây.

Ví dụ từ quy tắc đến backtest

Với crossover EUR/USD H1 giả định, định nghĩa chính xác EMA, SMA, ATR, lúc có tín hiệu, stop và target. So quyết định tay với tự động trên cùng dữ liệu và ngày trước. Test tự động năm năm không nhất thiết giống mẫu tay sáu tháng vì giai đoạn và nguồn khác. Đối chiếu sai khác cùng kỳ, tính chi phí rồi đánh giá quy tắc đã cố định trên dữ liệu riêng.

Đặc tả ngoại tuyến có thể dùng EMA 21, SMA 55 và khoảng ATR chọn cho bài tập. Ghi có dùng H1 đã đóng hay không, và khi nào được đánh giá. Ban đầu chỉ ghi tín hiệu, chưa đặt lệnh. Kiểm tra có tín hiệu, không có tín hiệu, chuyển nến, thiếu lịch sử và vị thế đã tồn tại. Thiếu đầu vào không phải kết quả hợp lệ “không vào”.

Mô hình khối lượng riêng: equity 10.000 USD, ngân sách lỗ do giá ban đầu 0,5%, stop 25 pip, pip EUR/USD 0,0001. Hợp đồng 100.000 EUR/lot cho giá trị 10 USD/pip/lot. Ngân sách 50 USD; khối lượng trước phí = 50/(25×10)=0,20 lot, danh nghĩa 20.000 EUR. Các tham số giả định không phải khuyến nghị rủi ro phổ quát; danh nghĩa, margin và lỗ dự kiến là ba đại lượng khác nhau.

Tính hoa hồng và giả định thực hiện trước khi làm tròn xuống bước khối lượng hợp đồng. Stop thường có thể khớp khác khi gap; 50 USD không phải lỗ tối đa vô điều kiện. So cùng quy tắc, dữ liệu và từng giao dịch, không chỉ lãi cuối giống nhau. Giữ chọn tham số riêng với đánh giá; kết quả tốt trên mẫu dùng để chọn có thể là thiên lệch lựa chọn.

Chương trình có thể tạo spread giả bằng trộn báo giá đúng nhưng khác thời điểm. Luồng giả định: t1 Bid/Ask 1,1000/1,1002; t2 là 1,1010/1,1012. Mỗi spread 2 pip nếu pip 0,0001. Lấy Ask t1 trừ Bid t2 cho (1,1002−1,1010)/0,0001=−8 pip. Bộ lọc spread< 2,5 sẽ nhận nhầm số ghép đó; không phải spread âm được quan sát ngoài thị trường.

SymbolInfoTick trả giá hiện tại và thời điểm cập nhật trong một MqlTick. Kiểm tra thành công rồi tính từ các trường của cấu trúc đã giữ. Thêm ca cố ý trộn hai báo giá riêng đều hợp lệ. Báo giá nhất quán chỉ là kiểm tra dữ liệu, không bảo đảm thanh khoản hay giá khớp tương lai.

Tách kiểm tra code, dữ liệu và kết quả kinh tế

Dự án có thể sai ở quy tắc, code, dữ liệu thiếu, thực hiện hoặc vận hành. Không xếp mọi thất bại thành hai nguyên nhân và bỏ qua lỗi lập trình. Sau phản hồi lệnh không rõ, kiểm tra orders, deals và positions thực trước khi gửi lại. OrderSend trả true chưa chứng minh đã khớp; xem retcode và trạng thái giao dịch. Lưu phiên bản quy tắc, thời điểm thông tin và lý do hành động hoặc không hành động.

Backtest cần dữ liệu đúng sản phẩm, chi phí và thứ tự thời gian. Lưu mọi biến thể đã thử; tách dữ liệu phát triển và đánh giá. Sửa quy tắc sau khi xem kết quả ngoài mẫu tức dùng kỳ đó để phát triển. Tìm kiếm lợi thế bàn cách đánh giá; giữ báo cáo thất bại và lý do đổi, không chỉ đường vốn đẹp nhất.

Tỷ lệ thắng, kỳ vọng và profit factor trả lời câu hỏi khác nhau. Mẫu R cố định giả định 100 lệnh: 40 thắng+2R, 60 thua−1R. Trung bình(80−60)/100=+0,2R trước phí; profit factor 80/60≈1,33. Đây là đầu vào chọn để tính, không phải chiến lược đã test hoặc bằng chứng mẫu tới có cùng kết quả.

Lập bảng chi phí dữ liệu, hosting, giấy phép và thời gian dù ngôn ngữ không thu phí giấy phép. Giá dịch vụ, quyền truy cập và phục hồi phụ thuộc cấu hình. Kiểm tra khởi động lại và mất kết nối; VPS không loại mọi lỗi hoặc trách nhiệm giám sát.

Bốn trạng thái cần ghi khác nhau

Bốn trạng thái cần ghi khác nhauCùng không có lệnh mới nhưng nguyên nhân và cách xử lý không giống nhau. Ví dụ thiết kế, không phải kết quả chạy thật.PHÉP TÍNH GIẢ ĐỊNHĐủ dữ liệu, điều kiện saiKhông có tín hiệuThiếu bản ghiChưa đánh giáPhản hồi lệnh không rõChưa biết trạng tháiĐủ dữ liệu, có tín hiệuChưa đồng nghĩa đã khớp
Bốn trạng thái cần ghi khác nhau. Cùng không có lệnh mới nhưng nguyên nhân và cách xử lý không giống nhau. Ví dụ thiết kế, không phải kết quả chạy thật.

Không gộp thiếu dữ liệu, không có tín hiệu và chưa biết trạng thái vào cùng một nhãn “không giao dịch”.

Trên màn hình nhỏ, bạn có thể cuộn ngang hoặc phóng to sơ đồ. Các giá trị và kết luận cũng có ở phần văn bản bên dưới.

Đủ dữ liệu, điều kiện sai
Không có tín hiệu – Ghi kết quả hợp lệ; không sửa dữ liệu để tạo lệnh.
Thiếu bản ghi
Chưa đánh giá – Tải đúng lịch sử, kiểm tra đủ số và thời điểm.
Phản hồi lệnh không rõ
Chưa biết trạng thái – Đối chiếu orders/deals/positions trước khi gửi lại.
Đủ dữ liệu, có tín hiệu
Chưa đồng nghĩa đã khớp – Nếu được phép đặt lệnh, vẫn cần kiểm tra thực hiện.

Bài thực hành tiếp theo

  1. Chọn một thao tác, viết đặc tả dữ liệu, thời gian, quy tắc, kết quả và điều kiện phải dừng đánh giá. Nhật ký tín hiệu đáng tin có thể là dự án đầu hoàn chỉnh.
  2. Kiểm tra đủ bản ghi và nhất quán báo giá trên ca nhỏ; tách nến đã đóng với nến hiện tại, giữ thời điểm đầu vào.
  3. Nếu cần lệnh, dùng môi trường được xác định rõ là demo; thử chấp nhận, từ chối, khởi động lại và phản hồi không rõ. Xem trạng thái thực trước khi gửi lại. Hạn lịch không buộc chuyển sang tiền thật.
  4. Cố định quy tắc để đánh giá riêng với chi phí/dữ liệu phù hợp. So cùng ngày và từng quyết định; điều tra sai khác đáng kể, không đặt ngưỡng phần trăm chung tùy tiện.
  5. Viết quy trình tạm dừng, khởi động và cập nhật. Tắt AutoTrading cục bộ không đóng vị thế đang có. Tách bảo vệ đã được server chấp nhận với logic chương trình và kiểm tra bản chạy từ xa riêng. Demo không bảo đảm thực hiện live giống hệt.