# Quang DCA EA v5.3 - Hướng Dẫn Chế Độ Giao Dịch

## Mục Lục
- [Tổng Quan](#tổng-quan)
- [Chế Độ Giao Dịch](#chế-độ-giao-dịch)
  - [Chế Độ AUTO](#chế-độ-auto)
  - [Chế Độ MANUAL](#chế-độ-manual)
- [Các Nút Điều Khiển](#các-nút-điều-khiển)
  - [Nút BUY/SELL](#nút-buysell)
  - [Nút Chuyển Mode](#nút-chuyển-mode)
  - [Panel Đóng Lệnh](#panel-đóng-lệnh)
- [Cách Sử Dụng](#cách-sử-dụng)

---

## Tổng Quan

EA hỗ trợ 2 chế độ giao dịch chính:
- **AUTO Mode**: EA tự động mở và quản lý chuỗi DCA
- **MANUAL Mode**: Người dùng tự mở lệnh đầu tiên, EA quản lý các lệnh DCA tiếp theo

Bạn có thể chọn chế độ mặc định qua input `InpTradingMode` và chuyển đổi linh hoạt trong quá trình chạy thông qua các nút trên giao diện.

---

## Chế Độ Giao Dịch

### Chế Độ AUTO

**Mô tả:**
- EA tự động mở lệnh đầu tiên của chuỗi DCA khi có điều kiện phù hợp
- Tự động đặt các lệnh pending theo cấu hình (pip step, multiplier, số tầng)
- Tự động quản lý Take Profit và đóng toàn bộ chuỗi khi đạt mục tiêu

**Khi nào sử dụng:**
- Muốn EA hoạt động hoàn toàn tự động
- Không cần can thiệp thủ công vào điểm vào lệnh

**Cách hoạt động của nút BUY/SELL trong AUTO mode:**
- Nút **BUY**: Toggle bật/tắt cho phép mở chuỗi BUY
  - Màu xanh lá = Đang bật (cho phép mở chuỗi BUY mới)
  - Màu xám = Đang tắt (không mở chuỗi BUY mới, vẫn quản lý chuỗi đang có)
- Nút **SELL**: Toggle bật/tắt cho phép mở chuỗi SELL
  - Màu đỏ = Đang bật (cho phép mở chuỗi SELL mới)
  - Màu xám = Đang tắt (không mở chuỗi SELL mới, vẫn quản lý chuỗi đang có)

### Chế Độ MANUAL

**Mô tả:**
- EA **KHÔNG** tự động mở lệnh đầu tiên
- Người dùng phải bấm nút BUY/SELL hoặc tự mở lệnh thủ công
- Sau khi có lệnh đầu tiên, EA sẽ tự động đặt các pending và quản lý chuỗi DCA

**Khi nào sử dụng:**
- Muốn tự chọn điểm vào lệnh
- Kết hợp phân tích kỹ thuật cá nhân với hệ thống DCA của EA

**Cách hoạt động của nút BUY/SELL trong MANUAL mode:**
- Nút **BUY**: Bấm để mở lệnh BUY market ngay lập tức (lệnh đầu tiên của chuỗi)
- Nút **SELL**: Bấm để mở lệnh SELL market ngay lập tức (lệnh đầu tiên của chuỗi)

---

## Các Nút Điều Khiển

### Nút BUY/SELL

| Chế độ | Nút BUY | Nút SELL |
|--------|---------|----------|
| **AUTO** | Toggle bật/tắt direction BUY | Toggle bật/tắt direction SELL |
| **MANUAL** | Mở lệnh BUY market ngay | Mở lệnh SELL market ngay |

**Giao diện nút:**
- Vị trí: Panel góc phải dưới màn hình
- Kích thước: Dễ nhấn, rõ ràng

**Màu sắc (AUTO mode):**
- 🟢 **Xanh lá**: Direction BUY đang bật
- 🔴 **Đỏ**: Direction SELL đang bật  
- ⚫ **Xám**: Direction đang tắt

### Nút Chuyển Mode

Hai nút để chuyển đổi giữa AUTO và MANUAL mode:

| Nút | Chức năng |
|-----|-----------|
| **AUTO** | Chuyển sang chế độ AUTO |
| **MANUAL** | Chuyển sang chế độ MANUAL |

**Vị trí:** Close Panel (cùng với các nút đóng lệnh)

### Panel Đóng Lệnh

| Nút | Chức năng |
|-----|-----------|
| **ĐÓNG TẤT CẢ** | Đóng tất cả lệnh BUY và SELL |
| **ĐÓNG BUY** | Đóng tất cả lệnh BUY (cả market và pending) |
| **ĐÓNG SELL** | Đóng tất cả lệnh SELL (cả market và pending) |

---

## Cách Sử Dụng

### Scenario 1: Giao dịch hoàn toàn tự động

1. Đặt `InpTradingMode = MODE_AUTO`
2. Bật EA (nhấn "Bắt Đầu")
3. EA sẽ tự động mở và quản lý chuỗi DCA
4. Dùng nút BUY/SELL để bật/tắt hướng giao dịch nếu cần

### Scenario 2: Tự chọn điểm vào lệnh

1. Đặt `InpTradingMode = MODE_MANUAL` hoặc chuyển sang MANUAL mode trên panel
2. Bật EA (nhấn "Bắt Đầu")
3. Phân tích chart, chờ tín hiệu vào lệnh
4. Nhấn nút **BUY** hoặc **SELL** khi muốn vào lệnh
5. EA sẽ tự động quản lý chuỗi DCA sau đó

### Scenario 3: Chuyển đổi mode trong khi chạy

1. Đang ở AUTO mode, muốn chuyển sang MANUAL:
   - Nhấn nút **MANUAL** trên panel
   - EA sẽ dừng mở chuỗi mới tự động
   - Vẫn quản lý các chuỗi đang có
   
2. Đang ở MANUAL mode, muốn chuyển sang AUTO:
   - Nhấn nút **AUTO** trên panel
   - EA sẽ bắt đầu tự động mở chuỗi mới

---

## Biến Global Liên Quan

| Biến | Mô tả |
|------|-------|
| `g_current_trading_mode` | Mode hiện tại (MODE_AUTO hoặc MODE_MANUAL) |
| `g_buy_direction_enabled` | Cho phép mở chuỗi BUY (true/false) |
| `g_sell_direction_enabled` | Cho phép mở chuỗi SELL (true/false) |

---

## Tính Năng Layer TP Override

### Mô tả

`Thay đổi tp khi đến tầng` cho phép bạn **đặt mức Take Profit mới khi chuỗi DCA đạt đến tầng (layer) nhất định**. Đây là tính năng nâng cao giúp điều chỉnh chiến lược TP linh hoạt theo độ sâu của chuỗi.

**⚠️ LƯU Ý QUAN TRỌNG:** Giá trị TP được **GHI ĐÈ HOÀN TOÀN**, không phải cộng/trừ từ TP hiện tại.

### Cú pháp

```
layer1:tp_value1; layer2:tp_value2; ...
```

**Ví dụ:**
```
34:1; 38:0.5
```

### Giải thích

| Cú pháp | Ý nghĩa |
|---------|---------|
| `34:1` | Khi chuỗi đến **tầng 34**, **đặt TP = 1** (giá) |
| `38:0.5` | Khi chuỗi đến **tầng 38**, **đặt TP = 0.5** (giá) |

### Cách hoạt động

1. EA theo dõi số layer hiện tại của chuỗi (layer cao nhất)
2. Khi đạt đến layer được định nghĩa, **TP được GHI ĐÈ** bằng giá trị chỉ định
3. Nếu có nhiều mức, EA sử dụng **layer lớn nhất ≤ layer hiện tại**
4. Ví dụ: Chuỗi đang ở layer 35, config là `34:1; 38:0.5` → sử dụng TP = 1 (từ layer 34)

### Ứng dụng thực tế

**Scenario 1: Giảm TP khi chuỗi sâu (thoát nhanh hơn)**
```
Thay đổi tp khi đến tầng = "20:1; 30:0.5; 40:0.3"
```
- Tầng 20+: Set TP = 1
- Tầng 30+: Set TP = 0.5 → Dễ thoát hơn
- Tầng 40+: Set TP = 0.3 → Ưu tiên thoát nhanh

**Scenario 2: Tăng TP khi chuỗi sâu (kỳ vọng phục hồi mạnh)**
```
Thay đổi tp khi đến tầng = "25:2; 35:3"
```
- Tầng 25+: Set TP = 2
- Tầng 35+: Set TP = 3 → Chuỗi sâu, cần TP lớn hơn để bù rủi ro

**Scenario 3: Kết hợp chiến lược**
```
Thay đổi tp khi đến tầng = "15:2; 25:1.5; 35:0.8"
```
- Tầng 15+: Set TP = 2 (lạc quan)
- Tầng 25+: Set TP = 1.5 (điều chỉnh)
- Tầng 35+: Set TP = 0.8 (ưu tiên thoát)

### Lưu ý

- Để trống `""` nếu không muốn sử dụng tính năng này
- Các giá trị được phân cách bằng dấu **chấm phẩy** (;)
- Mỗi cặp layer:value được phân cách bằng dấu **hai chấm** (:)
- Có thể định nghĩa nhiều tầng override cùng lúc
- **Giá trị phải dương** (TP âm không hợp lệ)

---

## Tính Năng Hedge (Phòng Hộ)

### Tổng Quan

Tính năng **Hedge** cho phép EA tự động mở lệnh ngược hoặc đóng bớt lệnh cũ để **giảm thiểu rủi ro** khi chuỗi DCA đã vào sâu. Đây là chiến lược phòng hộ giúp bảo vệ tài khoản trong những tình huống thị trường đi ngược hướng dự đoán.

### Các Cài Đặt (Input)

| # | Tên hiển thị | Giá trị mặc định | Mô tả |
|---|--------------|------------------|-------|
| 1 | **Enable Hedge** | `false` | Bật/Tắt chức năng Hedge |
| 2 | **Hedge Mode** | `HEDGE - Mở lệnh ngược` | Chế độ hedge |
| 3 | **Hedge Calc Mode** | `GAP - Dùng Hedge Gap` | Cách tính layer để thực hiện hedge |
| 4 | **[START_STOP] Start Layer** | `10` | Bắt đầu hedge từ tầng này |
| 5 | **[START_STOP] Stop Layer** | `34` | Dừng hedge sau tầng này |
| 6 | **[GAP] Hedge Gap** | `10` | Khoảng cách giữa các layer được hedge |
| 7 | **Auto Close Hedge** | `true` | Tự động đóng lệnh hedge khi chuỗi chính đóng |

---

### Hedge Mode (Chế độ Hedge)

#### 1. HEDGE_MODE_HEDGE - Mở lệnh ngược

**Mô tả:**
- Khi đến layer được chỉ định, EA mở **lệnh ngược chiều** với chuỗi DCA hiện tại
- Ví dụ: Chuỗi BUY đang chạy → mở lệnh SELL để hedge

**Ưu điểm:**
- Giảm exposure tổng thể
- Có thể lãi từ cả 2 hướng nếu giá dao động
- Không mất vị thế đã có

**Nhược điểm:**
- Tăng margin sử dụng
- Cần quản lý 2 vị thế cùng lúc

#### 2. HEDGE_MODE_CLOSE - Đóng lệnh cũ

**Mô tả:**
- Khi đến layer được chỉ định, EA **đóng bớt lệnh cũ** trong chuỗi DCA
- Thường đóng các lệnh có layer thấp (vào sớm nhất) để giảm exposure

**Ưu điểm:**
- Giảm margin sử dụng
- Đơn giản hóa vị thế
- Giải phóng vốn

**Nhược điểm:**
- Chốt lỗ trên các lệnh đóng
- Mất cơ hội nếu giá quay đầu

---

### Hedge Calc Mode (Cách tính layer Hedge)

#### 1. START_STOP - Dùng Start/Stop Layer

**Cách hoạt động:**
- Hedge được thực hiện cho các layer từ Start Layer đến Stop Layer
- Mỗi layer trong khoảng này sẽ được hedge 1 lần

**Ví dụ:**
```
Start Layer = 10
Stop Layer = 20
```
→ EA sẽ hedge tại các layer: 10, 11, 12, 13, ..., 20 (tổng cộng 11 lệnh hedge)

**Khi nào sử dụng:**
- Muốn hedge liên tục trong một khoảng layer cụ thể
- Chiến lược hedge có kế hoạch rõ ràng

#### 2. GAP - Dùng Hedge Gap

**Cách hoạt động:**
- Khi chuỗi đến layer N, EA sẽ **hedge layer (N - gap)**
- Gap xác định **khoảng cách giữa layer hiện tại và layer cần hedge**
- Hedge layer cũ hơn, không phải layer hiện tại

**Ví dụ với Gap = 10:**
```
[GAP] Hedge Gap = 10
```
- Layer 10 mở → Hedge layer 0 (10-10=0)
- Layer 11 mở → Hedge layer 1 (11-10=1)
- Layer 20 mở → Hedge layer 10 (20-10=10)

→ Mỗi khi có layer mới mở, EA sẽ hedge layer cách đó 10 tầng về phía layer 0

**Khi nào sử dụng:**
- Muốn hedge liên tục các layer cũ khi chuỗi vào sâu
- Bảo vệ các vị thế đầu tiên trong chuỗi

---

### Minh Họa Hoạt Động

**Ví dụ với GAP = 10, HEDGE Mode:**

```
Chuỗi BUY đang chạy:
Layer 0  ──► BUY 0.01 lot (entry đầu tiên)
Layer 1  ──► BUY 0.01 lot
...
Layer 10 mở ──► Trigger Hedge layer 0!
                → Mở SELL với lot = lot của layer 0 (0.01)
...
Layer 11 mở ──► Trigger Hedge layer 1!
                → Mở SELL với lot = lot của layer 1 (0.01)
...
Layer 20 mở ──► Trigger Hedge layer 10!
                → Mở SELL với lot = lot của layer 10
```

**Ví dụ với START_STOP Mode (Start=10, Stop=20), HEDGE Mode:**

```
Chuỗi BUY đang chạy:
Layer 0-9: Không hedge
Layer 10: Trigger! Gap = Start Layer = 10 → Hedge layer 0
Layer 11: Trigger! → Hedge layer 1
...
Layer 20: Trigger! → Hedge layer 10
Layer 21+: Không hedge nữa (vượt Stop Layer)
```

---

### Auto Close Hedge (InpAutoCloseHedge)

Khi bật (`true`):
- Khi chuỗi DCA chính được đóng (hit TP hoặc đóng thủ công)
- EA tự động đóng tất cả lệnh hedge liên quan

Khi tắt (`false`):
- Lệnh hedge sẽ được giữ lại độc lập
- Người dùng phải tự quản lý lệnh hedge

---

### Ví Dụ Cấu Hình Thực Tế

**Scenario 1: Hedge bảo thủ (từ layer 15)**
```
Enable Hedge = true
Hedge Mode = HEDGE - Mở lệnh ngược
Hedge Calc Mode = GAP - Dùng Hedge Gap
[GAP] Hedge Gap = 15
Auto Close Hedge = true
```
→ Hedge mỗi 15 layer, tự động đóng hedge khi chuỗi đóng

**Scenario 2: Cắt lỗ sớm (đóng lệnh cũ)**
```
Enable Hedge = true
Hedge Mode = CLOSE - Đóng lệnh cũ
Hedge Calc Mode = START_STOP - Dùng Start/Stop Layer
[START_STOP] Start Layer = 8
[START_STOP] Stop Layer = 20
```
→ Từ layer 8-20, đóng bớt lệnh cũ để giảm exposure

**Scenario 3: Hedge tích cực**
```
Enable Hedge = true
Hedge Mode = HEDGE - Mở lệnh ngược
Hedge Calc Mode = GAP - Dùng Hedge Gap
[GAP] Hedge Gap = 5
```
→ Hedge mỗi 5 layer, bảo vệ sớm hơn nhưng tốn margin hơn

---

### Lưu Ý Khi Sử Dụng Hedge

1. **Margin**: Chế độ HEDGE cần nhiều margin hơn do mở thêm lệnh ngược
2. **Broker**: Một số broker không hỗ trợ hedging, cần kiểm tra trước
3. **Swap**: Lệnh hedge giữ qua đêm cũng chịu swap
4. **Kết hợp**: Có thể kết hợp với `InpMaxLoss` để bảo vệ kép

---

## Lưu Ý Quan Trọng

1. **Khi chuyển mode**: Các chuỗi đang có vẫn được quản lý bình thường
2. **Manual mode + Auto Start**: Nếu `InpAutoStart = true`, EA sẽ bật nhưng không tự mở lệnh
3. **Direction flags**: Trong AUTO mode, có thể tắt 1 hướng để chỉ giao dịch 1 chiều

---

*Phiên bản: v6.0 | Cập nhật: 2026-01-22*
