คำเตือน การแสดงราคาล้างพอร์ตใช้ Balance ในการคำนวณ บางโบรกเกอร์อาจจะปิด Position ของคุณก่อน เมื่อ free Margin เป็น 0 ตามระดับ Margin Requirement
สวัสดีครับ สำหรับเทรดเดอร์ที่ใช้แพลตฟอร์ม MetaTrader 5 (MT5) การจัดการความเสี่ยงเป็นสิ่งสำคัญ โดยเฉพาะอย่างยิ่งการหลีกเลี่ยง Margin Call ซึ่งเป็นสถานการณ์ที่โบรกเกอร์ปิดตำแหน่งของคุณอัตโนมัติเมื่อ Margin Level ต่ำเกินไป Indicator ชื่อ “MarginCallPriceIndicator.mq5” ที่ผมพัฒนาขึ้นนี้จะช่วยให้คุณเห็น “ราคาที่คาดว่าจะทำให้เกิด Margin Call” (MC Price) แบบเรียลไทม์ โดยแสดงบนกราฟด้านซ้ายมุมบน มันคำนวณจาก Equity, Balance, ขนาด Position (Net Lots), และข้อมูลราคาแบบไดนามิก เพื่อให้คุณวางแผน Stop Loss หรือจัดการพอร์ตได้ดีขึ้น

