Trong bài viết này
Sau khi đọc bài này…
- Chọn đúng nến trong CopyBuffer và khai báo hướng mảng.
- Tách handle/số chép/giá trị hợp lệ với tín hiệu.
- Đối soát yêu cầu, deal/vị thế và môi trường tự động hóa.
Tra cứu thuật ngữ ngay trong bài
Backtesting (kiểm thử dữ liệu lịch sử) Kế hoạch giao dịch Tài khoản mô phỏng (demo) Drawdown (sụt giảm từ đỉnh) Stop loss — lệnh dừng lỗ Báo giá lại — requoteExpert Advisor MQL5 là chương trình xử lý sự kiện trong MetaTrader 5. Có thể đánh giá quy tắc, gửi yêu cầu giao dịch khi đủ quyền. Xử lý sự kiện, quyền và phản hồi máy chủ khác khớp thành công; gắn chương trình lên biểu đồ chưa xác lập kết quả giao dịch.
Expert Advisor MQL5 là gì?
MetaEditor biên dịch MQ5 thành EX5 chạy được. Có thể phân phối tệp biên dịch không nguồn; học MQL5 không làm lộ thuật toán EX5 chưa công bố. EA có thể gửi yêu cầu được phép. Chỉ báo có thể tính/thông báo nhưng sự kiện và cấm chức năng giao dịch khác; nói “chỉ vẽ” cũng chưa đủ.
EA MQL5 dùng MT5; MT4 cũng dùng tên EA nhưng ngôn ngữ/giao diện riêng. Hệ tự động khác có thể dùng giao diện đặt lệnh khác. EA trong MT4/MT5 và Bước đầu tự động hóa giúp so phụ thuộc.
Chỉ số 0 chưa chắc nến đóng gần nhất
Giả định CopyBuffer thành công với start_pos=1,count=3 vào mảng thông thường không AS_SERIES. Chọn ba giá trị nến đã đóng; cũ nhất trước trong bộ nhớ vật lý. Đúng cấu hình này, giá trị nến đóng gần nhất ở chỉ số 2.
Vuốt ngang để xem hết sơ đồ →
Cuộn ngang để xem hết sơ đồ.
Giá trị hư cấu 103,101,102; trả đúng 3 phần tử, không lỗi hoặc thiếu. Mảng thông thường không AS_SERIES; ngưỡng>102.5 chỉ kiểm chọn dữ liệu, không tín hiệu giao dịch. Tài liệu CopyBuffer nêu start_pos đếm từ nến hiện và phần tử cũ nhất ở đầu bộ nhớ vật lý.
Ghi start_pos, số trả về và hướng đánh chỉ số mảng đích. Đủ số nhưng sai thứ tự vẫn chọn sai nến. Không áp chỉ số 2 cho mọi cài đặt.
OnInit,OnTick,OnDeinit và sự kiện khác
OnInit xử lý khởi tạo, không bảo đảm chỉ gọi một lần suốt đời sử dụng. Kiểm tài nguyên, trả trạng thái thất bại nếu thiết lập cần chưa hoàn tất.
OnTick xử lý NewTick của symbol biểu đồ gắn. Khi sự kiện này đã trong hàng đợi hoặc đang xử lý, không thêm sự kiện mới cùng loại. EA có thể dùng sự kiện khác và không cần OnTick. Tắt AutoTrading ngăn yêu cầu giao dịch mới, không dừng chương trình hoặc ngắt handler hiện.
OnDeinit xử lý dỡ/khởi tạo lại và lý do, như gỡ, đóng hoặc đổi cấu hình gây khởi tạo lại. Quản lý tài nguyên/trạng thái đã lưu. OnTimer/OnTradeTransaction có thể thiết yếu; không chỉ ba callback. EA nhiều symbol không được suy tick biểu đồ khiến mọi dữ liệu symbol khác mới.
Yêu cầu, CTrade và khớp thật
OrderSend gửi yêu cầu; true chưa xác nhận khớp. Kiểm mã phản hồi, đối soát order/deal/position. OrderCheck là tiền kiểm, không bảo đảm khớp sau. Thử lỗi hư cấu:yêu cầu mua 0.10 lot nhưng mất chắc chắn về phản hồi; gửi lại không đối soát có thể thành 0.20 lot nếu cả hai khớp. Thiếu xác nhận cục bộ chưa nghĩa máy chủ chưa làm gì.
OnTradeTransaction tách xóa order với thêm deal vào lịch sử, không bảo đảm thứ tự ưu tiên thông báo. Không vị thế đầu, hai mua đã xác nhận D1=0.04,D2=0.06 lot. Bộ đếm lỗi đặt 0 khi ORDER_DELETE cho 0 sau D1,D2,ORDER_DELETE nhưng 0.10 sau ORDER_DELETE,D1,D2. Tổng mua xác nhận đều 0.10. Trạng thái order khác phơi nhiễm vị thế; sổ thật còn cần bán, đảo, sửa lịch sử và chế độ tài khoản.
CTrade có Buy,Sell,PositionClose. Kiểm Buy thành công chưa luôn giao dịch thành công; xem ResultRetcode và ResultDeal. Trượt giá là chênh giá khớp cần xét riêng.
Strategy Tester và dữ liệu đánh giá
Strategy Tester MT5 kiểm lịch sử bằng tick tạo hoặc tick thật do broker thu, tùy chế độ/dữ liệu. Ghi nguồn, giờ, hợp đồng và phí; không mặc định tick thật từ nguồn giá MetaQuotes chung.
Chọn tham số trên chính lịch sử dùng đánh giá có thể phóng đại bằng chứng, không bảo đảm toán học đường mượt hoặc thất bại tiền thật. Giữ kỳ chưa chạm để đánh giá, ghi các lựa chọn nghiên cứu đã thử. Kiểm thử lịch sử cần cả phương pháp lựa chọn.
Khi nào tự động hóa phù hợp yêu cầu?
EA có thể làm kiểm lặp và theo dõi công cụ đã chọn.200 lệnh/tháng, chạy đêm hoặc quyết định nhanh là yêu cầu thiết kế có thể có, không bằng chứng lợi thế.
Định đầu vào/sự kiện, gồm điều kiện không giao dịch. Tin bất thường/điều kiện thị trường cần kiểm và giám sát, không tự loại mọi tự động hóa. Biểu đồ marketplace hoặc khảo sát diễn đàn không rõ nguồn chưa ước lượng đáng tin hiệu suất thật tới.
Tự viết EA:phạm vi và vận hành
Dự án EA nhỏ giúp kiểm quy tắc chính xác có được triển khai đúng. Ngân sách học theo kỹ năng/phạm vi; ba–sáu tháng hoặc tự viết thay mua chưa bảo đảm tốt hơn.
Chạy không người cần hạ tầng, quyền và phục hồi. AutoTrading cục bộ không đóng vị thế hoặc dừng tính. Stop thường đã nhận ở server có thể còn sau đóng terminal; thoát chỉ do EA cần chương trình chạy và tới server. MetaQuotes Virtual Hosting là môi trường di trú riêng, cho phép tự động giao dịch; nút local không dừng bản xa đó. Windows VPS là dịch vụ khác. VPS và đường truyền cần xét đúng môi trường.
Định kiểm chấp nhận cho thiếu dữ liệu, khởi động lại, bước lot sai, phản hồi chưa rõ, sửa vị thế tay. Khôi phục phơi nhiễm hiện trước chạy tiếp, không tin tín hiệu local cũ. Netting cùng symbol dùng chung vị thế ròng; Magic Number không tạo vốn/margin riêng.
Có handle, dữ liệu đã dùng được chưa?
Có handle chưa chứng minh chỉ báo tính xong nến cần. BarsCalculated trả số dữ liệu đã tính hoặc−1 khi lỗi. Tiếp kiểm số CopyBuffer thật, đúng buffer và offset nến. Không đổi đọc lỗi thành 0:RSI 0 là một trạng thái, không “chưa có thông tin”.
Bốn lớp kiểm khả dụng
Cuộn ngang để xem hết sơ đồ.
Mô hình cần một giá trị:(A)handle không hợp lệ:không đọc;(B)có handle nhưng 0 phần tử chép:chờ;(C)chép 1 nhưng EMPTY_VALUE:không tín hiệu dùng được;(D)chép 1 giá trị hợp lệ 45:mới đánh giá luật.45 hư cấu không là tín hiệu đầu tư.
EMPTY_VALUE mặc định DBL_MAX, là số hữu hạn; chỉ kiểm finite chưa đủ. Chỉ báo tùy chỉnh có thể dùng marker rỗng khác. Kiểm hợp đồng của nó, không loại mọi 0. Thiếu lịch sử, marker rỗng và số hợp lệ là các trạng thái khác.
Bài tập:có handle và chép một giá trị, nhưng là EMPTY_VALUE. Làm gì tiếp?
Chưa đánh ngưỡng chiến lược. Kiểm buffer, nến, marker rỗng, ghi dữ liệu chưa dùng được rồi thử ở sự kiện thích hợp tiếp. Không bịa quan sát 0.
Dữ liệu API cần kiểm khả dụng riêng: Phát lại thông tin ngoại tuyến. Quy tắc phụ thuộc biểu đồ có giới hạn riêng: So kiểm trực quan.
Các bước thực hành tiếp theo
- Trong môi trường demo phù hợp, mở Strategy Tester MT5; xem EA mẫu Moving Average hoặc MACD Sample trên EUR/USD H1, chạy một lượt rồi đọc equity, drawdown, profit factor. Đây bài học đọc báo cáo, không chứng minh giao dịch thật sẽ giống.
- Mở tài liệu chính thức mql5.com/en/docs, tìm OnInit,OnTick,CTrade để biết cấu trúc và ví dụ. Chưa cần viết ngay, không thời hạn học bảo đảm.
- Viết đầu vào, vào/thoát, cỡ và điều kiện không giao dịch. Đánh dấu quyết định tùy nghi; bối cảnh có thể đặc tả nếu định đủ dữ liệu/điều kiện. Bảng kiểm setup.
- Lập dự án học nhỏ với tiêu chí dữ liệu, sự kiện và phản hồi. Phạm vi/thời gian theo chức năng và kỹ năng cần.
- Kiểm quy trình demo trước cân nhắc rủi ro thật. Một tháng chỉ minh họa; demo có thể khác khớp thật. Tester mô phỏng trễ không đo mọi khớp thực tương lai.
Cùng bộ nhớ nhưng hai cách đánh chỉ số
Giữ đúng ba phần tử đã chép ở hình:thứ tự vật lý 103,101,102 tương ứng shift 3,2,1; shift 0 không có. Thay mảng đích bằng mảng động một chiều và đặt AS_SERIES=true thành công:chỉ số logic 0 giờ trỏ 102, chỉ số 1 trỏ 101, chỉ số 2 trỏ 103. Dữ liệu lịch sử không đổi, cách truy cập đổi. Đặt lại false thành công thì chỉ số 0 lại trỏ 103.
Tách shift nguồn, bộ nhớ vật lý và chỉ số logic. Mô hình ánh xạ không là chạy MT5 hoặc khuyến nghị tín hiệu. 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.
ArraySetAsSeries không đặt được cờ cho mảng tĩnh đã định kích thước lúc biên dịch hoặc mảng nhiều chiều. Vì vậy đừng thêm lời gọi rồi giả định thành công; kiểm kết quả và hướng thực với ArrayGetAsSeries. Giữ trong log buffer_num,start_pos,count yêu cầu/count trả, kiểu mảng và cờ. Đây mô hình ánh xạ chỉ số theo tài liệu, không đã biên dịch/chạy EA. Không được thay đáp án bài tập nguồn:đề dùng mảng thường không AS_SERIES nên 102 vẫn ở chỉ số 2.
Kiểm tra mức độ hiểu bài
Bài tập: khoảng 2 phút.
Xem đáp án và giải thích
Bộ nhớ vật lý bắt đầu phần tử cũ nhất; cuối ở chỉ số2 giữ shift1 trong mảng thường này.
Câu hỏi khác
EA MQL5 khác bot Python thế nào?
Chạy EA cần biết code?
Vì sao tester đẹp mà thật lỗ?
Có bắt buộc VPS?
AS_SERIES=true có khiến mảng chứa nến hiện?
Nguồn và kiểm chứng
- www.mql5.com
Nguồn tham khảo cho nội dung; xem phạm vi và giả định được nêu trong bài.
- www.mql5.com
Nguồn tham khảo cho nội dung; xem phạm vi và giả định được nêu trong bài.
- www.mql5.com
Nguồn tham khảo cho nội dung; xem phạm vi và giả định được nêu trong bài.
- www.mql5.com
Nguồn tham khảo cho nội dung; xem phạm vi và giả định được nêu trong bài.
- www.mql5.com
Nguồn tham khảo cho nội dung; xem phạm vi và giả định được nêu trong bài.
- www.mql5.com
Nguồn tham khảo cho nội dung; xem phạm vi và giả định được nêu trong bài.
- www.metatrader5.com
Nguồn tham khảo cho nội dung; xem phạm vi và giả định được nêu trong bài.
Các phép tính dùng giả định được nêu rõ. Chúng không thay thế dữ liệu thị trường hiện tại hoặc điều khoản của nhà cung cấp.
