KhiemFX Monitor — Bộ cài BKHOST Pro 02
Phiên bản 1.0 RC — bản chạy thử. Tên miền dự kiến: https://ngockhiem.io.vn
Bộ này gồm web PHP/MySQL và EA chỉ đọc dữ liệu MT5. EA không có chức năng vào/đóng/sửa lệnh. Web dựng theo bố cục ảnh mẫu: tổng quan, từng tài khoản, biểu đồ, lịch lợi nhuận và quản trị. Đây không phải mã nguồn của website mẫu và chưa xác minh giống 100% công thức/chức năng ẩn của website đó.
1. Bắt đầu ở đâu?
Bạn đang mua hosting: chọn Pro 02, xem kỹ chu kỳ thanh toán, VAT và phí gia hạn. Xác nhận với BKHOST gói cho phép nhận HTTPS POST/JSON từ khoảng 20–40 MT5, PHP 8.2 trở lên, PDO MySQL, MySQL/MariaDB, Cron Jobs và SSL. Khi hoạt động ổn định, mỗi EA gửi trạng thái 60 giây/lần và kiểm tra lịch sử mới khoảng 120 giây/lần. Đợt nhập lịch sử ban đầu có thêm yêu cầu; nên cài lần lượt từng tài khoản.
20–40 tài khoản là quy mô thiết kế, chưa phải kết quả kiểm thử chịu tải trên Pro 02. Dung lượng tăng tùy số deal; theo dõi Disk Usage, MySQL Usage, CPU/I/O/Entry Processes trong cPanel. Giao diện có nhiều mục không đồng nghĩa tải lớn; lịch sử nhiều và đồng bộ quá thường xuyên mới làm tăng tải.
VPS Windows cũ tiếp tục chạy MT5. Hosting BKHOST chạy web. Tên miền trỏ về IP HOSTING, không phải IP VPS. Không cần tiếp tục hướng dẫn IIS, ARR, Caddy hoặc Python của bộ cũ cho phương án này. Không gỡ các dịch vụ cũ đang dùng cho việc khác.
2. Sau khi mua: lấy thông tin hosting
- Đăng nhập trang khách hàng BKHOST bằng tài khoản của bạn.
- Vào Dịch vụ / My Services, chọn gói hosting vừa mua.
- Mở cPanel (tên nút có thể là Login to cPanel / Đăng nhập cPanel).
- Ghi lại IP hosting, tên đăng nhập cPanel và nameserver BKHOST cấp trong thông tin dịch vụ/email kích hoạt.
- Không gửi mật khẩu cPanel, mật khẩu database hoặc khóa EA vào chat. Nếu cần hướng dẫn thao tác, chụp ảnh và che thông tin bí mật.
3. Gắn tên miền ngockhiem.io.vn
- Trong cPanel → Domains, kiểm tra có
ngockhiem.io.vn chưa. Nếu là tên miền chính lúc mua hosting thì thường đã có.
- Nếu chưa có, chọn Create a New Domain / Add Domain, nhập tên miền. Ghi lại Document Root (thư mục web); nếu gói chỉ cho một website, nhờ BKHOST đặt đúng tên miền chính.
- Tại nơi đang quản lý DNS của tên miền, chọn một trong hai cách:
- Dùng nameserver: thay bằng ĐÚNG nameserver BKHOST cấp. Sau đó chỉnh DNS tại cPanel Zone Editor.
- Giữ nhà quản lý DNS hiện tại: tạo bản ghi A cho
@ trỏ tới IPv4 HOSTING; tạo CNAME www trỏ tới ngockhiem.io.vn nếu muốn dùng www.
- Không tự đoán nameserver/IP. Kiểm tra bản ghi A/AAAA cũ để tránh tên miền còn trỏ sang máy khác. Nếu tên miền đang có email/dịch vụ khác, giữ nguyên các bản ghi phục vụ chúng.
- Chờ DNS cập nhật. Kiểm tra trong cPanel Domains và SSL/TLS Status. Thời gian phụ thuộc TTL, không phải luôn có hiệu lực ngay.
4. Bật HTTPS
- Trong cPanel tìm SSL/TLS Status hoặc mục SSL theo giao diện BKHOST.
- Chọn ngockhiem.io.vn và chạy AutoSSL nếu nút này có sẵn. Nếu không có, yêu cầu hỗ trợ BKHOST kích hoạt SSL miễn phí cho tên miền.
- Chỉ tiếp tục khi mở
https://ngockhiem.io.vn không còn cảnh báo chứng chỉ.
- Bộ web bắt buộc HTTPS. Không bỏ qua cảnh báo chứng chỉ, không nhập khóa/mật khẩu qua HTTP.
- Phiên bản này dùng tên miền gốc, không đặt trong thư mục con. Nếu dùng www thay tên miền gốc, cần sửa site_url trong config cho khớp.
5. Chọn PHP và tạo database
- cPanel → Select PHP Version / MultiPHP Manager: chọn PHP 8.2 hoặc 8.3 cho tên miền.
- Bật extension pdo_mysql, session, json. mbstring là tùy chọn.
- Vào MySQL Database Wizard hoặc MySQL Databases.
- Tạo database, ví dụ tên đầy đủ
usercp_khiemfx.
- Tạo user database, ví dụ
usercp_monitor, dùng mật khẩu mạnh và lưu lại riêng.
- Gắn user vào database, chọn ALL PRIVILEGES, lưu.
- Dùng tên ĐẦY ĐỦ có tiền tố cPanel. Database host thường là localhost; dùng giá trị BKHOST cung cấp nếu khác.
6. Tải mã web lên hosting
Trong bộ tải xuống:
- Website_Hosting.zip: mã WEB để upload.
- EA/KhiemFX_Exporter.mq5: mã EA, dùng trên VPS/MT5, không upload vào thư mục web.
- HUONG_DAN.html: hướng dẫn này, nhấp đúp để đọc.
Thao tác:
1. cPanel → File Manager → mở Document Root của ngockhiem.io.vn. Tên miền chính thường là public_html; hãy đối chiếu mục Domains thay vì đoán.
2. Nếu thư mục có website cũ, sao lưu và hỏi trước khi thay. Không ghi đè website đang dùng.
3. Upload Website_Hosting.zip, chọn Extract ngay tại Document Root.
4. Phải thấy trực tiếp index.php, api.php, setup.php, assets và private, không bị lồng thêm thư mục hosting.
5. Vào Settings của File Manager → Show Hidden Files, kiểm tra có .htaccess ở thư mục gốc và private/.htaccess.
6. Xóa ZIP khỏi thư mục web sau khi giải nén. Để quyền file thường 644, thư mục 755; không đặt 777.
7. Cấu hình kết nối database
- Trong File Manager mở
private.
- Copy
config.example.php thành config.php trong chính thư mục private.
- Chọn Edit file config.php. Thay các chuỗi mẫu:
| Trường |
Điền gì |
| db_host |
localhost, hoặc host BKHOST cấp |
| db_name |
Tên database đầy đủ, gồm tiền tố cPanel |
| db_user |
User database đầy đủ |
| db_pass |
Mật khẩu user database bạn vừa tạo |
| setup_key |
Tự tạo chuỗi bí mật ngẫu nhiên ít nhất 24 ký tự, KHÔNG giữ chuỗi mẫu |
| site_url |
https://ngockhiem.io.vn |
Giữ nguyên cú pháp dấu nháy và dấu phẩy. Nên tạo setup_key bằng trình tạo mật khẩu, gồm chữ/số. Nếu mật khẩu chứa dấu nháy đơn hoặc dấu gạch chéo ngược, cần escape đúng trong chuỗi PHP (\' và \\). Không đổi sang mật khẩu dễ đoán chỉ để dễ nhập.
- Save Changes. Config và database không cần gửi cho người hỗ trợ.
8. Tạo admin lần đầu
- Mở
https://ngockhiem.io.vn/setup.php.
- Nhập setup_key đã đặt trong config.php.
- Tạo mật khẩu admin ít nhất 12 ký tự, nhập lại rồi bấm Cài đặt.
- Khi báo thành công, quay lại File Manager và xóa setup.php.
- Mở
https://ngockhiem.io.vn, chọn Đăng nhập admin, dùng mật khẩu mới.
- Mặc định web riêng tư. Chỉ bật “Cho phép mọi người có đường link…” nếu muốn công khai số tài khoản, giao dịch và số liệu.
9. Thêm tài khoản trong admin
- Bấm Quản trị.
- Nhập tên hiển thị, số tài khoản MT5, server sàn chính xác như trong MT5.
- Chọn đơn vị:
- USD thường: divisor = 1.
- USC / USD cent: divisor = 100, tổng quy về USD.
- EUR/GBP/VND: tổng tách theo đơn vị, không tự đổi ngoại tệ.
- Với broker gọi tài khoản cent là USD, vẫn phải chọn cent nếu thực chất 100 đơn vị = 1 USD.
- Bấm Thêm tài khoản → sao chép khóa. Khóa chỉ hiện lần này.
- Sai tên hoặc quy đổi: dùng Sửa. Sai số tài khoản/server: gỡ dòng sai rồi thêm đúng; liên hệ hỗ trợ nếu bị trùng.
- Khóa chỉ được dùng với đúng số tài khoản + server đã khai báo.
10. Cài EA trên VPS Windows/MT5
- Trên VPS, mở đúng MT5 của tài khoản cần theo dõi.
- File → Open Data Folder → MQL5 → Experts.
- Chép
KhiemFX_Exporter.mq5 vào Experts.
- Nhấn F4 mở MetaEditor, mở file vừa chép và nhấn F7 / Compile.
- Phải thấy 0 errors. Bản giao chưa được biên dịch bằng MetaEditor ở môi trường tạo mã; nếu có lỗi, gửi ảnh đầy đủ tab Errors để sửa trước khi dùng.
- Quay lại MT5 → Navigator → Expert Advisors → nhấp phải Refresh.
- Mở chart mới riêng để gắn exporter, không thay GoldTrap trên chart đang chạy. Mỗi terminal/tài khoản chỉ gắn một exporter; không gửi đồng thời cùng tài khoản từ nhiều terminal.
- Tools → Options → Expert Advisors → tích Allow WebRequest for listed URL → thêm
https://ngockhiem.io.vn.
- Kéo EA lên chart mới và điền:
| Input |
Giá trị ban đầu |
| WebsiteURL |
https://ngockhiem.io.vn |
| ApiKey |
Khóa của dòng tài khoản tương ứng trên web |
| SendSeconds |
60 |
| HistorySendSeconds |
10 |
| RequestTimeoutMs |
1500 |
| DealsPerBatch |
100 |
| BrokerUTCOffsetHours |
-99 (tự ước lượng offset hiện tại) |
| HistoryBrokerUTCOffsetHours |
-99 (dùng offset hiện tại; xem giới hạn DST bên dưới) |
| HistoryStart |
1970.01.01 — lấy toàn bộ lịch sử broker cung cấp |
| ReimportHistory |
false |
- Bấm OK; chờ khoảng 1–2 phút để thấy trạng thái Connected và số liệu trên web.
- Nhập lịch sử lần đầu có thể mất lâu nếu rất nhiều deal/nhiều năm. Trạng thái đang đồng bộ là bình thường. Số % lợi nhuận chưa đáng tin để đối chiếu khi lịch sử còn thiếu.
- Cài thử một tài khoản demo trước. Đối chiếu rồi mới lần lượt thêm các tài khoản khác.
EA đọc toàn tài khoản, gồm lệnh tay và mọi magic. Không yêu cầu DLL, không có lệnh giao dịch. Không cần thay code GoldTrap. Dù tách chart riêng, việc đọc lịch sử và gửi mạng vẫn dùng tài nguyên VPS; không thể hứa hoàn toàn không có tải.
11. Gỡ và thêm lại — đúng yêu cầu của bạn
- Bấm Gỡ khỏi web và xác nhận: tài khoản biến mất ở tổng quan/tab chi tiết và không còn nằm trong tổng. Khóa cũ bị thu hồi; EA còn chạy không làm tài khoản tự hiện lại.
- Lịch sử đã lưu vẫn giữ trong database, không bị xóa sạch.
- Admin → Tài khoản đã gỡ → Khôi phục & tạo khóa: tài khoản và dữ liệu cũ hiện lại. Dán khóa mới vào EA.
- Trong thời gian gỡ, server không nhận gói mới. Khi khôi phục, EA đồng bộ bù lịch sử giao dịch MT5 có sẵn. Equity/đáy âm trong khoảng không ghi nhận đầy đủ không thể tự phục hồi chính xác.
- Nếu muốn nạp lại các deal cũ bị broker sửa, gắn lại EA với ReimportHistory=true để chạy một lượt đồng bộ lại; dữ liệu không nhân đôi vì khóa chính là account + ticket. Sau khi xong đặt lại false. Giữ HistoryStart nhất quán để tính lot đảo chiều chính xác.
12. Bật tác vụ tối ưu dung lượng
- cPanel → Cron Jobs.
- Chọn chạy mỗi giờ (ví dụ phút 17 mỗi giờ): Minute = 17; Hour/Day/Month/Weekday = *.
- Command, thay USERCP và Document Root bằng thông tin thật:
/usr/local/bin/php /home/USERCP/public_html/cron.php
- Đường dẫn PHP CLI có thể khác. Nhờ BKHOST xác nhận PHP CLI 8.2/8.3 cùng extension PDO MySQL; không đoán nếu cron báo lỗi.
- Trong lần đầu nên giữ email thông báo để thấy
KFX maintenance OK; sau khi chạy ổn mới tắt email.
Dữ liệu biểu đồ mới lưu tối đa một dòng/5 phút/tài khoản. Cron gộp các dòng quá 30 ngày thành một dòng/giờ, giữ min floating/max DD trong nhóm và balance/equity cuối giờ. Không xóa lịch sử deal. Bản 1.0 hiển thị equity 30 ngày gần nhất, dữ liệu cũ vẫn giữ; biểu đồ lãi/daily hiển thị tối đa 3.660 ngày và lịch sử deal có phân trang.
13. Cách tính — cần biết trước khi đối chiếu
- Floating: ACCOUNT_PROFIT do MT5 báo, đơn vị gốc của tài khoản.
- Âm sâu nhất ngày: min(0, Floating các mẫu đã ghi nhận), ngày UTC+7. % âm dùng balance tại thời điểm mẫu. Hai đáy tiền và % có thể xuất hiện ở thời điểm khác nhau.
- DD từ đỉnh: sụt giảm equity so với equity cao nhất đã quan sát kể từ khi theo dõi, có giữ qua khởi động lại terminal. Đây là DD equity thô, có thể bị ảnh hưởng bởi nạp/rút; không giả nhận đó là DD đã hiệu chỉnh dòng tiền.
- Lãi: profit + swap + commission + fee của Buy/Sell, cùng các loại commission/interest/dividend/tax riêng trong lịch sử. Balance nạp/rút không tính vào lãi. Credit/bonus/correction/charge được phân loại riêng; broker ghi phí vào Balance/Charge có thể cần quy tắc bổ sung.
- % lợi nhuận kỳ: lãi kỳ / (balance đầu kỳ + tổng nạp dương trong kỳ) × 100. Đây là tỷ lệ ước tính theo vốn, không phải TWR hay lời hứa cùng công thức với web mẫu. Mẫu số không dương hiển thị dấu —.
- Balance đầu kỳ: dựng từ balance tại lần gửi mới nhất và các biến động balance lịch sử đã nhập. Khi lịch sử đang đồng bộ hoặc broker hạch toán khác, cần đối chiếu trước khi sử dụng %.
- Lot vào/đóng: theo deal entry, có xử lý INOUT từ net volume trước đó của position. Đúng nhất khi có đủ lịch sử position từ lúc mở. Partial fills được cộng volume, không xem mỗi deal là một lệnh riêng.
- Giá vốn: bình quân giá mở theo lot, tách symbol và Buy/Sell. Chưa tính phí, swap hoặc spread tương lai; không phải điểm hòa vốn đảm bảo cho toàn rổ hedge.
- Ngày: cố định UTC+7. MT5 history dùng giờ broker, quy đổi theo offset cấu hình. Các năm/tháng broker đổi DST có thể bị lệch ngày gần nửa đêm nếu chỉ dùng offset hiện tại. Cần xác nhận offset hoặc bổ sung lịch DST theo broker để khớp tuyệt đối.
- Lấy mẫu: đọc Risk theo tick chart và timer 1 giây. WebRequest đồng bộ có thể ngắt ghi mẫu trong thời gian timeout. Chỉ báo đáy đã quan sát, không cam kết bắt mọi tick. Global Variables flush mỗi khoảng 3 giây và lúc gỡ EA; mất điện đột ngột có thể mất vài giây gần nhất.
- Mất mạng qua nửa đêm: web chỉ giữ đáy ngày trước đã nhận. Bản này chưa tự backfill đáy ngày cũ chưa gửi; lịch sử deal được bù tự động.
- Stop-out: hiển thị nếu có deal được MT5 đánh dấu reason SO trong lịch sử đã nhập. Không suy đoán stop-out chỉ vì DD lớn.
- Gộp tài khoản: chỉ gộp sau chia divisor về cùng đơn vị; không cộng % hoặc DD cá nhân để nhận %/DD toàn danh mục. Số tổng là các ảnh chụp gần nhất, có thể không cùng thời điểm.
14. Kiểm tra sau khi cài
- Một tài khoản demo: so balance/equity/floating với MT5.
- Đợi lịch sử nhập xong: so lãi ngày/tháng theo cùng múi giờ, tính cả phí mở lệnh trong ngày.
- Khi Floating hồi lên, âm sâu nhất phải giữ mức cũ.
- Gỡ/gắn lại EA trên cùng terminal: đáy ngày phải còn.
- Ngừng EA quá 150 giây: web phải báo dữ liệu cũ.
- Gỡ tài khoản: mất khỏi tổng quan, tổng cộng và URL chi tiết; gói EA bị từ chối.
- Khôi phục bằng khóa mới: hiện lại và tiếp tục bù lịch sử; không có deal trùng.
- Tài khoản USC: equity 100.000 USC phải tương đương 1.000 USD trong phần tổng.
- Kiểm tra vào ngày mới, cuối tháng và sau VPS reboot. EA/MT5 phải còn hoạt động để có dữ liệu mới.
- Xem Resource Usage và dung lượng MySQL sau 24–72 giờ. Nâng gói khi số liệu thực tế cho thấy thiếu; không chờ đầy ổ.
15. Lỗi thường gặp
| Hiện tượng |
Kiểm tra |
| Không mở được tên miền |
DNS có trỏ IP hosting, hosting hoạt động, đúng Document Root |
| HTTPS báo chứng chỉ |
AutoSSL, DNS A/AAAA, nhờ BKHOST kiểm tra |
| Chưa cấu hình |
private/config.php chưa tạo hoặc đặt sai vị trí |
| Lỗi database / HTTP 500 |
Tên DB/user có tiền tố, password, ALL PRIVILEGES, PHP 8.2+, PDO MySQL; xem cPanel Errors |
| HTTP 401 ở EA |
Sai khóa, khóa đã đổi hoặc tài khoản đã gỡ |
| HTTP 409 |
Số tài khoản/server khác hoặc giờ Windows lệch |
| HTTP 400 |
Gói dữ liệu không đúng / ngày UTC+7 sai; gửi ảnh Experts đã che bí mật |
| HTTP -1 |
WebRequest whitelist, URL HTTPS, DNS, chứng chỉ hoặc firewall chặn |
| EA im lặng sau lỗi |
Tự chờ tăng dần tối đa 5 phút để giảm tải; sửa Inputs/gắn lại sau khi sửa nguyên nhân |
| Origin không hợp lệ khi đăng nhập |
site_url phải khớp tên miền đang mở (www hoặc không www) |
| Cột lãi chưa đúng |
Đợi nhập lịch sử, kiểm tra HistoryStart, giờ broker/DST và cách sàn ghi phí |
| Trang mặc định của hosting |
Sai Document Root hoặc index.html mặc định còn được ưu tiên; sao lưu file mặc định trước khi bỏ |
| Đồng bộ ngừng giữa chừng |
Cửa sổ Experts, tài nguyên hosting, payload tối đa 1 MB; hiện hỗ trợ tối đa 1.000 vị thế và 200 nhóm symbol/chiều |
16. Sao lưu và vận hành
- Giữ bản backup database và private/config.php riêng tư. Dùng backup của BKHOST, xác nhận chính sách lưu/khôi phục.
- Không đưa file backup SQL/ZIP vào thư mục website công khai.
- Chạy một EA exporter mỗi tài khoản, trên chart riêng. GoldTrap tiếp tục giữ logic cũ.
- Nếu có nhiều terminal trên VPS, mở/tải lịch sử lần lượt để tránh cùng lúc dùng nhiều CPU/RAM.
- Gói có cơ chế chống gửi trùng, khóa theo tài khoản, CSRF cho admin, mật khẩu băm, HTTPS và kiểm tra dữ liệu; vẫn cần kiểm tra cấu hình hosting thực tế.
17. Phạm vi kiểm chứng bản giao
Đã kiểm tra cú pháp PHP bằng PHP runtime WebAssembly, cú pháp JavaScript và luồng hiển thị bằng DOM giả lập. Chưa chạy tích hợp MySQL/MariaDB thật, chưa biên dịch bằng MetaEditor, chưa test trên BKHOST hoặc đo tải 40 tài khoản. Cần thực hiện mục 14 với một tài khoản demo trước khi dùng rộng. Không coi bản RC là bản đã nghiệm thu hoạt động thật.
Tài liệu chính thức tham khảo:
- https://wiki.bkhost.vn/hosting/hosting-cpanel/
- https://bkhost.vn/hosting/gia-re/
- https://www.mql5.com/en/docs/network/webrequest
- https://www.mql5.com/en/docs/trading/historyselect
- https://www.mql5.com/en/docs/constants/tradingconstants/dealproperties