ในบทความนี้ ผมจะอธิบายวิธีการใช้งาน Indicator นี้ตั้งแต่การติดตั้ง การตั้งค่า การอ่านผลลัพธ์ และสูตรการคำนวณเบื้องหลัง เพื่อให้คุณใช้งานได้อย่างมั่นใจ
คุณสมบัติหลักของ Indicator
- แสดงผลบนกราฟ: แสดงราคา MC สำหรับ Net Buy (MC Buy Price) หรือ Net Sell (MC Sell Price) ในรูปแบบ Label สีแดง/น้ำเงิน ด้านซ้ายมุมบน (CORNER_LEFT_UPPER) เพื่อไม่รบกวนกราฟหลัก
- อัปเดตตามข้อมูลจริง: คำนวณใหม่เมื่อ Position เปลี่ยน (เช่น เปิด/ปิด/ปรับ Lot) และขยับตาม Equity/Balance ที่อัปเดตจากราคาตลาด (แต่ในเวอร์ชันล่าสุด ขยับเฉพาะเมื่อ Position เปลี่ยน เพื่อความเสถียร)
- รองรับ Net Position: คำนวณจาก Position ที่เปิดอยู่ทั้งหมดใน Symbol เดียวกัน (Buy – Sell เพื่อหา Net Lots) ไม่รวม Position ใน Symbol อื่น
- Input ที่ปรับได้: StopOutLevel (ค่าเริ่มต้น 50%) ซึ่งเป็นระดับ Margin Level ที่โบรกเกอร์ของคุณกำหนด (เช็คจาก Specification ของบัญชี)
- ไม่มี Plot บนกราฟ: ไม่วาดเส้นหรือตัวชี้วัด เพื่อให้กราฟสะอาด แค่แสดง Label เท่านั้น
Indicator นี้เหมาะสำหรับเทรดเดอร์ที่ต้องการเครื่องมือช่วยเตือนความเสี่ยง โดยไม่ต้องคำนวณเองทุกครั้ง
วิธีการติดตั้ง Indicator
การติดตั้งใน MT5 ทำได้ง่ายและรวดเร็ว โดยไม่ต้องติดตั้งแพ็กเกจเพิ่มเติม:
- ดาวน์โหลดหรือคัดลอกโค้ด:
- คัดลอกโค้ด Indicator (MarginCallPriceIndicator.mq5) จากที่ผมให้ไว้ในข้อความก่อนหน้า
- บันทึกเป็นไฟล์ .mq5 ในโฟลเดอร์ MQL5\Indicators ของ MT5 (เช่น C:\Program Files\MetaTrader 5\MQL5\Indicators)
- คอมไพล์ใน MetaEditor:
- เปิด MT5 แล้วกด Ctrl+O เพื่อเปิด MetaEditor
- เปิดไฟล์ .mq5 ที่บันทึกไว้
- กด F7 เพื่อ Compile (ตรวจสอบว่ามีข้อผิดพลาดหรือไม่ ถ้าไม่มีจะแสดง “0 errors”)
- ถ้ามีข้อผิดพลาด เช่น ‘AccountEquity’ undeclared, ตรวจสอบว่าคุณใช้เวอร์ชันล่าสุดที่ผมแก้แล้ว (ใช้ AccountInfoDouble(ACCOUNT_EQUITY) แทน)
- Attach Indicator บนกราฟ:
- เปิดกราฟ Symbol ที่คุณมี Position เปิดอยู่ (เช่น D40EURe)
- คลิกขวาบนกราฟ > Indicators > Custom > MarginCallPriceIndicator
- ตั้งค่า Input: StopOutLevel = ค่าของโบรกเกอร์คุณ (เช่น 50 สำหรับ 50%)
- กด OK เพื่อ Attach
- ถ้าไม่มี Position เปิด Label จะว่าง ถ้ามีจะแสดง “MC Buy Price: XXXX” หรือ “MC Sell Price: YYYY” ด้านซ้ายมุมบน
ถ้าต้องการลบ Indicator คลิกขวาบนกราฟ > Indicators List > ลบ
วิธีการใช้งาน Indicator
Indicator นี้ใช้งานง่าย แค่ Attach แล้วดูผลบนกราฟ โดยไม่ต้องทำอะไรเพิ่ม:
- เปิด Position เพื่อทดสอบ:
- เปิด Buy หรือ Sell บน Symbol เดียวกับกราฟ (เช่น Buy 0.01 Lot บน D40EURe)
- รอ Indicator อัปเดต (อาจต้องรอ Tick ใหม่หรือรีเฟรชกราฟโดยสลับ Timeframe)
- อ่านผลลัพธ์บนกราฟ:
- MC Buy Price: XXXX (สีแดง): แสดงเฉพาะเมื่อ Net Position เป็น Buy (Buy > Sell) นี่คือราคาที่ต่ำกว่าราคาเปิดเฉลี่ย ถ้าราคาลดลงถึงจุดนี้ Equity จะลดลงจน Margin Level <= Stop Out (เช่น 50%) ทำให้เกิด MC
- MC Sell Price: YYYY (สีน้ำเงิน): แสดงเฉพาะเมื่อ Net Position เป็น Sell (Sell > Buy) นี่คือราคาที่สูงกว่าราคาเปิดเฉลี่ย ถ้าราคาเพิ่มขึ้นถึงจุดนี้จะเกิด MC
- ถ้า Net Position = 0 (Buy = Sell) Label จะว่าง
- ผลจะขยับเมื่อ Position เปลี่ยน (เช่น เพิ่ม Lot) หรือ Equity/Balance อัปเดต (จาก Floating P/L) แต่ในเวอร์ชันล่าสุด ขยับน้อยลงเพื่อความนิ่ง
- ปรับค่า Input:
- StopOutLevel: เปลี่ยนตามโบรกเกอร์ (เช็คใน Account Settings หรือเว็บโบรกเกอร์ เช่น GM Global Market อาจเป็น 30-50%)
- ถ้าต้องการแสดงด้านอื่น (เช่น ขวาบน) แก้ OBJPROP_CORNER ในโค้ด OnInit() เป็น CORNER_RIGHT_UPPER แล้วคอมไพล์ใหม่
- ข้อควรระวังในการใช้งาน:
- เป็นการประมาณการ: ไม่รวม Swap, Commission, หรือ Slippage ดังนั้นใช้เป็นแนวทาง ไม่ใช่การรับประกัน (ทดสอบในบัญชี Demo ก่อน)
- ขยับตามตลาด: ถ้า MC Price ขยับบ่อยเพราะราคาเปลี่ยน ให้ใช้เวอร์ชันที่อัปเดตเฉพาะ Position เปลี่ยน (จากโค้ดก่อนหน้า)
- หลาย Symbol: Indicator ทำงานเฉพาะ Symbol ของกราฟ ถ้ามี Position ใน Symbol อื่นต้อง Attach บนกราฟนั้นด้วย
- Stop Out แตกต่างตามโบรกเกอร์: ถ้าโบรกเกอร์ของคุณมี Stop Out 0% (ไม่มี MC) Indicator จะแสดงค่าไม่สมเหตุสมผล
สูตรการคำนวณเบื้องหลัง (เพื่อให้เข้าใจว่าทำงานอย่างไร)
Indicator คำนวณแบบเรียลไทม์จากข้อมูลบัญชีและ Position โดยใช้สูตรมาตรฐานจาก MT5:
- หา Required Equity: Equity ขั้นต่ำเพื่อไม่ให้ Margin Level < Stop Out
- Required Equity = Used Margin * (StopOutLevel / 100)
- หา Required P/L Change: จำนวนกำไร/ขาดทุนที่ต้องเกิดเพิ่มเพื่อถึงจุด MC
- Required P/L Change = Required Equity – Current Equity (มักเป็นลบ ถ้าต้องขาดทุนเพิ่ม)
- หา Net Lots และ Avg Open Price:
- Net Lots = Total Buy Lots – Total Sell Lots (บวกสำหรับ Net Buy, ลบสำหรับ Net Sell)
- Avg Open Price = Weighted Average จากทุก Position (Open Price * Lots / Total Lots)
- หา Points Needed: จำนวน Point ที่ราคาต้องขยับเพื่อให้ P/L = Required P/L Change
- Point Value = Tick Value / Tick Size (กำไร/ขาดทุนต่อ 1 Point)
- Points Needed = Required P/L Change / (Abs(Net Lots) * Point Value) (ลบสำหรับการขาดทุน)
- หา MC Price:
- ถ้า Net Buy > 0: MC Price = Avg Open Price + Points Needed (Points Needed < 0 → MC Price ต่ำกว่าราคาเปิด)
- ถ้า Net Sell < 0: MC Price = Avg Open Price – Points Needed (Points Needed < 0 → MC Price สูงกว่าราคาเปิด)
สูตรนี้ถูกต้องและสอดคล้องกับเครื่องมือคำนวณจากโบรกเกอร์ เช่น TradingView Calculator หรือ MT5 Built-in Risk Management
ประโยชน์และคำแนะนำ

Indicator นี้ช่วยให้คุณเห็นจุดเสี่ยง Margin Call ล่วงหน้า เพื่อปรับ Position หรือตั้ง Stop Loss ได้ทันเวลา ลดความเสี่ยงการสูญเสียทั้งพอร์ต ถ้าคุณเป็นมือใหม่ ลองใช้ในบัญชี Demo ก่อนเพื่อทดสอบ ถ้ามีปัญหาหรือต้องการปรับ (เช่น เพิ่ม Alert เมื่อใกล้ MC หรือรองรับหลาย Symbol) สามารถแจ้งมาได้เลยครับ!
ถ้าคุณมีข้อมูลบัญชีจริงเพื่อทดสอบสูตร ผมยินดีช่วยคำนวณให้ดูว่าตรงกับ Indicator หรือไม่ ขอบคุณที่ใช้ครับ!

FOREXDUCK (นามปากกา) นักเขียนของเรามีประสบการณ์การเงินการลงทุนกว่า 10 ปี มีความเชี่ยวชาญในการวิเคราะห์ตลาด Forex และคริปโต โดยเฉพาะการวิเคราะห์ทางเทคนิค รวมถึงเทคนิคต่าง