Trả lời ngắn: DCA System trong EA là bộ điều phối chia một ngân sách hữu hạn thành các đợt gần bằng nhau theo lịch đã định. Mỗi đợt chỉ được gửi khi dữ liệu và cổng rủi ro đạt; hệ thống chỉ cộng phần có bằng chứng đã khớp. DCA không bảo đảm gỡ lỗ hay giá quay lại.

Đọc xong, bạn sẽ hiểu: DCA khác Grid và tăng khối lượng (lot) ở đâu; một đợt đi từ kế hoạch đến phần đã khớp thế nào; vì sao giá vốn phải tính từ bằng chứng; và khi nào lịch phải nhường quyền cho Bộ máy Rủi ro (Risk Engine).

Lưu ý giáo dục: Mọi giá, ngân sách và số lượng trong bài là đơn vị giả để học thiết kế. Đây không phải bộ tham số (preset) EA, công thức vào lệnh hoặc lời khuyên giao dịch.

1. DCA là chính sách chia ngân sách, không phải máy gỡ lỗ

a. Bốn phần của một kế hoạch

Bình quân chi phí định kỳ (Dollar-Cost Averaging, DCA) theo Investor.gov là cách chia tiền thành các phần bằng nhau, đầu tư ở khoảng thời gian đều, bất kể thị trường lên hay xuống. Investor.gov: Dollar Cost Averaging

Khi tự động hóa, một kế hoạch DCA tối thiểu cần:

  • chu kỳ (cycle): vòng đời có ID và phiên bản;
  • ngân sách hữu hạn: tổng số tiền tối đa của chu kỳ;
  • đợt phân bổ (tranche): một phần ngân sách cùng lịch đến hạn;
  • chủ sở hữu quyền dừng, hủy, thoát và đặt lại chu kỳ.

Hình dung 480 U học phí được bỏ sẵn vào bốn phong bì, mỗi phong bì 120 U. Đến ngày đóng tiền mới mở một phong bì; không được tự mọc phong bì thứ năm. Ví dụ này chỉ minh họa cách chia nguồn lực, không ám chỉ kết quả đầu tư.

b. DCA khác Grid, Martingale và Recovery

DCA cổ điển sở hữu trục thời gian và ngân sách. Grid System sở hữu hình học mức giá. Một hệ thống chỉ thêm đợt khi giá chạm mức đang mang cả đặc tính lưới; nếu còn tăng khối lượng sau bất lợi, nó mang thêm đặc tính kiểu Martingale. Recovery lại xử lý trạng thái bất lợi. Gọi tất cả là “DCA” làm mất ranh giới rủi ro.

Cố định số tiền (fixed notional) cũng khác cố định số lượng (fixed quantity). Cùng 120 U ở giá 10/8/12 U tạo 12/15/10 đơn vị. Cùng 12 đơn vị tại ba giá đó lại cần 120/96/144 U. Với EA dùng lot và đòn bẩy, “cùng lot” càng không tự nghĩa “cùng tiền” hoặc “cùng rủi ro”.

2. Một chu kỳ DCA hữu hạn chạy thế nào

a. Từ đến lịch đến sổ đã xác nhận

Pipeline tối giản:

FINITE DCA PLAN + SNAPSHOT + GATES → DUE TRANCHE → UNIQUE INTENT → REQUESTED → CONFIRMED LEDGER

Đến lịch (due) chỉ nghĩa một đợt được quyền đánh giá. Ý định nội bộ (intent) là đề nghị có cấu trúc, chưa phải lệnh. Mỗi ý định mang khóa chống lặp như cycleId:trancheId:version; bộ hẹn giờ (timer), nhịp giá (tick), hàm gọi lại (callback) hoặc lần khởi động lại gặp cùng khóa không được tạo ý định thứ hai.

Vòng đời một đợt:

PLANNED → DUE → ELIGIBLE → REQUESTED → PARTIAL | CONFIRMED | REJECTED | CANCELLED

PARTIAL là khớp một phần: sổ cộng đúng phần đã khớp, còn phần chưa khớp vẫn phải được theo dõi hoặc hủy. REJECTEDCANCELLED không được giả thành CONFIRMED.

Xe buýt đến đúng giờ không chứng minh hành khách đã lên xe. Tương tự, OrderSend() trả true chỉ cho biết yêu cầu qua kiểm tra cơ bản và được nhận để xử lý, chưa chứng minh giao dịch đã thực hiện. MQL5 OrderSend

Một yêu cầu có thể sinh nhiều sự kiện giao dịch; thứ tự đến không được bảo đảm, và hàng đợi của OnTradeTransaction() có 1.024 phần tử. Vì vậy hàm xử lý phải ngắn, chống lặp và đối chiếu được sau khi bỏ lỡ sự kiện. MQL5 OnTradeTransaction

