Scripts và Services
Trong chương này, chúng ta sẽ tổng hợp và trình bày đầy đủ thông tin kỹ thuật về scripts và services mà chúng ta đã bắt đầu làm quen trong các phần trước của cuốn sách.
Scripts và services có cùng nguyên tắc tổ chức và thực thi mã chương trình. Như chúng ta đã biết, hàm chính của chúng là OnStart
cũng là hàm duy nhất. Scripts và services không thể xử lý các sự kiện khác.
Tuy nhiên, có một vài điểm khác biệt đáng kể. Scripts được thực thi trong ngữ cảnh của một biểu đồ và có quyền truy cập trực tiếp vào các thuộc tính của nó thông qua các biến tích hợp như _Symbol
, _Period
, _Point
, và các biến khác. Chúng ta sẽ nghiên cứu chúng trong phần Thuộc tính biểu đồ. Ngược lại, services hoạt động độc lập, không gắn với bất kỳ cửa sổ nào, mặc dù chúng có khả năng phân tích tất cả các biểu đồ bằng các hàm đặc biệt (các Hàm biểu đồ
tương tự cũng có thể được sử dụng trong các loại chương trình khác: scripts, chỉ báo và Expert Advisors).
Mặt khác, các phiên bản đã tạo của service được terminal tự động khôi phục trong các phiên tiếp theo. Nói cách khác, service, một khi được khởi động, luôn tiếp tục chạy cho đến khi người dùng dừng nó. Ngược lại, script sẽ bị xóa khi terminal bị tắt hoặc biểu đồ bị đóng.
Lưu ý rằng service được thực thi trong terminal, giống như tất cả các loại chương trình MQL khác, và do đó việc đóng terminal cũng sẽ dừng service. Service đang hoạt động sẽ tiếp tục chạy vào lần khởi động terminal tiếp theo. Hoạt động không gián đoạn của các chương trình MQL chỉ có thể được đảm bảo bằng một terminal chạy liên tục, ví dụ, trên VPS.
Trong scripts và services, bạn có thể thiết lập Các thuộc tính chung của chương trình bằng các chỉ thị #property
. Ngoài ra, còn có các thuộc tính đặc thù cho scripts và services; chúng ta sẽ thảo luận về chúng trong hai phần tiếp theo.
Các script hiện đang chạy trên các biểu đồ được liệt kê trong cùng danh sách hiển thị các Expert Advisors đang chạy — trong hộp thoại Experts
, được mở bằng lệnh Expert List
của menu ngữ cảnh biểu đồ. Từ đó, chúng có thể bị xóa khỏi biểu đồ một cách cưỡng chế.
Services chỉ có thể được quản lý từ cửa sổ Navigator
.