Mục lục
Nội dung này phục vụ mục đích giáo dục, không phải lời khuyên đầu tư hoặc tín hiệu giao dịch.
Trả lời ngắn: VPS Deployment cho EA là quá trình chuyển một release đã đóng băng từ máy local sang môi trường từ xa, rồi xác minh tài khoản, cấu hình, dependency và quyền thực thi. Quy trình này cần thiết vì máy chạy liên tục vẫn có thể dùng sai release hoặc để hai nơi cùng gửi yêu cầu tự động.
Đọc xong, bạn sẽ hiểu:
- Vì sao trạng thái “Started” chưa đủ chứng minh EA đã được triển khai đúng.
- Cách dùng preflight, migration journal và single-owner gate để bàn giao có kiểm soát.
- Cách tự tập với ledger R0/R1 trong 15 phút mà chưa đăng nhập broker hay dùng tiền thật.
1. VPS Deployment cho EA là gì?
VPS là môi trường máy tính từ xa có thể giữ nền tảng hoạt động khi máy ở nhà tắt. Deployment là cuộc chuyển giao và xác minh một bản phát hành cụ thể. Hai ý này đi chung nhưng không đồng nghĩa: VPS đang chạy chỉ nói rằng máy từ xa còn sống; deployment đạt mới nói rằng đúng EA, đúng preset, đúng tài khoản và đúng quyền thực thi đang hoạt động.
Giống chuyển quán ăn: mang công thức nhưng quên bếp hoặc nguyên liệu thì quán chưa vận hành đúng. Với EA, file chương trình chỉ là một phần; chart, input, URL và account/server đều thuộc gói bàn giao.
Có ba môi trường dễ bị gọi chung là “VPS”:
| Môi trường | Ai quản lý nền tảng? | Cách bàn giao |
|---|---|---|
| Máy local | Người dùng trực tiếp | Mở terminal và vận hành tại chỗ |
| Windows VPS phổ thông | Người dùng cài hệ điều hành và terminal | Tự copy, cài, đăng nhập, giám sát |
| MetaTrader Virtual Hosting | MetaTrader vận hành virtual platform | Đồng bộ môi trường local bằng migration |
Bài này tập trung vào MetaTrader Virtual Hosting: virtual platform chạy từ xa, không phải Windows desktop để kéo thả tùy ý. Dịch vụ hỗ trợ robot hoặc Signal hoạt động liên tục, nhưng không chứng minh edge hay bảo đảm không gián đoạn (MetaTrader 5 Virtual Hosting).
Cảnh báo: sau migration, automated trading luôn được phép trên virtual platform dù quyền ở local hoặc trong EA đang tắt. Vì vậy, AutoTrading local không bảo vệ bản remote; đừng sync EA chưa chắc chắn (MetaTrader 5 Migration).
Hình 1 — Deployment chỉ hoàn tất sau remote evidence và single-owner gate.
Nói gọn: uptime không phải verification. Một VPS chạy khỏe vẫn có thể đang chạy sai preset, thiếu một EA hoặc cùng tranh quyền gửi lệnh với máy local.
2. Đóng gói release trước khi chuyển môi trường
Release package là bộ binary, preset, identity và dependency được khóa cùng nhau. Binary là file EA đã biên dịch. Preset là bộ input. Identity là account, broker server, symbol và timeframe dự kiến. Hash là dấu nhận dạng ngắn giúp phân biệt đúng file hoặc cấu hình; hash không chứng minh code tốt, nó chỉ giúp biết hai bên có cùng một bản.
Packing list tối thiểu:
- Tên EA, binary hash và preset hash.
- Account alias, broker server, chart, symbol/timeframe và Market Watch.
- Indicator, file, WebRequest trusted URL hoặc dịch vụ ngoài.
- Execution owner dự kiến cùng journal và heartbeat mong đợi.
Hình 2 — Packing list ngăn việc copy EA nhưng bỏ quên preset, chart hoặc dependency.
Dependency là thành phần bên ngoài mà EA cần để hoạt động. Với MetaTrader Virtual Hosting, kiểm kê dependency không phải việc trang trí:
- DLL call bị cấm hoàn toàn.
- Script không được chuyển, kể cả script đang chạy vòng lặp.
- Chart không có EA sẽ bị bỏ qua dù có custom indicator.
- Chart dùng symbol hoặc timeframe không chuẩn không được chuyển.
- EA dùng WebRequest cần URL nằm trong trusted list.
- Account dùng one-time password không phù hợp với virtual hosting tự vận hành.
Đây là hành vi sản phẩm do MetaTrader công bố (Migration Features). Nếu còn DLL, preflight phải HALT; không “thử migrate xem có chạy không”. Chỉ giữ chart/symbol cần thiết và kiểm lại input. Thay preset sau evidence nghĩa là release đổi và gate phải chạy lại.
3. Contract V26: một DLL còn sót phải chặn migration
Ta dùng protocol minh họa V26:DEPLOY:V1. Tất cả ID và số liệu dưới đây là dữ liệu tổng hợp để học quy trình, không phải mặc định MetaTrader hay kết quả vận hành thực.
a. Inventory đã đóng băng
| ID | Component | Binary | Preset | DLL | WebRequest | Trusted URL |
|---|---|---|---|---|---|---|
| A | Trend EURUSD H1 | A91F |
C11E |
0 | 0 | N/A |
| B | Breakout GBPUSD M15 | B72C |
B20D |
0 | 1 | 1 |
| C | Risk Sentinel XAUUSD M5 | C33A |
C30F |
1 | 0 | N/A |
A và B sạch; C còn DLL=1. Dù snapshot đủ ba component, R0 vẫn phải dừng.
b. R0 — fail trước khi migration
| Gate | Evidence R0 | Kết quả |
|---|---|---|
| Identity | account/server đúng contract | PASS |
| Snapshot | charts/EAs/presets 3/3 |
PASS |
| WebRequest allowlist | B có trusted URL | PASS |
| Dependency | tổng DLL=1 |
FAIL |
| Migration | NOT STARTED |
Đúng hành vi |
Verdict là HALT / REMOVE OR REPLACE DLL / REBUILD / RESTART PREFLIGHT. R0 chắc chắn phải halt vì contract còn DLL=1; điều này không có nghĩa mọi Windows VPS đều cấm DLL.
c. R1 — repair rồi mới quan sát demo
Sau repair, C được rebuild: binary đổi C33A→C34B, preset vẫn C30F. Binary đổi nên đây là release mới và preflight chạy lại.
| Gate | Evidence R1 | Kết quả |
|---|---|---|
| Dependency | DLL=0, trusted URL đủ |
PASS |
| Snapshot | charts/EAs/presets 3/3 |
PASS |
| Migration journal | completed, không mismatch | PASS |
| Remote inventory | EAs 3/3 |
PASS |
| Remote heartbeat | 10/10 expected records |
PASS |
| Remote errors | 0 |
PASS |
| Execution ownership | local owners 0, remote owner 1 |
PASS |
Aggregate là ACCEPT DEMO OBSERVATION, không phải dùng vốn thật. Sample có zero trade requests. Nếu R1 chạy demo đúng snapshot, evidence có thể phát hiện lỗi vận hành nhưng chưa chứng minh edge.
Hình 3 — R0 không được migrate; R1 chỉ accept sau rebuild, journal, heartbeat và owner check.
Migration đi một chiều local→virtual platform. Virtual journal là evidence xác nhận, không phải bản tự đồng bộ ngược (MetaTrader 5 Migration).
4. Sai lầm, giới hạn và rủi ro
Sai lầm 1: copy EA nhưng bỏ trạng thái. Binary đúng mà preset, chart hoặc symbol sai vẫn là deployment sai.
Sai lầm 2: tin AutoTrading local bảo vệ remote. Virtual platform cho phép automated trading sau migration; lần đầu nên dùng demo hoặc release không gửi request.
Sai lầm 3: để local và remote cùng làm owner. Hai nơi xử lý một signal có thể tạo hai request, giống hai người cùng giữ vô-lăng.
Hình 4 — Local và remote không được đồng thời làm execution owner của cùng release.
Sai lầm 4: chỉ nhìn Started. Nếu chỉ nhìn trạng thái này, tôi sẽ bỏ sót release mismatch và duplicate owner.
Sai lầm 5: sửa input sau evidence. Evidence release A không phê duyệt release B vừa bị sửa.
VPS không chứng minh edge, loại bỏ slippage, kiểm soát broker server hay bảo đảm mạng. Virtual platform cũng không có giao diện xác nhận thủ công; khi hủy hosting, dữ liệu remote có thể bị xóa không khôi phục. Hãy giữ known-good package riêng (Working with the Virtual Platform).
5. Checklist migration và handoff fail-closed
Làm theo thứ tự, không nhảy gate:
- Xác nhận đây là MetaTrader Virtual Hosting hay Windows VPS phổ thông.
- Khóa account alias, broker server và môi trường demo dự kiến.
- Khóa binary hash, preset hash, chart, symbol và timeframe.
- Kiểm DLL, script, indicator, WebRequest, custom symbol/timeframe và OTP.
- Chỉ giữ symbol/chart cần thiết; kiểm lại mọi external input.
- Đứng ngoài nếu còn dependency chưa hỗ trợ hoặc identity chưa chắc.
- Dùng release demo/non-trading cho lần bàn giao đầu.
- Thực hiện migration đúng type; nhớ synchronization chỉ đi local→remote.
- Đọc migration log, virtual terminal journal và Expert journal.
- Đối chiếu remote charts/EAs/indicators, heartbeat, error và resource usage.
- Chứng minh local execution owner bằng
0và remote execution owner bằng1. - Lưu evidence bundle gồm package manifest, hashes, migration log, journals và verdict.
Fail-closed nghĩa là thiếu evidence được xử lý như chưa đạt, không phải “chắc là ổn”. Hãy halt khi sai account/server, thiếu EA, hash lệch, heartbeat thiếu, journal có error, owner count khác một hoặc xuất hiện trạng thái chưa phân loại.
Rollback là dừng remote lỗi và khôi phục known-good package. Không dùng remote làm backup duy nhất. Đổi binary/preset thì mở release ID mới và chạy lại preflight.
Khu vực VPS cho xem status, charts, EAs, indicators, resources, last migration và logs; đây là evidence, không thay verdict (Virtual Platform monitoring). Platform và Expert journals local là hai nhóm log riêng (MetaTrader Platform Logs).
6. Bắt đầu từ đâu: Deployment Sheet 15 phút
Bạn chỉ cần Google Sheets hoặc LibreOffice. Không đăng nhập broker, không thuê VPS, không migration và không dùng tiền thật.
- Tạo ba dòng A/B/C theo inventory V26.
- Dùng công thức đếm
DLL=1; R0 phải ra một blocker. - Ghi
Migration = NOT STARTEDvà verdictHALT. - Đổi binary C thành
C34B, DLL thành0; đánh dấu đây là release mới. - Điền sample R1: snapshot
3/3, EAs3/3, heartbeat10/10, errors0. - Tính owner count: local
0+ remote1=1. - Chỉ chọn
ACCEPT DEMO OBSERVATIONkhi mọi gate đều pass.
a. Mẫu đối chiếu đã điền
| Run | Dependency | Snapshot | Remote evidence | Owners | Verdict |
|---|---|---|---|---|---|
| R0 | DLL=1 |
3/3 |
NOT STARTED |
0 |
HALT / REPAIR / RESTART PREFLIGHT |
| R1 | DLL=0 |
3/3 |
EAs 3/3, heartbeat 10/10, errors 0 |
1 |
ACCEPT DEMO OBSERVATION |
Bạn phải giải thích được vì sao R0 dừng và R1 chỉ sang demo observation. Không cho R0 pass chỉ vì hai EA còn lại sạch; contract xét toàn bộ inventory.
7. Tổng kết
a. Năm ý chính
- VPS giữ môi trường từ xa hoạt động; deployment chứng minh đúng release và đúng quyền.
- MetaTrader migration là một chiều, có giới hạn dependency và cho phép automated trading trên remote.
- Release package phải khóa binary, preset, identity, charts và dependencies.
- R0 có
DLL=1phải halt; R1 chỉ accept sau rebuild và đủ remote evidence. - Single-owner gate ngăn local và remote cùng thực thi một release.
b. Câu hỏi tự kiểm tra
- Vì sao trạng thái VPS Started chưa đủ phê duyệt deployment?
- Tại sao R0 không được migration dù snapshot đạt
3/3? - Sau rebuild C từ
C33AsangC34B, vì sao phải chạy lại preflight? - Owner count nào được chấp nhận trong contract V26?
c. Gợi ý đáp án
Xem gợi ý câu 1
Started chỉ xác nhận trạng thái virtual server; còn release, input, journal, heartbeat và ownership phải đối chiếu riêng. Xem mục 1 và 5.
Xem gợi ý câu 2
MetaTrader Virtual Hosting cấm DLL, trong khi C còn DLL=1; fail dependency buộc halt trước migration. Xem mục 2 và 3.
Xem gợi ý câu 3
Binary hash đổi nghĩa là release identity đổi; evidence cũ không còn đủ cho bản mới. Xem mục 3.
Xem gợi ý câu 4
Local owner 0 và remote owner 1, tổng cộng đúng một execution owner. Xem mục 3 và 4.
d. Thuật ngữ cần nhớ
| Thuật ngữ | Giải thích ngắn |
|---|---|
| VPS | Môi trường máy tính từ xa có thể duy trì nền tảng hoạt động. |
| Deployment | Chuyển giao và xác minh một release đã đóng băng. |
| Release package | Binary, preset, identity và dependency được quản lý cùng nhau. |
| Migration | Đồng bộ một chiều môi trường local lên MetaTrader virtual platform. |
| Hash | Dấu nhận dạng ngắn của file hoặc cấu hình cụ thể. |
| Dependency | Thành phần bên ngoài mà EA cần để hoạt động. |
| DLL | Thư viện code ngoài; bị cấm trên MetaTrader Virtual Hosting. |
| Journal | Bản ghi sự kiện của platform hoặc EA theo thời gian. |
| Execution owner | Môi trường duy nhất được quyền thực thi release. |
| Rollback | Dừng trạng thái lỗi và phục hồi known-good package. |
e. Nguồn tham khảo
- MetaTrader 5 — Virtual Hosting
- MetaTrader 5 — Migration
- MetaTrader 5 — Working with the Virtual Platform
- MetaTrader 5 — Platform Logs
f. Học tiếp
Bạn vừa nối Portfolio EA #25 với lớp vận hành từ xa. Bài tiếp theo, Multi-Account Management cho EA #27, sẽ tách execution owner, account identity và global control giữa nhiều tài khoản.
Nội dung này phục vụ mục đích giáo dục, không phải lời khuyên đầu tư hoặc tín hiệu giao dịch. Mọi thị trường đều có rủi ro mất vốn.
Bài tiếp theo