Sự kiện Terminal Khách hàng
Init
Ngay sau khi terminal khách hàng tải một chương trình (Expert Advisor hoặc chỉ báo tùy chỉnh) và bắt đầu quá trình khởi tạo các biến toàn cục, sự kiện Init
sẽ được gửi, và được xử lý bởi trình xử lý sự kiện OnInit(), nếu có. Sự kiện này cũng được tạo ra sau khi thay đổi công cụ tài chính và/hoặc khung thời gian biểu đồ, sau khi chương trình được biên dịch lại trong MetaEditor, sau khi thay đổi tham số đầu vào từ cửa sổ cài đặt của Expert Advisor hoặc chỉ báo tùy chỉnh. Expert Advisor cũng được khởi tạo sau khi tài khoản thay đổi. Sự kiện Init
không được tạo ra cho script.
Deinit
Trước khi các biến toàn cục được hủy khởi tạo và chương trình (Expert Advisor hoặc chỉ báo tùy chỉnh) được gỡ bỏ, terminal khách hàng gửi sự kiện Deinit
đến chương trình. Sự kiện Deinit
cũng được tạo ra khi terminal khách hàng đóng, khi biểu đồ đóng, ngay trước khi công cụ tài chính và/hoặc khung thời gian thay đổi, khi chương trình được biên dịch lại thành công, khi tham số đầu vào thay đổi, và khi tài khoản thay đổi.
Lý do hủy khởi tạo có thể được lấy từ tham số truyền vào hàm OnDeinit(). Việc chạy hàm OnDeinit()
bị giới hạn trong 2,5 giây. Nếu trong thời gian này hàm chưa hoàn thành, nó sẽ bị chấm dứt cưỡng chế. Sự kiện Deinit
không được tạo ra cho script.
Start
Start
là một sự kiện đặc biệt để khởi chạy script hoặc dịch vụ sau khi tải nó. Nó được xử lý bởi hàm OnStart. Sự kiện Start
không được truyền đến Expert Advisors và chỉ báo tùy chỉnh.
NewTick
Sự kiện NewTick
được tạo ra nếu có báo giá mới, nó được xử lý bởi OnTick() của Expert Advisors đã gắn. Trong trường hợp hàm OnTick
cho báo giá trước đó đang được xử lý khi nhận báo giá mới, báo giá mới sẽ bị Expert Advisor bỏ qua, vì sự kiện tương ứng sẽ không được xếp hàng.
Tất cả các báo giá mới nhận được trong khi chương trình đang chạy sẽ bị bỏ qua cho đến khi OnTick()
hoàn thành. Sau đó, hàm sẽ chỉ chạy sau khi nhận được báo giá mới. Sự kiện NewTick
được tạo ra bất kể giao dịch tự động có được phép hay không (nút "Cho phép/Cấm giao dịch tự động"). Việc cấm giao dịch tự động chỉ có nghĩa là việc gửi yêu cầu giao dịch từ Expert Advisor không được phép, trong khi Expert Advisor vẫn tiếp tục hoạt động.
Việc cấm giao dịch tự động bằng cách nhấn nút tương ứng sẽ không dừng việc thực thi hiện tại của hàm OnTick()
.
Calculate
Sự kiện Calculate
chỉ được tạo ra cho các chỉ báo ngay sau khi sự kiện Init
được gửi và tại bất kỳ thay đổi nào của dữ liệu giá. Nó được xử lý bởi hàm OnCalculate.
Timer
Sự kiện Timer
được terminal khách hàng tạo ra định kỳ cho Expert Advisor đã kích hoạt bộ đếm thời gian bằng hàm EventSetTimer. Thông thường, hàm này được gọi bởi OnInit
. Việc xử lý sự kiện Timer
được thực hiện bởi hàm OnTimer. Sau khi hoạt động của Expert Advisor hoàn tất, cần hủy bộ đếm thời gian bằng hàm EventKillTimer, thường được gọi trong hàm OnDeinit
.
Trade
Sự kiện Trade
được tạo ra khi một hoạt động giao dịch hoàn tất trên máy chủ giao dịch. Sự kiện Trade
được xử lý bởi hàm OnTrade() cho các hoạt động giao dịch sau:
- Gửi, sửa đổi hoặc xóa lệnh chờ
- Hủy lệnh chờ do không đủ tiền hoặc hết hạn
- Kích hoạt lệnh chờ
- Mở, thêm hoặc đóng vị thế (hoặc một phần vị thế)
- Sửa đổi vị thế đang mở (thay đổi điểm dừng – Stop Loss và/hoặc Take Profit)
TradeTransaction
Khi thực hiện một số hành động nhất định trên tài khoản giao dịch, trạng thái của nó thay đổi. Các hành động này bao gồm:
- Gửi yêu cầu giao dịch từ bất kỳ ứng dụng MQL5 nào trong terminal khách hàng bằng hàm OrderSend và OrderSendAsync và việc thực thi tiếp theo của nó
- Gửi yêu cầu giao dịch qua giao diện đồ họa của terminal và việc thực thi tiếp theo của nó
- Kích hoạt lệnh chờ và lệnh dừng trên máy chủ
- Thực hiện các hoạt động ở phía máy chủ giao dịch
Các giao dịch thương mại sau được thực hiện từ những hành động này:
- Xử lý yêu cầu giao dịch
- Thay đổi các lệnh đang mở
- Thay đổi lịch sử lệnh
- Thay đổi lịch sử giao dịch
- Thay đổi vị thế
Ví dụ, khi gửi lệnh mua thị trường, nó được xử lý, một lệnh mua tương ứng được tạo cho tài khoản, sau đó lệnh được thực thi và xóa khỏi danh sách các lệnh đang mở, rồi được thêm vào lịch sử lệnh, một giao dịch tương ứng được thêm vào lịch sử và một vị thế mới được tạo. Tất cả các hành động này là giao dịch thương mại. Sự xuất hiện của giao dịch như vậy tại terminal là sự kiện TradeTransaction
. Sự kiện này được xử lý bởi hàm OnTradeTransaction.
Tester
Sự kiện Tester
được tạo ra sau khi kiểm tra Expert Advisor trên dữ liệu lịch sử kết thúc. Sự kiện được xử lý bởi hàm OnTester().
TesterInit
Sự kiện TesterInit
được tạo ra khi bắt đầu tối ưu hóa trong Strategy Tester trước lần tối ưu hóa đầu tiên. Sự kiện TesterInit
được xử lý bởi hàm OnTesterInit().
TesterPass
Sự kiện TesterPass
được tạo ra khi nhận được một khung dữ liệu mới. Sự kiện TesterPass
được xử lý bởi hàm OnTesterPass().
TesterDeinit
Sự kiện TesterDeinit
được tạo ra sau khi kết thúc tối ưu hóa Expert Advisor trong Strategy Tester. Sự kiện TesterDeinit
được xử lý bởi hàm OnTesterDeinit().
ChartEvent
Sự kiện ChartEvent
được tạo ra bởi terminal khách hàng khi người dùng làm việc với biểu đồ:
- Nhấn phím, khi cửa sổ biểu đồ đang được tập trung
- Đối tượng đồ họa được tạo
- Đối tượng đồ họa bị xóa
- Nhấn chuột trên đối tượng đồ họa của biểu đồ
- Di chuyển đối tượng đồ họa bằng chuột
- Kết thúc chỉnh sửa văn bản trong LabelEdit
Ngoài ra, còn có sự kiện tùy chỉnh ChartEvent
, có thể được gửi đến Expert Advisor bởi bất kỳ chương trình MQL5 nào bằng hàm EventChartCustom. Sự kiện này được xử lý bởi hàm OnChartEvent.
BookEvent
Sự kiện BookEvent
được terminal khách hàng tạo ra sau khi Độ sâu Thị trường thay đổi; nó được xử lý bởi hàm OnBookEvent. Để bắt đầu tạo BookEvent
cho biểu tượng được chỉ định, cần đăng ký biểu tượng cho sự kiện này bằng hàm MarketBookAdd.
Để hủy đăng ký BookEvent
cho một biểu tượng được chỉ định, cần gọi hàm MarketBookRelease. Sự kiện BookEvent
là sự kiện loại phát sóng - nghĩa là chỉ cần đăng ký một Expert Advisor cho sự kiện này, và tất cả các Expert Advisor khác có trình xử lý sự kiện OnBookEvent
sẽ nhận được nó. Do đó, cần phân tích tên biểu tượng, được truyền vào trình xử lý dưới dạng tham số.
Xem thêm