Hình 1 — Lịch chỉ mở quyền đánh giá; sổ DCA chỉ đổi khi có bằng chứng thực thi.

b. Demo D14 và giá vốn xác nhận

Chu kỳ D14 có ngân sách 480 U, tối đa bốn đợt × 120 U. Ba đợt đã khớp ở giá 10/8/12 U, tương ứng số lượng 12/15/10. Đợt T4 vẫn dừng.

Giá vốn xác nhận = Tổng chi phí đã khớp / Tổng số lượng đã khớp

Vậy D14 có chi phí 360 U, số lượng 37, giá vốn khoảng 9,73 U. Kế hoạch chưa gửi, yêu cầu đang chờ và phần bị từ chối đều không đi vào phép tính. Phí và trượt giá chỉ được cộng nếu hợp đồng dữ liệu nói rõ cách lấy chúng.

Hình 2 — Cùng tổng tiền nhưng cố định tiền và cố định số lượng tạo cách phân bổ cùng tổng số lượng khác nhau.

3. Chín lỗi, giới hạn và nơi DCA dừng

a. Những lỗi dễ làm sổ sai

  1. Gọi sai tên: thêm theo mức giá nhưng trình bày như DCA định kỳ.
  2. Tăng lot âm thầm: mỗi đợt lớn hơn đợt trước mà không ghi đặc tính kiểu Martingale.
  3. Không có trần: thiếu giới hạn ngân sách hoặc số đợt.
  4. Tính sớm: đưa phần PLANNED/REQUESTED vào giá vốn.
  5. Thử lại mù: hết thời gian chờ là gửi lại, không đối chiếu khóa cũ.
  6. Tin OrderSend=true: coi yêu cầu được nhận là đã khớp.
  7. Bỏ quy tắc mã giao dịch: không kiểm khối lượng nhỏ nhất, lớn nhất, bước tăng và tổng giới hạn.
  8. Chỉ nhìn giá vốn: bỏ tổng phơi nhiễm, lỗ thả nổi, phí và ký quỹ.
  9. Lịch có quyền tuyệt đối: dữ liệu cũ hoặc cổng Rủi ro không đạt vẫn gửi.

MQL5 công bố SYMBOL_VOLUME_MIN, MAX, STEPLIMIT; kế hoạch hợp lệ trên giấy vẫn có thể tạo khối lượng không hợp lệ với mã giao dịch thật. MQL5 Symbol properties

b. Giá vốn giảm không nghĩa rủi ro giảm

Nếu một đợt mới kéo giá vốn xuống, tổng phơi nhiễm vẫn tăng. Với tài khoản đòn bẩy, ký quỹ dùng, ký quỹ tự do và vốn tài khoản có thể xấu đi. OrderCalcMargin() chỉ ước tính ký quỹ cho thao tác dự kiến trong môi trường hiện tại và không tính các lệnh chờ/vị thế đang có trong phép tính cô lập đó; bộ điều phối vẫn cần ảnh chụp toàn tài khoản. MQL5 OrderCalcMargin

FINRA nêu DCA có thể giảm tác động của biến động ngắn hạn và bớt quyết định cảm tính, nhưng tiền nằm ngoài thị trường có thể làm bỏ lỡ lợi nhuận; nhiều giao dịch cũng có thể tăng phí. Đây là đánh đổi, không phải bảo đảm. FINRA: Benefits and Limitations of Dollar-Cost Averaging

Với bù trừ (netting), một mã chỉ có một vị thế; với phòng hộ (hedging), nhiều vị thế có thể tồn tại. Dù cách hiển thị vị thế khác nhau, sổ DCA vẫn phải truy ngược mỗi lần khớp về đúng đợt. MQL5 account type

4. DCA contract trước khi viết code

a. Mười sáu câu phải trả lời

  1. ID/phiên bản chu kỳ?
  2. Nguồn lịch và múi giờ?
  3. Tổng ngân sách?
  4. Tiền mỗi đợt?
  5. Số đợt tối đa?
  6. Đổi tiền sang số lượng thế nào?
  7. Quy tắc khối lượng của mã?
  8. Chế độ tài khoản?
  9. Trần phơi nhiễm/ký quỹ?
  10. Độ mới dữ liệu?
  11. Phí/trượt giá được tính thế nào?
  12. Khóa chống lặp gồm trường nào?
  13. Khớp một phần xử lý ra sao?
  14. Đối chiếu từ lệnh/lần khớp/vị thế nào?
  15. Khi nào dừng, hủy hoặc thử lại?
  16. Ai sở hữu thoát và đặt lại?

