Dự án
Các sản phẩm phần mềm, theo quy tắc, được phát triển trong chu kỳ đời sống tiêu chuẩn:
- Thu thập và bổ sung yêu cầu
- Thiết kế
- Phát triển
- Kiểm thử
- Vận hành
Kết quả của việc cải tiến liên tục và mở rộng chức năng, thường cần thiết phải hệ thống hóa các tệp nguồn, tài nguyên và thư viện bên thứ ba (ở đây chúng ta không chỉ nói đến các thư viện định dạng nhị phân mà theo nghĩa tổng quát hơn, bất kỳ tập hợp tệp nào, ví dụ như tệp tiêu đề). Hơn nữa, các chương trình riêng lẻ được tích hợp vào một sản phẩm chung thể hiện một ý tưởng ứng dụng.
Cấu trúc và chu kỳ đời sống của dự án
Ví dụ, khi phát triển một robot giao dịch, thường cần kết nối các chỉ báo có sẵn hoặc tùy chỉnh, việc sử dụng các thuật toán học máy bên ngoài đòi hỏi viết kịch bản để xuất dữ liệu báo giá và kịch bản để nhập lại các mô hình đã được huấn luyện, còn các chương trình liên quan đến trao đổi dữ liệu qua Internet (ví dụ, tín hiệu giao dịch) có thể yêu cầu máy chủ web và cài đặt của nó bằng các ngôn ngữ lập trình khác, ít nhất là để gỡ lỗi và kiểm thử, nếu không phải để triển khai một dịch vụ công cộng.
Toàn bộ tổ hợp của nhiều sản phẩm liên quan lẫn nhau, cùng với dependencies
của chúng (có nghĩa là các tài nguyên và thư viện được sử dụng, được viết độc lập hoặc lấy từ nguồn bên thứ ba), tạo thành một dự án phần mềm.
Khi một chương trình vượt quá một kích thước nhất định, việc phát triển tiện lợi và hiệu quả của nó trở nên khó khăn nếu không có các công cụ quản lý dự án đặc biệt. Điều này hoàn toàn áp dụng cho các chương trình dựa trên MQL5, vì nhiều nhà giao dịch sử dụng các hệ thống giao dịch phức tạp.
MetaEditor hỗ trợ khái niệm dự án tương tự như các gói phần mềm khác. Hiện tại, chức năng này đang ở giai đoạn đầu phát triển, và đến khi cuốn sách được phát hành, nó có thể sẽ thay đổi.
Khi làm việc với các dự án trong MQL5, hãy nhớ rằng thuật ngữ project
trong nền tảng được sử dụng cho hai thực thể khác nhau:
- Dự án cục bộ dưới dạng tệp mqproj
- Các thư mục trong bộ nhớ đám mây MQL5
Một dự án cục bộ cho phép bạn hệ thống hóa và tập hợp tất cả thông tin về mã nguồn, tài nguyên và cài đặt cần thiết để xây dựng một chương trình MQL cụ thể. Dự án như vậy chỉ tồn tại trên máy tính của bạn và có thể tham chiếu đến các tệp từ các thư mục khác nhau.
Tệp có phần mở rộng mqproj
có định dạng văn bản JSON (JavaScript Object Notation) phổ biến, phổ quát. Nó tiện lợi, đơn giản và rất phù hợp để mô tả dữ liệu của bất kỳ lĩnh vực chủ đề nào: tất cả thông tin được nhóm thành các đối tượng hoặc mảng với các thuộc tính được đặt tên, hỗ trợ các giá trị thuộc nhiều loại khác nhau. Tất cả điều này khiến JSON rất gần gũi về mặt khái niệm với các ngôn ngữ OOP; nó cũng xuất phát từ JavaScript hướng đối tượng, như bạn có thể dễ dàng đoán từ tên gọi.
Bộ nhớ đám mây hoạt động dựa trên hệ thống kiểm soát phiên bản và làm việc nhóm trên phần mềm gọi là SVN (Subversion). Ở đây, một dự án là thư mục cấp cao nhất bên trong thư mục cục bộ MQL5/Shared Projects
, được gán một thư mục khác có cùng tên nhưng nằm trên máy chủ MQL5 Storage. Trong một thư mục dự án, bạn có thể tổ chức một hệ thống phân cấp các thư mục con. Như tên gọi của nó, các dự án mạng có thể được chia sẻ với các nhà phát triển khác và thường được công khai (nội dung có thể được tải xuống bởi bất kỳ ai đăng ký trên mql5.com).
Hệ thống cung cấp đồng bộ hóa theo yêu cầu (sử dụng các lệnh đặc biệt của người dùng) giữa hình ảnh thư mục trên đám mây và trên ổ đĩa cục bộ, và ngược lại. Bạn có thể vừa “kéo” các thay đổi dự án của người khác về máy tính của mình, vừa “đẩy” các chỉnh sửa của bạn lên đám mây. Cả hình ảnh thư mục đầy đủ và các tệp được chọn lọc đều có thể được đồng bộ hóa, bao gồm, tất nhiên, các tệp mq5, tệp tiêu đề mqh, đa phương tiện, cài đặt (tệp set), cũng như tệp mqproj. Để biết thêm thông tin về bộ nhớ đám mây, hãy đọc tài liệu của MetaEditor và hệ thống SVN.
Điều quan trọng cần lưu ý là sự tồn tại của một tệp mqproj không ngụ ý việc tạo ra bất kỳ dự án đám mây nào dựa trên nó, cũng như việc tạo một thư mục chia sẻ không bắt buộc bạn phải sử dụng một dự án mqproj.
Tại thời điểm viết bài này, một tệp mqproj chỉ có thể mô tả cấu trúc của một chương trình, không phải nhiều chương trình. Tuy nhiên, vì yêu cầu này phổ biến khi phát triển các dự án phức tạp, chức năng này có lẽ sẽ được thêm vào MetaEditor trong tương lai.
Trong chương này, chúng ta sẽ mô tả các chức năng chính để tạo và tổ chức các dự án mqproj và đưa ra một loạt ví dụ.