อธิบาย Trailing Stop pips และ Trailing Step pips mql4 กับ mql5 ต่างกันหรือไม่ ใช้งานอย่างไร
สรุปสั้น ๆ ก่อน:
**Trailing Stop (pips)** และ **Trailing Step (pips)** ใน MetaTrader 4 (MQL4) กับ MetaTrader 5 (MQL5)
👉 "แนวคิดเหมือนกัน 100%"
👉 แต่ "วิธีเขียนโค้ด + โครงสร้างคำสั่งต่างกัน"
---
# 🔹 1. Trailing Stop (pips) คืออะไร
คือระยะห่าง (เป็น pips) ระหว่าง **ราคาปัจจุบัน** กับ **Stop Loss (SL)**
### หลักการ
* ถ้าราคา "วิ่งไปทางกำไร"
* SL จะ "เลื่อนตาม" เพื่อ lock กำไร
### ตัวอย่าง
* Buy EURUSD ที่ 1.1000
* ตั้ง Trailing Stop = 50 pips
👉 เมื่อราคาขึ้นไป 1.1050
→ SL จะถูกเลื่อนมาเป็น 1.1000 (breakeven)
👉 ถ้าขึ้นต่อ 1.1100
→ SL จะเลื่อนเป็น 1.1050
---
# 🔹 2. Trailing Step (pips) คืออะไร
คือ "ระยะที่ต้องขยับเพิ่มก่อนจะเลื่อน SL อีกครั้ง"
### ถ้าไม่มี Step
→ SL จะขยับ "ทุก tick" (ถี่มาก)
### ถ้ามี Step
→ SL จะขยับ "เป็นช่วง ๆ"
### ตัวอย่าง
* Trailing Stop = 50 pips
* Trailing Step = 10 pips
👉 ราคาไป 50 pips → เริ่ม trailing
👉 ราคาไปเพิ่มอีก 10 pips → SL ขยับ
👉 ไปอีก 10 pips → ขยับอีก
📌 ช่วยลด:
* การ Modify Order ถี่เกินไป
* ปัญหา broker reject
---
# 🔹 3. MQL4 vs MQL5 ต่างกันตรงไหน
## ✅ แนวคิด (Logic)
✔ เหมือนกัน
✔ ใช้ trailing ตามราคาเหมือนกัน
---
## ⚠️ โครงสร้างคำสั่ง (ต่างกัน)
### 🔸 MQL4 (MT4)
* ใช้ Order แบบ "Ticket"
* ฟังก์ชันหลัก:
```mql4
OrderModify()
OrderSelect()
```
👉 ต้อง loop ทุก order
---
### 🔸 MQL5 (MT5)
* ใช้ Position / Deal / Order แยกกัน
* ฟังก์ชันหลัก:
```mql5
PositionSelect()
PositionGetDouble()
trade.PositionModify()
```
👉 ใช้ Class เช่น:
```mql5
CTrade trade;
```
---
# 🔹 4. ตัวอย่างใช้งาน MQL4
```mql4
extern int TrailingStop = 50;
extern int TrailingStep = 10;
void TrailOrder()
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderType() == OP_BUY)
{
double newSL = Bid - TrailingStop * Point;
if(Bid - OrderOpenPrice() > TrailingStop * Point)
{
if(OrderStopLoss() < newSL - TrailingStep * Point)
{
OrderModify(OrderTicket(), OrderOpenPrice(), newSL, OrderTakeProfit(), 0);
}
}
}
}
}
}
```
---
# 🔹 5. ตัวอย่างใช้งาน MQL5
```mql5
#include <Trade/Trade.mqh>
CTrade trade;
input int TrailingStop = 50;
input int TrailingStep = 10;
void TrailPosition()
{
if(PositionSelect(_Symbol))
{
double price = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double open = PositionGetDouble(POSITION_PRICE_OPEN);
double sl = PositionGetDouble(POSITION_SL);
double newSL = price - TrailingStop * _Point;
if(price - open > TrailingStop * _Point)
{
if(sl < newSL - TrailingStep * _Point)
{
trade.PositionModify(_Symbol, newSL, PositionGetDouble(POSITION_TP));
}
}
}
}
```
---
# 🔥 6. สรุปความต่างแบบเข้าใจง่าย
| เรื่อง | MQL4 | MQL5 |
| ------------ | ----------- | -------------- |
| โครงสร้าง | Order | Position |
| ฟังก์ชัน | OrderModify | PositionModify |
| ความยาก | ง่ายกว่า | ซับซ้อนกว่า |
| ความยืดหยุ่น | น้อยกว่า | สูงกว่า |
---
# 🔥 7. เทคนิคมือโปร (สำคัญมาก)
👉 Trailing Stop ที่ดี = ไม่ใช่แค่ตัวเลข
แนะนำสำหรับ TF H1:
* EURUSD
* Trailing Stop: 30–80 pips
* Step: 5–15 pips
👉 ถ้า Step เล็กเกิน
= โดนปิดเร็ว (noise)
👉 ถ้า Step ใหญ่เกิน
= ล็อกกำไรช้า
---
# 🔥 8. Insight สำหรับสาย EA Forex
ถ้าคุณทำ EA จริงจัง (เหมาะกับคุณมาก):
👉 ใช้ **Trailing แบบ Hybrid**
* เริ่ม trailing เมื่อกำไร ≥ X
* ใช้ ATR แทน pips (ฉลาดกว่า)
👉 หรือ:
* BreakEven + Trailing
* Partial Close + Trailing
--------------------------------------------------