Xác minh hợp đồng giữ hedge
Audit re-entry, các caller đóng trực tiếp, và khôi phục sau khi basket flatten.
gate trước codeTrang này chuyển plan Hotfix15 thành bản dễ đọc: khi tổng basket còn âm thì giữ toàn bộ hedge ALAMO, không bank lời nhỏ làm mất lớp bảo vệ, đóng băng grid bằng tổng hedge đang sống, thêm sàn margin-level cuối cùng, và hoãn dynamic neutralization cho tới khi backtest chứng minh thật sự cần.
Nếu chỉ cần biết phải build gì và vì sao, đọc phần này trước. Các phần dưới là biểu đồ, bằng chứng, và ma trận triển khai chi tiết.
basketRed. Nếu tổng basket vẫn đỏ, không bank lời nhỏ.
g_alamoTickets. Phải cộng cả re-entry hedge để Skill6, grid, escalation và breaker không bật lại sai.
AlamoCloseAll() khi basket đỏ phải bị gate hoặc route sang flatten toàn bộ magic để không bỏ sót hedge.
AlamoMarginFloorPct chỉ là phanh cuối theo broker margin-level, vì account-DD breaker chết quá muộn trong case 45.59% ML.
Bóc tách từ plan, docs, và bằng chứng trong code. Màu đỏ là đường chết cũ; màu xanh là đường giữ hedge cần build; màu tím là phần hoãn.
Không phải phase nào cũng code ngay. Phase 5 cố tình hoãn theo YAGNI, chỉ bật nếu Phase 4 chứng minh giữ hedge kín vẫn stop-out.
Audit re-entry, các caller đóng trực tiếp, và khôi phục sau khi basket flatten.
gate trước codeKhóa cả hai cửa close, thêm invariant liveHedge, vá leak đóng trực tiếp.
build đầu tiênThêm floor theo broker margin-level, mặc định tắt, chỉ là phanh cuối.
khẩn cấp@22 sống sót, @50 A/B, không tự realized loss khi basket đỏ.
gate mergeKhông build trừ khi giữ hedge kín vẫn chết trước 26/2.
hoãnReview diff cuối, update docs, không còn mức cao/nghiêm trọng chưa xử lý.
gate cuốiDanh sách này là phần người cook không được bỏ qua. Mỗi item có đường dẫn bằng chứng, cách lỗi xảy ra, và cách sửa cụ thể.
AlamoCheckReentryClose() đóng re-entry hedge khi raw pnl > 0, độc lập với combined basket.
Tính basketRed một lần trong AlamoCheck(); chỉ gọi re-entry close khi !basketRed.
Re-entry tickets ở g_alamoReentryTickets, còn gate cũ nhìn mỗi g_alamoTickets.
Hoist liveHedge trước Skill6 gate :429; dùng ở Skill6, grid cooldown, grid freeze, escalation freeze, breaker.
AlamoCloseAll() có thể bỏ sót hedgeCác direct caller trong EA, Skill6, GridManager, Schedule đóng tracked Ln nhưng không sweep toàn bộ ALAMO magic.
Phase 1 phân loại từng caller. Đường nào reachable khi basket đỏ phải gate trước khi close grid hoặc route sang AlamoFlattenAllHedge().
Bot chết tại margin-level 45.59% khi account-DD chỉ 34%; DD floor bị trễ về mặt cấu trúc.
Thêm AlamoMarginFloorPct theo equity / margin * 100, mặc định tắt, khi live thì đặt cao hơn broker stop-out vài điểm.
Tăng hedge fraction không tự đặt thêm lot nếu mọi đường fire đã bị frozen; thêm constants sớm sẽ làm phình scope.
Hoãn Phase 5. Nếu cần build, phải có top-up fire rõ ràng khi basketRed, margin OK, và desired hedge > live hedge.
Window 16/2-26/2 là trend một chiều nên không chứng minh được basket break-even exit; chỉ chứng minh sống sót.
@22 pass khi đi tới 26/2, không stop-out, không tự realized loss khi basket đỏ, Q bị chặn, floor bắn 0 lần. Demo break-even dùng window có hồi giá riêng.
Mapping từ spec tới file/line hiện tại, để cook theo bằng chứng thay vì nhớ narrative.
| Mảng spec | Bằng chứng hiện tại | Hành động build | Điều kiện pass |
|---|---|---|---|
| Ranh giới basketRed | AlamoCombinedNetPnL(), AlamoBasketExitBuffer, breakeven branch :700 |
Tính sau AlamoSyncLevels(), trước mọi close trigger. |
Một biến local điều khiển cả hai cửa, breaker, floor. |
| Cửa #1 | shouldClose = checkpointProfit || lenhYProfit |
Đổi thành !basketRed && (...). |
Không có ALAMO_CLOSE khi basket tổng còn đỏ. |
| Cửa #2 | AlamoCheckReentryClose() được gọi mỗi tick khi count > 0. |
Chỉ gọi khi !basketRed. |
Không có ALAMO_REENTRY: CLOSED khi basket đỏ. |
| Invariant freeze | EA gate ở Skill6 :429, grid :473/:480, escalation :506. |
Hoist liveHedge = ArraySize(g_alamoTickets)+g_alamoReentryCount trước :429. |
Grid Q ngừng phình sau lần hedge đầu tiên. |
| Caller đóng trực tiếp | EA EmergencyDD, Skill6 TP/reset, GridManager emergency-compression, Schedule. | Phân loại, gate, hoặc route sang flatten toàn bộ magic. | Không bỏ sót hedge 123458; không tự close khi basket đỏ. |
| Sàn khẩn cấp | DD breaker bỏ lỡ case chết tại margin-level 45.59%. | Thêm AlamoMarginFloorPct, mặc định tắt, khai báo đồng bộ ở hai nơi. |
Floor bắn 0 lần ở @22 khỏe; case synthetic sâu flatten cả hai magic. |
Mermaid dùng cho diagram docs dễ bảo trì; SVG phía trên là visual fallback không phụ thuộc runtime.
---
config:
theme: base
flowchart:
curve: basis
---
flowchart LR
P1["Phase 1
audit hợp đồng hold"] --> P2["Phase 2
giữ hedge kín"]
P2 --> P3["Phase 3
sàn margin-level"]
P3 --> P4["Phase 4
@22 sống + @50 A/B"]
P4 -->|"sống"| P6["Phase 6
red-team trước phát hành"]
P4 -->|"vẫn stop-out"| P5["Phase 5
dynamic neutralization"]
P5 --> P4
P2 -. khóa .-> R1["Không direct AlamoCloseAll
khi basket đỏ"]
P2 -. chặn .-> R2["liveHedge = Ln + re-entry"]
P3 -. bảo vệ .-> R3["broker margin-level
phanh cuối"]
Các anchor local dùng để dựng page này. Cố tình để cụ thể để pass implementation tiếp theo kiểm nhanh.
plans/260604-1704-GH-15.../plan.md: quyết định SS, red-team review, không còn mâu thuẫn chưa xử lý.
Include/FBot/FBotAlamo.mqh: cửa close, re-entry tickets, combined net PnL, breaker.
Experts/Advisors/FBot_v4.1_Alamo_Jul2026_(v2-LenhY-hotfix15).mq5: các gate freeze của Skill6, grid, escalation.
Include/FBot/FBotPositionManager.mqh: basket flatten calls AlamoFlattenAllHedge().
docs/alamo-hedge-design-theory.md: mục đích ALAMO, giới hạn đã biết, hành vi Hotfix15.
docs/backtest-cheat-sheet.md: luồng compile/backtest và cấu hình MT5 tester.