รหัสข้อผิดพลาด MT5: 10027, 10030, 10016 และอื่นๆ
สารบัญ (7)
สารบัญ
รหัสข้อผิดพลาด MT5 / MQL5: Retcode 10004–10031 และข้อผิดพลาดรันไทม์
MT5 รายงานข้อผิดพลาด 2 ประเภท คือ trade retcode 5 หลัก (เช่น 10027 AutoTrading ถูกปิด, 10030 โหมด filling ไม่รองรับ, 10016 สต็อปไม่ถูกต้อง, 10019 เงินไม่เพียงพอ) และข้อผิดพลาดรันไทม์ 4 หลักจาก GetLastError() (เช่น 4401, 4756) — ตารางด้านล่างจับคู่แต่ละรหัสกับวิธีแก้ไข
ค้นหาด่วน: รหัส → ความหมาย → วิธีแก้ไข
หมายเลขและชื่อค่าคงที่อ้างอิงตามเอกสารอ้างอิงทางการของ MQL5 (รหัสส่งคืนของเซิร์ฟเวอร์เทรด และ ข้อผิดพลาดรันไทม์)
Trade retcode (MqlTradeResult.retcode)
| รหัส | ค่าคงที่ | ความหมาย | วิธีแก้ไข | รายละเอียด |
|---|---|---|---|---|
| 10004 | TRADE_RETCODE_REQUOTE | Requote — ราคาเปลี่ยนก่อนที่ออเดอร์จะถูกจับคู่ | ขยายค่า deviation ที่ยอมรับได้ หรือส่งใหม่ด้วยราคาล่าสุด | Off quotes และ requote |
| 10006 | TRADE_RETCODE_REJECT | คำขอถูกปฏิเสธ | โดยมากเกิดจากสเปรดกว้างหรือตลาดเคลื่อนไหวเร็ว ปล่อยให้ EA ลองใหม่ในติ๊กถัดไป | — |
| 10013 | TRADE_RETCODE_INVALID | คำขอไม่ถูกต้อง | ฟิลด์ของคำขอ (action, ประเภทออเดอร์, สัญลักษณ์) ไม่ถูกต้อง ตรวจสอบด้วย OrderCheck() ก่อนส่ง | — |
| 10014 | TRADE_RETCODE_INVALID_VOLUME | ปริมาณในคำขอไม่ถูกต้อง | ปัดขนาดล็อตให้ตรงกับค่าต่ำสุด สูงสุด และสเต็ปของสัญลักษณ์ (SYMBOL_VOLUME_MIN / MAX / STEP) | — |
| 10015 | TRADE_RETCODE_INVALID_PRICE | ราคาในคำขอไม่ถูกต้อง | ปรับราคาให้ตรงกับจำนวนทศนิยมและ tick size ของสัญลักษณ์ และตรวจสอบว่า pending order อยู่ด้านที่ถูกต้องของราคาตลาด | — |
| 10016 | TRADE_RETCODE_INVALID_STOPS | สต็อปในคำขอไม่ถูกต้อง | วาง SL/TP ให้ห่างกว่า stops level ของโบรกเกอร์ และอยู่ด้านที่ถูกต้องของราคา | Invalid stops |
| 10017 | TRADE_RETCODE_TRADE_DISABLED | การเทรดถูกปิดใช้งาน | ตรวจสอบ trade mode ของสัญลักษณ์ใน Specification และตรวจสอบว่าล็อกอินด้วยรหัสผ่านเทรด (ไม่ใช่รหัสผ่าน investor) หากยังไม่ได้ให้สอบถามโบรกเกอร์ | — |
| 10018 | TRADE_RETCODE_MARKET_CLOSED | ตลาดปิด | รอให้ช่วงเวลาซื้อขายของสัญลักษณ์นั้นเปิด | Market closed |
| 10019 | TRADE_RETCODE_NO_MONEY | เงินไม่เพียงพอสำหรับดำเนินการตามคำขอ | ลดขนาดล็อต ปิดโพซิชัน หรือฝากเงินเพิ่ม | Not enough money |
| 10021 | TRADE_RETCODE_PRICE_OFF | ไม่มีราคาสำหรับประมวลผลคำขอ | ตรวจสอบการเชื่อมต่อและดูว่าสัญลักษณ์นั้นมีราคาอยู่ในขณะนี้หรือไม่ แล้วลองใหม่ | Off quotes และ requote |
| 10026 | TRADE_RETCODE_SERVER_DISABLES_AT | AutoTrading ถูกปิดโดยเซิร์ฟเวอร์ | โบรกเกอร์บล็อกการเทรดด้วยอัลกอริทึมในบัญชีนี้ ให้ติดต่อโบรกเกอร์ | AutoTrading ปิดใช้งาน |
| 10027 | TRADE_RETCODE_CLIENT_DISABLES_AT | AutoTrading ถูกปิดโดยเทอร์มินัลฝั่งผู้ใช้ | เปิดปุ่ม Algo Trading และอนุญาต algo trading ทั้งใน Options และในคุณสมบัติของ EA | AutoTrading ปิดใช้งาน |
| 10030 | TRADE_RETCODE_INVALID_FILL | ประเภท filling ของออเดอร์ไม่ถูกต้อง | ตั้งค่า type_filling เป็นโหมดที่สัญลักษณ์รองรับ (FOK / IOC / Return) | Unsupported filling mode |
| 10031 | TRADE_RETCODE_CONNECTION | ไม่มีการเชื่อมต่อกับเซิร์ฟเวอร์เทรด | ตรวจสอบแถบสถานะการเชื่อมต่อ เครือข่ายของ VPS และสถานะเซิร์ฟเวอร์ของโบรกเกอร์ | — |
ข้อผิดพลาดรันไทม์ (GetLastError())
| รหัส | ค่าคงที่ | ความหมาย | วิธีแก้ไข | รายละเอียด |
|---|---|---|---|---|
| 4001 | ERR_INTERNAL_ERROR | ข้อผิดพลาดภายในที่ไม่คาดคิด | ไม่ได้เจาะจงสาเหตุใดสาเหตุหนึ่ง ให้เรียก ResetLastError() ก่อนฟังก์ชันที่ต้องการตรวจสอบ หากยังเกิดอยู่ให้รีสตาร์ทหรืออัปเดตเทอร์มินัล | — |
| 4401 | ERR_HISTORY_NOT_FOUND | ไม่พบประวัติที่ร้องขอ | เรียก HistorySelect() สำหรับช่วงเวลาที่ครอบคลุมดีลหรือออเดอร์นั้นก่อนอ่านข้อมูล | — |
| 4752 | ERR_TRADE_DISABLED | ห้ามการเทรดโดย Expert Advisor | เปิด Algo Trading และติ๊ก "Allow Algo Trading" ในคุณสมบัติของ EA | AutoTrading ปิดใช้งาน |
| 4756 | ERR_TRADE_SEND_FAILED | ส่งคำขอเทรดไม่สำเร็จ | OrderSend() ส่งคืน false ให้อ่าน MqlTradeResult.retcode เพื่อดูสาเหตุที่แท้จริง (มักเป็น 10027, 10030 หรือ 10016) | — |
ย้ายมาจาก MT4? MT4 ใช้หมายเลขคนละชุดสำหรับสถานการณ์เดียวกัน ซึ่งส่วนใหญ่เป็นเลข 3 หลัก (134, 130, 132, 136, 4109 …) แต่ละหัวข้อด้านล่างระบุรหัสเทียบเท่าใน MT4 ที่นำมาจากเอกสารอ้างอิงทางการของ MQL4 โปรดทราบว่าใน MT5 หมายเลข 4109 หมายถึง ERR_CHART_WRONG_PROPERTY (ข้อผิดพลาดของชาร์ต) ไม่ใช่ข้อผิดพลาดการเทรด
EA หลัก 3 ตัวของเรา (เผยแพร่ตัวเลขทั้งหมดของ backtest ระยะยาวและ forward สาธารณะ)
📧 คอร์สอีเมลฟรี (8 ฉบับ) + แพ็กอินดิเคเตอร์ MT5 13 ตัว เฉพาะสมาชิก
* ปกป้องความเป็นส่วนตัวอย่างเคร่งครัด คุณสามารถยกเลิกการสมัครได้ตลอดเวลา
วิธีตรวจสอบแท็บ Expert
คลิกแท็บ Expert ที่ด้านล่างของ MT5 เพื่อดูล็อกกิจกรรมของ EA ทั้งหมดเรียงตามเวลา
รูปแบบการแสดงผล:
2026.05.18 10:00:01.234 GOLD VIPER XAUUSD,M30: [ERROR] 10016
วันที่/เวลา ชื่อ EA สัญลักษณ์ ไทม์เฟรม ข้อความ
เมื่อมีข้อผิดพลาดปรากฏขึ้น ให้ใช้หมายเลขรหัสค้นหาสาเหตุจากตารางด้านบน
รหัสข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
10019 — เงินไม่เพียงพอ (TRADE_RETCODE_NO_MONEY)
รหัสเทียบเท่าใน MT4: 134 ERR_NOT_ENOUGH_MONEY ส่วน ERR_NO_MONEY เป็นชื่อย่อที่ใช้กันแพร่หลายสำหรับสถานการณ์เดียวกัน
ตัวอย่างข้อความ: "Order failed: not enough money"
"No money"
สาเหตุ: มาร์จิ้นไม่เพียงพอ EA จึงไม่สามารถเปิดโพซิชันใหม่ได้
วิธีแก้ไข:
- ตรวจสอบอัตรามาร์จิ้นปัจจุบันในแท็บ Trade ของ MT5
- หากอัตรามาร์จิ้นใกล้หรือต่ำกว่า 100% ให้พิจารณาฝากเงินเพิ่ม
- ลดค่า
RiskPercentของ EA เพื่อลดขนาดโพซิชัน - ปิดโพซิชันที่เปิดอยู่บางส่วนด้วยตนเองเพื่อคืนมาร์จิ้น
📖 สำหรับเหตุผลที่ข้อผิดพลาดนี้ปรากฏแม้ยอดเงินจะดูเพียงพอ และโค้ด MQL5 ที่ช่วยป้องกัน ดูที่ Not enough money ใน MT5 — สาเหตุและวิธีแก้
10027 — AutoTrading ถูกปิดโดยฝั่งผู้ใช้ (TRADE_RETCODE_CLIENT_DISABLES_AT)
ข้อผิดพลาดรันไทม์ MT5 ที่เกี่ยวข้อง: 4752 ERR_TRADE_DISABLED รหัสเทียบเท่าใน MT4: 4109 ERR_TRADE_NOT_ALLOWED
ตัวอย่างข้อความ: "AutoTrading disabled by client"
"Trade is not allowed"
สาเหตุ: การเทรดอัตโนมัติของ MT5 ถูกปิดอยู่
วิธีแก้ไข:
- คลิกปุ่ม Algo Trading บนแถบเครื่องมือของ MT5 เพื่อเปิดใช้งาน (ปุ่มควรเปลี่ยนเป็นสีเขียว)
- ไปที่ Tools → Options → Expert Advisors → เปิดใช้งาน Allow Algo Trading แล้วรีสตาร์ท MT5
ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อ MT5 เริ่มทำงานอัตโนมัติหลังจาก VPS รีบูต
📖 สำหรับลำดับสิทธิ์ทั้งหมด (การตั้งค่าใน Options, Allow Algo Trading รายชาร์ต, รหัสผ่าน investor และความแตกต่างระหว่าง 10027 กับ 10026) ดูที่ AutoTrading ปิดใช้งานใน MT5 — วิธีแก้แบบครบถ้วน
10018 — ตลาดปิด (TRADE_RETCODE_MARKET_CLOSED)
รหัสเทียบเท่าใน MT4: 132 ERR_MARKET_CLOSED
ตัวอย่างข้อความ: "Market closed"
สาเหตุ: EA พยายามเข้าเทรดนอกเวลาทำการของตลาด (วันหยุดสุดสัปดาห์หรือวันหยุดนักขัตฤกษ์)
วิธีแก้ไข: ไม่ต้องดำเนินการใดๆ ตลาดปิดในช่วงสุดสัปดาห์ และการพยายามเข้าเทรดในช่วงนั้นจะทำให้เกิดข้อผิดพลาดนี้ EA จะกลับมาทำงานเองโดยอัตโนมัติเมื่อตลาดเปิดอีกครั้ง
📖 เจอในวันธรรมดาด้วย? ช่วงเวลาซื้อขายของสัญลักษณ์ เวลาเซิร์ฟเวอร์ และโหมด close-only อธิบายไว้ใน Market closed (10018/132) — สาเหตุและวิธีแก้
10016 — สต็อปไม่ถูกต้อง (TRADE_RETCODE_INVALID_STOPS)
รหัสเทียบเท่าใน MT4: 130 ERR_INVALID_STOPS
ตัวอย่างข้อความ: "Invalid stops"
สาเหตุ: ค่า SL (stop loss) หรือ TP (take profit) ละเมิดข้อกำหนด stop level ขั้นต่ำของโบรกเกอร์
วิธีแก้ไข:
- ตรวจสอบ stop level (ระยะ SL ขั้นต่ำ) ของโบรกเกอร์: คลิกขวาที่สัญลักษณ์ใน MT5 → Specification → ดูช่อง Stops level
- ตรวจสอบให้แน่ใจว่าระยะ SL ของ EA มากกว่า stop level
- ข้อผิดพลาดนี้พบบ่อยที่สุดในช่วงความผันผวนต่ำที่ค่า ATR เล็กมาก
📖 สำหรับการทำงานจริงของ stop level ความแตกต่างระหว่าง 10016 กับ 130 และโค้ด MQL5 ที่ป้องกันปัญหานี้ได้อย่างถาวร ดูที่ Invalid stops (10016/130) — วิธีแก้แบบครบถ้วน
10021 — ไม่มีราคา (TRADE_RETCODE_PRICE_OFF)
รหัสเทียบเท่าใน MT4: 136 ERR_OFF_QUOTES
ตัวอย่างข้อความ: "Off quotes"
สาเหตุ: ไม่ได้รับราคาจากเซิร์ฟเวอร์ของโบรกเกอร์ — เป็นปัญหาการเชื่อมต่อ
วิธีแก้ไข:
- ตรวจสอบสถานะการเชื่อมต่อในแถบสถานะด้านล่างของหน้าจอ MT5
- หากการเชื่อมต่อหลุด ให้รีสตาร์ท MT5
- ตรวจสอบหน้าสถานะเซิร์ฟเวอร์ของโบรกเกอร์ว่ามีเหตุขัดข้องหรือไม่
- ตรวจสอบการเชื่อมต่อเครือข่ายบน VPS
📖 สำหรับความแตกต่างกับ requote (10004/138) การปรับค่า deviation และตัวอย่างการเขียนโค้ดลองใหม่ ดูที่ Off quotes และ requote (10021/10004) — วิธีแก้แบบครบถ้วน
📖 เจอ Unsupported filling mode (10030) ทันทีหลังเปลี่ยนโบรกเกอร์? นั่นเป็นคนละปัญหากัน — ดูที่ Unsupported filling mode (10030) — วิธีแก้ไข
10012 — คำขอหมดเวลา (TRADE_RETCODE_TIMEOUT)
รหัสเทียบเท่าใน MT4: 128 ERR_TRADE_TIMEOUT
ตัวอย่างข้อความ: "Request canceled by timeout"
สาเหตุ: ออเดอร์หมดเวลาเนื่องจากเซิร์ฟเวอร์หนาแน่นหรือเครือข่ายล่าช้า
วิธีแก้ไข:
- พบบ่อยที่สุดทันทีหลังการประกาศข่าวสำคัญ ซึ่งเป็นช่วงที่เซิร์ฟเวอร์มีโหลดสูง
- โดยทั่วไป EA จะลองใหม่ในติ๊กถัดไป — ไม่ต้องดำเนินการใดๆ
- หากเกิดขึ้นบ่อย ให้ทบทวนสภาพแวดล้อมเครือข่ายของ VPS หรือพิจารณาโบรกเกอร์รายอื่น
10006 — คำขอถูกปฏิเสธ (TRADE_RETCODE_REJECT)
ตัวอย่างข้อความ: "Request rejected"
สาเหตุ: โบรกเกอร์ปฏิเสธออเดอร์ — โดยทั่วไปเกิดจากสเปรดเกินขีดจำกัดหรือราคาเคลื่อนไหวเร็วเกินไป
วิธีแก้ไข:
- ทบทวนค่า
MaxSpreadPointsข้อผิดพลาดนี้พบบ่อยเมื่อสเปรดกว้างขึ้นมาก - ในช่วงระหว่างและทันทีหลังการประกาศข่าว ถือเป็นพฤติกรรมที่คาดไว้ — สามารถเพิกเฉยได้
- หากเกิดขึ้นบ่อย ให้เพิ่มค่า
MaxSpreadPointsขึ้นเล็กน้อย
"Margin level too low"
ตัวอย่างข้อความ: "Margin level too low. Skip signal."
สาเหตุ: การตั้งค่า UseMarginCheck = true ของ EA ตรวจพบว่าอัตรามาร์จิ้นลดลงต่ำกว่า MinMarginLevel (เช่น 200%) จึงบล็อกการเข้าเทรดใหม่โดยอัตโนมัติ
วิธีแก้ไข:
- นี่คือการทำงานป้องกันตามปกติ — ไม่ใช่ข้อผิดพลาด
- การเข้าเทรดจะกลับมาทำงานโดยอัตโนมัติเมื่ออัตรามาร์จิ้นฟื้นตัว
- วิธีแก้ที่ต้นเหตุ: ฝากเงินเพิ่มหรือลดค่า
RiskPercent
"No signal on this bar" หรือ "Wait for next bar"
สิ่งเหล่านี้ไม่ใช่ข้อผิดพลาด แต่เป็นบันทึกล็อกสำหรับดีบัก
"No signal. ATR=1245, EMA(50)=1998.23"
EA ประเมินชาร์ตทุกแท่งและบันทึกล็อกเมื่อเงื่อนไขการเข้าเทรดไม่ครบ ซึ่งเป็นการทำงานปกติ
การจัดลำดับความสำคัญของข้อผิดพลาด
| ความสำคัญ | ข้อผิดพลาด | การดำเนินการ |
|---|---|---|
| เร่งด่วน | 10019 เงินไม่เพียงพอ (MT4: 134) | ฝากเงินหรือลดขนาดล็อตทันที |
| เร่งด่วน | 10027 AutoTrading ถูกปิด / 4752 (MT4: 4109) | เปิด Algo Trading |
| ระวัง | 10016 สต็อปไม่ถูกต้อง (MT4: 130) | ทบทวนการตั้งค่า SL |
| ระวัง | 10030 ประเภท filling ไม่ถูกต้อง | ตั้งค่าโหมด filling ที่สัญลักษณ์รองรับ |
| ระวัง | 10021 ไม่มีราคา (MT4: 136) เกิดซ้ำ | ตรวจสอบการเชื่อมต่อ |
| ปกติ | 10018 ตลาดปิด (MT4: 132) เฉพาะวันหยุดสุดสัปดาห์ | ไม่ต้องดำเนินการ |
| ปกติ | 10012 หมดเวลา (MT4: 128) เป็นครั้งคราว | ไม่ต้องดำเนินการ |
| ปกติ | Margin level too low | การป้องกันตามปกติเมื่อมาร์จิ้นต่ำ |
วิธีตรวจสอบล็อกในแท็บ Expert อย่างมีประสิทธิภาพ
การกรองล็อก
คลิกขวาภายในแท็บ Expert แล้วเลือก Filter เพื่อแสดงเฉพาะล็อกของ EA หรือประเภทข้อผิดพลาดที่ต้องการ
ตำแหน่งไฟล์ล็อก
ไฟล์ล็อกของ MT5 ถูกบันทึกไว้ที่:
C:\Users\[ชื่อผู้ใช้]\AppData\Roaming\MetaQuotes\Terminal\[ID]\MQL5\Logs\
ไฟล์จะถูกสร้างโดยอัตโนมัติตามวันที่ ให้เปิดโฟลเดอร์นี้เมื่อต้องการตรวจสอบข้อผิดพลาด
สรุป
ข้อผิดพลาดส่วนใหญ่ของ EA แบ่งออกเป็น 4 หมวดหมู่:
- มาร์จิ้นไม่เพียงพอ (10019) — ฝากเงินเพิ่มหรือลดขนาดล็อต
- AutoTrading ปิดอยู่ (10027 / 4752) — คลิกปุ่ม Algo Trading เพื่อเปิดใช้งาน
- ปัญหาการเชื่อมต่อ (10021 / 10031) — รีสตาร์ท MT5 หรือตรวจสอบเครือข่าย VPS
- การทำงานปกติ — ไม่ต้องดำเนินการ (ตลาดปิดวันหยุดสุดสัปดาห์ การหลีกเลี่ยงสเปรด เป็นต้น)
สร้างนิสัยตรวจสอบแท็บ Expert ทุกวัน เพื่อให้จับข้อผิดพลาดเร่งด่วน (10019 และ 10027) ได้อย่างรวดเร็วก่อนที่จะก่อปัญหา
คำถามที่พบบ่อย
Q: ค้นหารหัสข้อผิดพลาดได้ที่ไหน?
เอกสารอ้างอิงทางการของ MQL5 แสดงรายการรหัสทั้งหมด: รหัสส่งคืนของเซิร์ฟเวอร์เทรด สำหรับช่วง 10004–10046 และ ข้อผิดพลาดรันไทม์ สำหรับช่วง 4xxx นอกจากนี้ยังค้นหาได้จากความช่วยเหลือในตัวของ MT5 (กด F1)
Q: retcode กับ GetLastError() ต่างกันอย่างไร?
retcode (10004–10046) คือคำตอบของเซิร์ฟเวอร์เทรดต่อออเดอร์ และถูกเก็บไว้ใน MqlTradeResult.retcode ส่วน GetLastError() ส่งคืนข้อผิดพลาดรันไทม์ของโปรแกรม MQL5 เอง (4xxx และ 5xxx) เมื่อ OrderSend() ล้มเหลว มักจะได้ทั้งสองอย่าง คือ 4756 จาก GetLastError() พร้อมกับ retcode ที่บอกสาเหตุที่แท้จริง
Q: ควรหยุด EA หรือไม่หากข้อผิดพลาดปรากฏบ่อย?
หาก 10018 (ตลาดปิด) หรือ 10012 (หมดเวลา) ปรากฏเป็นครั้งคราว ไม่จำเป็นต้องหยุด EA อย่างไรก็ตาม หาก 10019 (เงินไม่เพียงพอ) เกิดซ้ำ ให้หยุด EA ชั่วคราว ทบทวนสถานะมาร์จิ้น แล้วเริ่มใหม่เมื่อแก้ไขเรียบร้อย
Q: มีข้อผิดพลาด "Invalid account" ขึ้นมา
ข้อมูลล็อกอิน MT5 ของคุณ (ชื่อเซิร์ฟเวอร์ Login ID หรือรหัสผ่าน) อาจไม่ถูกต้อง ไปที่ File → Open an Account เพื่อล็อกอินใหม่
Q: ไม่มีข้อผิดพลาดแสดง แต่ EA ไม่เข้าเทรดเลย
หากไม่มีทั้งข้อผิดพลาดและการเข้าเทรด แสดงว่า EA เพียงรอให้เงื่อนไขการเข้าเทรดครบ — ซึ่งเป็นเรื่องปกติอย่างยิ่ง EA ไม่ได้เข้าเทรดทุกแท่งเทียน แต่จะเข้าเฉพาะเมื่อเงื่อนไขทั้งหมดตรงกัน ให้เวลาสักหน่อย EA บน H1 ที่เข้าเทรดวันละ 1 ถึง 3 ครั้งถือว่าทำงานปกติ
บทความที่เกี่ยวข้อง
📧 คอร์สอีเมลฟรี (8 ฉบับ) + แพ็กอินดิเคเตอร์ MT5 13 ตัว เฉพาะสมาชิก
* ปกป้องความเป็นส่วนตัวอย่างเคร่งครัด คุณสามารถยกเลิกการสมัครได้ตลอดเวลา
มีคำถามเกี่ยวกับ EA หรือ Forex ไหม?
คุณสามารถตั้งคำถามได้ที่ฟอรัมเทรดของ Nattzy (สมัครฟรี) ไม่จำเป็นต้องเกี่ยวกับบทความนี้ก็ได้ เช่น การตั้งค่า EA หรือการเลือกโบรกเกอร์
ถามที่ Nattzy ↗