Bài viết gần đây
| Công thức Toán học Tính toán P0 & Step trong Chiến lược Nhị Quái V6 Pro
Được viết bởi thanhdt vào ngày 27/05/2026 lúc 16:53 | 29 lượt xem
Hệ thống giao dịch Nhị Quái V6 Pro hoạt động dựa trên triết lý Lưới động đa chiều (Dynamic Grid). Khác với các hệ thống Grid truyền thống với các tầng giá cố định cố hữu dễ bị quét tài khoản khi thị trường chuyển động xu hướng mạnh (Trending), Nhị Quái sử dụng một hệ quy chiếu động thông minh lấy $P_0$ làm gốc tọa độ di động kết hợp với bước lưới $Step$ và vùng chốt lời độc lập $X$.
Tài liệu này sẽ mổ xẻ toàn bộ các công thức toán học và logic lập trình (MQL5) đứng sau cơ chế vận hành này để giúp bạn tối ưu hóa tham số giao dịch một cách khoa học nhất.
1. Trục Tọa Độ Lưới: Xác Định Điểm Gốc $P_0$
Trong hệ thống Nhị Quái V6 Pro, $P_0$ (Price Origin) đóng vai trò là tâm lưới của một chu kỳ (vòng lưới). Tất cả các tầng lệnh tiếp theo sẽ được tính khoảng cách tuyến tính dựa trên trục tọa độ động này.
Công thức Khởi tạo $P_0$
Khi khởi chạy bot hoặc bắt đầu một vòng lưới hoàn toàn mới (sau khi đã chốt tổng cụm Basket TP hoặc xóa tay), $P_0$ được gán bằng giá thị trường hiện tại:
$$P_0 = P_{text{market_bid}}$$
[!NOTE]
Trong code MQL5 (OnInit), bot sẽ kiểm tra xem đã có biến toàn cầu lưu trữ $P_0$ hay chưa. Nếu chưa và tài khoản không có vị thế mở nào đang chạy, bot sẽ tự động neo $P_0$ theo giá hiện tại:
mql5
string gv_p0 = prefix + "_P0";
if(!GlobalVariableCheck(gv_p0)) GlobalVariableSet(gv_p0, current_bid);
Cơ chế Tự động Reset $P_0$ Tránh Lệch Lưới (Grid Drift Safeguard)
Để tránh tình trạng giá chạy quá xa so với gốc $P_0$ ban đầu khi lưới lệnh đang trống (dẫn đến việc sinh các lệnh ở khoảng cách quá xa, không tối ưu dòng tiền), bot áp dụng cơ chế tự động căn chỉnh lại $P_0$ khi số tầng chênh lệch vượt quá ngưỡng an toàn $S_{text{max_drift}} = 30$:
$$text{Nếu } |s_{text{current}}| > 30 text{ và } N_{text{active_positions}} = 0 implies P_0 leftarrow P_{text{market_bid}}$$
if(MathAbs(cur_s) > 30 && total_pos_magic == 0) {
double new_p0 = m_symbol.Bid();
GlobalVariableSet(gv_p0, new_p0);
p0 = new_p0;
cur_s = 0;
// Reset các biến liên quan để bắt đầu chu kỳ lưới mới...
}
2. Công Thức Tính Số Tầng Giao Dịch ($s$) và Mức Giá Tầng ($Price_s$)
Mỗi tầng trong lưới Nhị Quái được đại diện bởi một số nguyên $s in mathbb{Z}$ (Step Index).
2.1. Công thức xác định Tầng Hiện Tại ($s_{text{current}}$)
Dựa vào khoảng cách từ giá thị trường hiện tại ($P_{text{bid}}$) đến điểm gốc $P_0$, chia cho khoảng cách tầng ($Step$ – đơn vị là point/giá trị tiền tệ tùy sản phẩm), ta thu được chỉ số tầng hiện tại bằng phép chia phần nguyên:
$$s_{text{current}} = leftlfloor frac{P_{text{bid}} – P_0}{Step} rightrfloor$$
Trong đó:
* $P_0$: Điểm gốc ban đầu.
* $Step$: Khoảng cách giữa các tầng (được quy định qua tham số InpBuyStep hoặc InpSellStep).
* $lfloor dots rfloor$: Hàm lấy phần nguyên (Truncation).
2.2. Phân loại Số Tầng ($s$)
- $s = 0$ ($S_0$): Tầng gốc (Tầng mồi), nằm ngay tại mức giá gốc $P_0$.
- $s > 0$ ($S_1, S_2, S_3, dots$): Các tầng giá nằm phía trên $P_0$ (Xuất hiện khi thị trường tăng giá).
- $s < 0$ ($S_{-1}, S_{-2}, S_{-3}, dots$): Các tầng giá nằm phía dưới $P_0$ (Xuất hiện khi thị trường giảm giá).
2.3. Công thức tính Giá Kích Hoạt của Tầng $s$ ($Price_s$)
Khi bot cần rải lệnh hoặc kiểm tra điều kiện tại một tầng thứ $s$, mức giá lý thuyết của tầng đó được tính bằng công thức:
$$text{Price}_s = P_0 + s times Step$$
double step_price = p0 + s * (magic == InpBuyMagic ? InpBuyStep : InpSellStep);
3. Công Thức Chốt Lời Độc Lập Cho Từng Tầng: Vùng Lãi $X$
Điểm ưu việt của Nhị Quái V6 Pro là Gặt X (chốt lời từng tầng riêng lẻ) thay vì giữ lệnh gồng lỗ hàng loạt. Khi giá chạm tới biên độ chốt lãi $X$ so với giá mở của tầng đó, lệnh sẽ được thanh khoản lập tức để thu hồi vốn và giải phóng ký quỹ.
3.1. Đối với cụm vị thế BUY (Mua)
Một lệnh Buy được mở tại tầng $s$ sẽ có giá mở vị thế lý thuyết là $text{Price}s$. Mục tiêu giá chốt lời $P$ sẽ cộng thêm một khoảng cách $X$ (USD/Point):}
$$P_{text{TP_Buy}}(s) = text{Price}_s + X = P_0 + s times Step + X$$
- Điều kiện kích hoạt chốt lời:
$$P_{text{bid}} ge P_{text{TP_Buy}}(s)$$
(Đồng thời tổng lợi nhuận thực tế của vị thế sau khi trừ Swap, Commission phải đạt tối thiểu $ge text{InpMinProfit}$)
3.2. Đối với cụm vị thế SELL (Bán)
Một lệnh Sell được mở tại tầng $s$ sẽ có giá mở vị thế lý thuyết là $text{Price}s$. Mục tiêu giá chốt lời $P$ sẽ trừ đi một khoảng cách $X$:}
$$P_{text{TP_Sell}}(s) = text{Price}_s – X = P_0 + s times Step – X$$
- Điều kiện kích hoạt chốt lời:
$$P_{text{ask}} le P_{text{TP_Sell}}(s)$$
(Đồng thời lợi nhuận ròng $ge text{InpMinProfit}$)
bool hit_x = (t_type == POSITION_TYPE_BUY) ? (bid >= step_price + x_dist) : (ask <= step_price - x_dist);
4. Công Thức Cơ Chế Cày Cuốc (Trailing Plowing)
Để tối đa hóa lợi nhuận khi thị trường đi mạnh theo một hướng đơn lẻ (Trending), Nhị Quái tích hợp thuật toán Cày Cuốc (Plowing). Thay vì chỉ chờ chốt cố định tại $X$, bot sẽ dịch chuyển điểm khóa lãi động theo các tỷ lệ phần trăm của bước lưới $Step$.
Hệ thống sử dụng 3 mốc Kích hoạt (Activation – $Act_i$) và 3 mốc Khóa lãi (Retracement – $Ret_i$), biểu diễn dưới dạng tỷ lệ phần trăm $%$ của $Step$:
4.1. Mốc Toán Học Cho Lệnh BUY
Khi giá tăng vượt qua mốc kích hoạt $text{Act}_i$, hệ thống ghi nhận trạng thái bảo vệ. Nếu giá quay đầu giảm trở lại chạm mốc khóa lãi $text{Ret}_i$, lệnh Buy tại tầng đó sẽ lập tức được đóng để bảo toàn lợi nhuận.
$$text{Giá Kích Hoạt Buy (Mốc } i) = text{Price}_s + left( frac{text{Act}_i}{100} right) times Step$$
$$text{Giá Khóa Lãi Buy (Mốc } i) = text{Price}_s + left( frac{text{Ret}_i}{100} right) times Step$$
Mã nguồn MQL5 tham chiếu:
if(stage < 1 && bid >= step_price + (InpPlowAct1/100.0)*InpBuyStep) { stage = 1; GlobalVariableSet(gv_stage, 1.0); }
if(stage == 1 && bid <= step_price + (InpPlowRet1/100.0)*InpBuyStep) exit = true;
4.2. Mốc Toán Học Cho Lệnh SELL
Ngược lại với Buy, lệnh Sell cày cuốc theo chiều giảm và khóa lãi khi giá hồi tăng lên mốc Retracement:
$$text{Giá Kích Hoạt Sell (Mốc } i) = text{Price}_s – left( frac{text{Act}_i}{100} right) times Step$$
$$text{Giá Khóa Lãi Sell (Mốc } i) = text{Price}_s – left( frac{text{Ret}_i}{100} right) times Step$$
Mã nguồn MQL5 tham chiếu:
if(stage < 1 && ask <= step_price - (InpPlowAct1/100.0)*InpSellStep) { stage = 1; GlobalVariableSet(gv_stage, 1.0); }
if(stage == 1 && ask >= step_price - (InpPlowRet1/100.0)*InpSellStep) exit = true;
5. Ví Dụ Trực Quan Bằng Số Liệu Thực Tế
Hãy cùng chạy thử một kịch bản lưới lệnh thực tế cho cặp BTC/USD để hiểu cách các công thức trên vận hành đồng bộ.
Thiết lập thông số đầu vào (Input Parameters):
- $P_0$ khởi tạo tại giá Bid: $60,000$
- Khoảng cách tầng ($Step$): $100$ (USD)
- Vùng chốt lời ($X$): $150$ (USD)
- Cài đặt Cày Cuốc (Plow):
- $Act_1 = 50%$, $Ret_1 = 15%$
- $Act_2 = 80%$, $Ret_2 = 30%$
Bảng Hệ Thống Tọa Độ & Các Mốc Giá Trị:
| Tầng ($s$) | Ký Hiệu Tầng | Giá Tầng Lý Thuyết ($text{Price}_s$) | Mục Tiêu TP Buy ($text{Price}_s + X$) | Mục Tiêu TP Sell ($text{Price}_s – X$) | Mốc Kích Hoạt Cày Cuốc 1 ($Act_1$) | Mốc Khóa Lãi Cày Cuốc 1 ($Ret_1$) |
|---|---|---|---|---|---|---|
| $s = 2$ | $S_2$ | $60,200$ | $60,350$ | $60,050$ | $60,250$ | $60,215$ |
| $s = 1$ | $S_1$ | $60,100$ | $60,250$ | $59,950$ | $60,150$ | $60,115$ |
| $s = 0$ | $S_0$ | $60,000$ | $60,150$ | $59,850$ | $60,050$ | $60,015$ |
| $s = -1$ | $S_{-1}$ | $59,900$ | $60,050$ | $59,750$ | $59,950$ (Buy) / $59,850$ (Sell) | $59,915$ (Buy) / $59,885$ (Sell) |
| $s = -2$ | $S_{-2}$ | $59,800$ | $59,950$ | $59,650$ | $59,850$ (Buy) / $59,750$ (Sell) | $59,815$ (Buy) / $59,785$ (Sell) |
Phân tích dòng chảy vận hành của Giá:
- Khởi động: Bot bật lúc giá đang là $60,000.5 implies P_0 = 60,000.5$ (sau đó quy chuẩn về mốc chẵn $60,000$ tùy cơ chế làm tròn). Lệnh mồi $S_0$ (Buy/Sell) được mở ngay lập tức tại $60,000$.
- Giá tăng lên $60,100$ (Chạm tầng $S_1$):
- Bot tính toán: $s_{text{current}} = lfloor (60,100 – 60,000) / 100 rfloor = 1$.
- Vì hướng đi lên (
dir = 1), bot sẽ rải tiếp 1 lệnh Buy tại $S_1$ ($60,100$).
- Giá tiếp tục tăng vọt lên $60,150$:
- Lúc này, lệnh Buy tại tầng gốc $S_0$ ($60,000$) đạt điều kiện Gặt X:
$$P_{text{market}} ge P_{text{TP_Buy}}(0) = 60,000 + 150 = 60,150$$ - Hệ thống tự động chốt lời lệnh $S_0$ đút túi $150$ USD (quy đổi theo Lot size) và giải phóng vị thế này.
- Đồng thời, giá chạm $60,150$ cũng kích hoạt mốc Cày Cuốc 1 của lệnh Buy đang mở tại tầng $S_1$ ($60,100$):
$$text{Kích Hoạt Plow}_1 = 60,100 + (50% times 100) = 60,150$$
Trạng thái của tầng $S_1$ chuyển sangSTAGE_1.
- Lúc này, lệnh Buy tại tầng gốc $S_0$ ($60,000$) đạt điều kiện Gặt X:
- Giá quay đầu bất ngờ từ $60,170$ về $60,110$:
- Lệnh Buy tại tầng $S_1$ chưa chạm được đích TP cố định ($60,250$) nhưng đã rơi lại qua điểm khóa lãi của
STAGE_1:
$$text{Khóa Lãi Ret}_1 = 60,100 + (15% times 100) = 60,115$$ - Khi giá chạm $60,115$ đi xuống, bot lập tức đóng lệnh Buy $S_1$ để giữ lại khoản lãi đút túi (tương đương khoảng chênh lệch $+15$ USD quy đổi), bảo vệ tài khoản hoàn toàn trước đợt đảo chiều bất thình lình.
- Lệnh Buy tại tầng $S_1$ chưa chạm được đích TP cố định ($60,250$) nhưng đã rơi lại qua điểm khóa lãi của
6. Kết Luận & Khuyến Nghị Cài Đặt Tham Số
Hiểu rõ mô hình toán học của Nhị Quái V6 Pro sẽ giúp bạn thiết lập một ma trận Grid tối ưu nhất:
- Tỷ lệ vàng giữa $Step$ và $X$:
- Thị trường Sideway (Đi ngang tích lũy): Nên chọn $X approx 1.2 times Step text{ đến } 1.5 times Step$. Điều này giúp bot liên tục gặt lợi nhuận tối ưu mỗi khi giá dao động qua lại giữa các tầng.
- Thị trường Trending (Bứt phá mạnh): Nên chọn $X ge 2 times Step$ kết hợp bật tính năng Plowing (Cày Cuốc) để ăn trọn con sóng dài, tối ưu hóa lãi kép khi lưới chạy một hướng.
- Khoảng cách tầng ($Step$) an toàn:
- Phụ thuộc trực tiếp vào biến động trung bình ngày (ATR – Average True Range) của tài sản giao dịch. Đối với BTC, $Step$ nên từ $50$ đến $150$ giá. Đối với Vàng (XAUUSD), $Step$ nên từ $20$ đến $50$ pip (tương đương $2$ – $5$ giá).