Hàm gửi dữ liệu từ Google Sheet tới MQL4, cấp bản quyền EA

 1. Giới thiệu

  • Trong phát triển Expert Advisor (EA) trên MT4, một trong những yêu cầu quan trọng là cấp và quản lý bản quyền. Thay vì lưu thông tin cố định trong code, nhiều lập trình viên hiện nay sử dụng Google Sheet như một cơ sở dữ liệu đơn giản, miễn phí và dễ quản lý.
  • Trong bài viết này, chúng ta sẽ tìm hiểu cách viết hàm MQL4 để lấy dữ liệu từ Google Sheet về MT4, qua đó cấp quyền sử dụng EA cho từng tài khoản giao dịch.
  • Từ khóa chính: MQL4 Google Sheet, cấp bản quyền EA MT4, kết nối Google Sheet MQL4, kiểm tra license EA.
Hàm gửi dữ liệu từ Google Sheet tới MQL4, cấp bản quyền EA

2. Tại sao dùng Google Sheet để quản lý bản quyền EA?

  • Miễn phí & tiện lợi: Google Sheet hoạt động như một cơ sở dữ liệu online.
  • Quản lý tập trung: Dễ dàng thêm, sửa hoặc xóa tài khoản được cấp quyền.
  • Tích hợp nhanh: Có thể kết nối trực tiếp qua API.
  • Tính mở rộng: Hỗ trợ nhiều EA hoặc chỉ báo cùng lúc.
  • Ví dụ: bạn có thể lưu danh sách tài khoản MT4 hợp lệ trong Google Sheet, sau đó EA sẽ kiểm tra tài khoản có nằm trong danh sách đó không.

3. Chuẩn bị trước khi lập trình

Để thực hiện kết nối, bạn cần chuẩn bị:

  • Một Google Sheet chứa dữ liệu bản quyền, ví dụ:
  • Login MT4 Status Expiry Date
  • 1234567 Active 2025-12-31
  • 7654321 Expired 2024-06-30
  • Chia sẻ Google Sheet ở chế độ công khai (hoặc chỉ đọc với link).
  • Vào File → Share → Publish to the web.
  • Lấy link dưới dạng CSV hoặc JSON.

Ví dụ link CSV:

  • https://docs.google.com/spreadsheets/d/ID/export?format=csv
  • Trong MT4, bật quyền cho phép WebRequest:
  • Vào Tools → Options → Expert Advisors.
  • Tick Allow WebRequest for listed URL.
  • Thêm đường dẫn Google Sheet CSV/JSON.

4. Code MQL4 đọc dữ liệu từ Google Sheet

Hàm đọc dữ liệu từ URL

// Hàm tải dữ liệu từ Google Sheet

string LoadFromWeb(string url)

{

   char data[];

   string result = "";

   int res = WebRequest("GET", url, NULL, NULL, 0, data, result, NULL);

   

   if(res == -1)

   {

      Print("Lỗi WebRequest: ", GetLastError());

      return "";

   }

   return CharArrayToString(data, 0, -1);

}

Hàm kiểm tra bản quyền EA

// Kiểm tra tài khoản MT4 có trong danh sách Google Sheet không

bool CheckLicense(string url)

{

   string content = LoadFromWeb(url);

   if(content == "") return false;


   int login = AccountInfoInteger(ACCOUNT_LOGIN);

   string loginStr = IntegerToString(login);


   // Nếu dùng CSV, tách theo dòng

   string rows[];

   int total = StringSplit(content, '\n', rows);


   for(int i=0; i<total; i++)

   {

      if(StringFind(rows[i], loginStr) != -1 && StringFind(rows[i], "Active") != -1)

      {

         Print("✅ License hợp lệ cho tài khoản: ", loginStr);

         return true;

      }

   }

   Print("❌ License không hợp lệ!");

   return false;

}

Sử dụng trong EA

int OnInit()

{

   string sheet_url = "https://docs.google.com/spreadsheets/d/ID/export?format=csv";

   if(!CheckLicense(sheet_url))

      return(INIT_FAILED); // Ngắt EA nếu không có license

   return(INIT_SUCCEEDED);

}

5. Mở rộng chức năng

  • Hạn dùng License: So sánh ngày Expiry Date với TimeCurrent().
  • Quản lý nhiều EA: Thêm cột EA Name trong Google Sheet để phân biệt.
  • Bảo mật: Thay vì công khai link, có thể triển khai Google Apps Script làm API riêng, chỉ trả dữ liệu cần thiết.

6. Kết luận

Bằng cách sử dụng Google Sheet và MQL4 WebRequest, bạn có thể dễ dàng tạo hệ thống cấp bản quyền EA một cách linh hoạt và chuyên nghiệp. Đây là giải pháp phù hợp cho các lập trình viên muốn quản lý nhiều khách hàng mà không cần xây dựng server riêng.

Mới hơn Cũ hơn