b. Trình tự đóng khi thiếu bằng chứng

Chỉ tạo ý định khi ảnh chụp dữ liệu đầy đủ và mới; đợt đến lịch đúng một lần; giới hạn ngân sách, số đợt, rủi ro và ký quỹ đều đạt; khối lượng hợp lệ; và không có cùng khóa đang chờ hoặc đã xác nhận.

Thiếu dữ liệu tài khoản, mã giao dịch, lịch sử hoặc đối chiếu thì trả UNKNOWN/HALT. Sau thời gian ngừng, không “chạy bù” nhiều đợt cùng lúc. Yêu cầu hết thời gian chờ cũng không tự nghĩa thất bại; phải tra mã lệnh, khóa và lịch sử máy chủ trước khi thử lại.

5. DCA Ledger Worksheet 15 phút

a. Cách làm

Dùng giấy hoặc Google Sheets. Chưa mở MT5, chưa kết nối tài khoản và chưa dùng tiền thật. Tạo sổ D14 dưới đây, tính 360/37, rồi thêm một timer lặp cho T2. Kết quả đúng là không có ý định T2 thứ hai.

b. Mẫu đối chiếu

Đợt Ngân sách Giá demo Số lượng đã khớp Khóa Trạng thái cuối
T1 120 U 10 U 12 D14:T1:v1 CONFIRMED
T2 120 U 8 U 15 D14:T2:v1 CONFIRMED
T3 120 U 12 U 10 D14:T3:v1 CONFIRMED
T4 120 U 0 D14:T4:v1 HALTED

Tổng kế hoạch 480 U; đã khớp 360 U/37 đơn vị; giá vốn 9,73 U. T4 đến lịch nhưng cổng Rủi ro dừng, nên lịch không được vượt quyền rủi ro.

Hình 3 — Phần đã lập kế hoạch và đang yêu cầu không đi vào giá vốn; chỉ chi phí và số lượng đã xác nhận được cộng.

6. Tổng kết: ngân sách hữu hạn, sổ có bằng chứng

a. Năm ý chính

  • DCA cổ điển chia tiền gần bằng nhau theo kỳ đều, không phải cứ giá đi ngược là thêm lot.
  • Mỗi chu kỳ cần ngân sách, số đợt và quyền dừng hữu hạn.
  • Đến lịch và OrderSend=true chưa chứng minh đã khớp.
  • Giá vốn chỉ dùng chi phí/số lượng đã xác nhận; giá vốn giảm không nghĩa phơi nhiễm giảm.
  • Dữ liệu thiếu hoặc cổng Rủi ro không đạt phải UNKNOWN/HALT, không chạy bù mù.

Bài trước là Grid System trong EA. Bài tiếp theo là Hedging System trong EA #15.

b. Câu hỏi tự kiểm tra

  • DCA cổ điển khác Grid ở trục nào?
  • Khi nào một đợt được đưa vào giá vốn?
  • Vì sao giá vốn giảm chưa chứng minh rủi ro giảm?
  • Timer lặp cho cùng đợt nên tạo bao nhiêu ý định?

c. Gợi ý đáp án

Xem gợi ý câu 1

DCA cổ điển theo lịch và ngân sách; Grid theo hình học mức giá. → xem mục 1.

Xem gợi ý câu 2

Chỉ cộng chi phí và số lượng có bằng chứng đã khớp, kể cả phần khớp một phần. → xem mục 2.

Xem gợi ý câu 3

Đợt mới làm tổng phơi nhiễm và nhu cầu ký quỹ tăng dù giá vốn có thể giảm. → xem mục 3.

Xem gợi ý câu 4

Một ý định cho cùng chu kỳ–đợt–phiên bản nhờ khóa chống lặp. → xem mục 2 và 5.

d. Thuật ngữ cần nhớ

Thuật ngữ Giải thích ngắn
DCA Chia tiền gần bằng nhau theo kỳ đều.
Đợt phân bổ Một phần ngân sách trong chu kỳ.
Đến lịch Đủ thời gian để được xét, chưa phải đã khớp.
Khóa chống lặp Ngăn cùng đợt tạo hành động trùng.
Sổ xác nhận Chỉ ghi phần có bằng chứng đã khớp.
Khớp một phần Chỉ một phần số lượng yêu cầu được thực hiện.
Giá vốn Tổng chi phí đã khớp chia số lượng đã khớp.
Phơi nhiễm Tổng mức rủi ro đang mang trước khi thoát.
Đối chiếu So sổ nội bộ với lịch sử máy chủ.

e. Nguồn tham khảo

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. DCA System không thể loại bỏ rủi ro thị trường, dữ liệu hoặc thực thi.