Quy tắc chung khi làm việc với các dự án cục bộ
Một dự án cục bộ (tệp mqproj) có thể được tạo từ menu chính của MetaEditor hoặc từ menu ngữ cảnh của Navigator
bằng các lệnh New project
hoặc New project from source file
. Trong trường hợp thứ hai, tệp phải được chọn trước trong Navigator
hoặc được chọn trong hộp thoại Open
. Kết quả là, tệp mq5 được chỉ định sẽ được thêm ngay lập tức vào dự án. Lệnh đầu tiên trong số các lệnh đã đề cập sẽ khởi chạy MQL Wizard, trong đó bạn nên chọn loại chương trình hoặc tùy chọn dự án trống (các tệp nguồn có thể được thêm vào sau). Loại chương trình MQL cho dự án được chọn theo các bước thông thường của Wizard.
Dự án bao gồm một số phần logic giống như một cây (phân cấp) với tất cả các thành phần. Chúng được hiển thị trong bảng điều khiển bên trái của Navigator
, trong một tab riêng biệt Project
.
Navigator và thuộc tính dự án chỉ báo
Ngay sau khi tạo dự án hoặc sau đó bằng cách nhấp đúp vào gốc của cây, một bảng điều khiển để thiết lập các thuộc tính của chương trình MQL sẽ mở ra ở phần bên phải của cửa sổ. Tập hợp các thuộc tính thay đổi tùy thuộc vào loại chương trình.
Hầu hết các thuộc tính tương ứng với các chỉ thị #property
trong mã nguồn. Những thuộc tính này được ưu tiên: nếu bạn chỉ định chúng trong cả dự án và mã nguồn, các giá trị từ dự án sẽ được sử dụng.
Một số nhà phát triển có thể thích thiết lập thuộc tính tương tác trong hộp thoại hơn là mã hóa cứng trong mã nguồn. Ngoài ra, bạn có thể sử dụng cùng một tệp mq5 trong các dự án khác nhau và xây dựng các phiên bản của chương trình MQL với các cài đặt khác nhau (mà không thay đổi mã nguồn).
Một số thuộc tính chỉ có sẵn trong dự án. Ví dụ, bao gồm việc bật/tắt tối ưu hóa biên dịch và kiểm tra chia cho số không tích hợp.
Trong quá trình biên dịch dự án, hệ thống tự động phân tích các phụ thuộc, tức là các tệp tiêu đề được bao gồm, tài nguyên, v.v. Các phụ thuộc xuất hiện trong các nhánh khác nhau của phân cấp dự án. Cụ thể, các tệp tiêu đề từ thư mục chuẩn MQL5/Include được bao gồm trong các chỉ thị #include
sử dụng dấu ngoặc nhọn (<filename>
), thuộc về Dependencies
, còn các tệp tiêu đề tùy chỉnh được bao gồm bằng dấu ngoặc kép (#include "filename"
) thuộc về phần Headers
.
Ngoài ra, người dùng có thể thêm các tệp vào dự án liên quan đến sản phẩm phần mềm hoàn chỉnh và có thể cần thiết cho hoạt động bình thường hoặc trình diễn của nó (ví dụ, các tệp với mô hình mạng nơ-ron đã được huấn luyện) nhưng không được nhúng trực tiếp vào mã nguồn. Để phục vụ các mục đích này, bạn có thể sử dụng nhánh Settings and Files
. Menu ngữ cảnh của nó chứa các lệnh để thêm một tệp đơn lẻ hoặc toàn bộ thư mục vào dự án.
Cụ thể, chúng ta sẽ xem xét thêm các ví dụ về dự án sẽ bao gồm không chỉ các chương trình MQL phía máy khách mà còn cả phần máy chủ.
Các lệnh New file
và New folder
thêm một phần tử mới vào thư mục chứa tệp dự án: các phần tử như vậy luôn được tìm kiếm tương đối với chính dự án (trong tệp mqproj, chúng được đánh dấu bằng thuộc tính relative_to_project
bằng true
, xem thêm).
Các lệnh Add an existing file
và Add an existing folder
chọn một hoặc nhiều phần tử từ cấu trúc thư mục hiện có bên trong thư mục MQL5, và các phần tử này bên trong tệp mqproj được tham chiếu tương đối với gốc MQL5 (thuộc tính relative_to_project
bằng false
).
Thuộc tính relative_to_project
chỉ là một trong số ít thuộc tính được định nghĩa bởi các nhà phát triển MetaTrader 5 để biểu diễn dự án ở định dạng JSON. Hãy nhớ rằng kết quả của việc chỉnh sửa dự án (phân cấp và thuộc tính), một tệp mqproj ở định dạng JSON được hình thành.
Dưới đây là nội dung của tệp đó trông như thế nào đối với dự án trong hình ảnh trên.
{
"platform" :"mt5",
"program_type":"indicator",
"copyright" :"Copyright (c) 2015-2022, Marketeer",
"link" :"https://www.mql5.com/en/users/marketeer",
"version" :"1.0",
"description" :"Create 2 trend lines on highs and lows using Hough transform.",
"optimize" :"1",
"fpzerocheck" :"1",
"tester_no_cache":"0",
"tester_everytick_calculate":"0",
"unicode_character_set":"0",
"static_libraries":"0",
"indicator":
{
"window":"0"
},
"files":
[
{
"path":"HoughChannel.mq5",
"compile":true,
"relative_to_project":true
},
{
"path":"MQL5\\Include\\MQL5Book\\HoughTransform.mqh",
"compile":false,
"relative_to_project":false
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Chúng ta sẽ nói chi tiết hơn về các tính năng kỹ thuật của định dạng JSON trong các phần tiếp theo khi áp dụng nó trong các dự án demo của chúng ta.
Điều quan trọng cần lưu ý là tất cả các tệp được dự án tham chiếu không được lưu trữ bên trong tệp mqproj, do đó việc sao chép sang một vị trí mới hoặc chỉ di chuyển tệp dự án sang máy tính khác sẽ không khôi phục được nó. Để có thể di chuyển một dự án, hãy thiết lập một dự án chia sẻ cho nó và tải toàn bộ nội dung của dự án lên đám mây. Tuy nhiên, điều này có thể yêu cầu tái tổ chức cấu trúc hệ thống tệp cục bộ, vì tất cả các thành phần phải nằm trong thư mục dự án chia sẻ, trong khi định dạng mqproj không yêu cầu điều này.