Quyền Giao dịch
Tự động hóa Giao dịch
Ngôn ngữ MQL5 cung cấp một nhóm đặc biệt các hàm giao dịch được thiết kế để phát triển các hệ thống giao dịch tự động. Các chương trình được phát triển để giao dịch tự động mà không cần sự can thiệp của con người được gọi là Expert Advisors hoặc robot giao dịch. Để tạo một Expert Advisor trong MetaEditor, hãy khởi chạy MQL5 Wizard và chọn một trong hai tùy chọn:
- Expert Advisor (mẫu) – cho phép bạn tạo một mẫu với các hàm xử lý sự kiện sẵn có, cần được bổ sung tất cả các chức năng cần thiết thông qua lập trình.
- Expert Advisor (tạo) – cho phép bạn phát triển một robot giao dịch hoàn chỉnh chỉ bằng cách chọn các mô-đun cần thiết: mô-đun tín hiệu giao dịch, mô-đun quản lý tiền và mô-đun dừng lỗ kéo theo.
Các hàm giao dịch chỉ có thể hoạt động trong Expert Advisors và script. Giao dịch không được phép đối với chỉ báo.
Kiểm tra Quyền Thực hiện Giao dịch Tự động
Để phát triển một Expert Advisor đáng tin cậy có khả năng hoạt động mà không cần sự can thiệp của con người, cần thực hiện một loạt các kiểm tra quan trọng. Đầu tiên, chúng ta nên kiểm tra theo chương trình xem giao dịch có được phép hay không. Đây là kiểm tra cơ bản không thể thiếu khi phát triển bất kỳ hệ thống tự động nào.
Kiểm tra quyền thực hiện giao dịch tự động trong terminal
Cài đặt terminal cung cấp khả năng cho phép hoặc cấm giao dịch tự động cho tất cả các chương trình.
Bạn có thể bật/tắt tùy chọn giao dịch tự động ngay trên bảng Tiêu chuẩn của terminal:
– giao dịch tự động được bật, các hàm giao dịch trong các ứng dụng đã khởi chạy được phép sử dụng.
– giao dịch tự động bị tắt, các ứng dụng đang chạy không thể thực thi các hàm giao dịch.
Ví dụ kiểm tra:
if (!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
Alert("Kiểm tra xem giao dịch tự động có được phép trong cài đặt terminal không!");
2
Kiểm tra xem giao dịch có được phép cho một Expert Advisor/script đang chạy cụ thể hay không
Bạn có thể cho phép hoặc cấm giao dịch tự động cho một chương trình cụ thể khi khởi chạy nó. Để làm điều này, sử dụng hộp kiểm đặc biệt trong thuộc tính chương trình.
Ví dụ kiểm tra:
if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
Alert("Kiểm tra xem giao dịch tự động có được phép trong cài đặt terminal không!");
else
{
if(!MQLInfoInteger(MQL_TRADE_ALLOWED))
Alert("Giao dịch tự động bị cấm trong cài đặt chương trình cho ",__FILE__);
}
2
3
4
5
6
7
Kiểm tra xem giao dịch có được phép cho bất kỳ Expert Advisors/script nào cho tài khoản hiện tại hay không
Giao dịch tự động có thể bị tắt ở phía máy chủ giao dịch. Ví dụ kiểm tra:
if(!AccountInfoInteger(ACCOUNT_TRADE_EXPERT))
Alert("Giao dịch tự động bị cấm cho tài khoản ",AccountInfoInteger(ACCOUNT_LOGIN),
" tại phía máy chủ giao dịch");
2
3
Nếu giao dịch tự động bị tắt cho một tài khoản giao dịch, các hoạt động giao dịch của Expert Advisors/script sẽ không được thực thi.
Kiểm tra xem giao dịch có được phép cho tài khoản hiện tại hay không
Trong một số trường hợp, bất kỳ hoạt động giao dịch nào cũng bị tắt cho một tài khoản giao dịch cụ thể – cả giao dịch thủ công và tự động đều không thể thực hiện được. Ví dụ kiểm tra khi mật khẩu nhà đầu tư đã được sử dụng để kết nối với tài khoản giao dịch:
if(!AccountInfoInteger(ACCOUNT_TRADE_ALLOWED))
Comment("Giao dịch bị cấm cho tài khoản ",AccountInfoInteger(ACCOUNT_LOGIN),
".\n Có thể mật khẩu nhà đầu tư đã được sử dụng để kết nối với tài khoản giao dịch.",
"\n Kiểm tra nhật ký terminal để tìm mục sau:",
"\n'",AccountInfoInteger(ACCOUNT_LOGIN),": giao dịch đã bị tắt - chế độ nhà đầu tư.");
2
3
4
5
AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)
có thể trả về false
trong các trường hợp sau:
- Không có kết nối với máy chủ giao dịch. Điều này có thể được kiểm tra bằng
TerminalInfoInteger(TERMINAL_CONNECTED)
. - Tài khoản giao dịch chuyển sang chế độ chỉ đọc (được gửi vào lưu trữ).
- Giao dịch trên tài khoản bị tắt ở phía máy chủ giao dịch.
- Kết nối với tài khoản giao dịch đã được thực hiện ở chế độ Nhà đầu tư.
Xem thêm
Thuộc tính Terminal Khách hàng, Thuộc tính Tài khoản, Thuộc tính của Chương trình MQL5 Đang Chạy