Tool version: O!kurra Capital Defense EA 2.00
ปรัชญาของบทนี้ “ปัญหา” ส่วนใหญ่ของ O!kurra ไม่ใช่ข้อบกพร่องของเครื่องมือ แต่เป็นการตั้งค่าที่ทำงานตรงตามที่ถูกตั้งไว้ทุกประการ — เพียงแต่ต่างจากที่คุณคาดไว้ ด้วยเหตุนี้ สำหรับทุกอาการ เราจึงถามก่อนว่า: นี่เป็นความผิดปกติจริงหรือเป็นพฤติกรรมที่ออกแบบไว้? น่าแปลกที่บ่อยครั้งมันคืออย่างหลัง
คู่มือกับความเป็นจริงไม่ตรงกัน? หากระหว่างการวินิจฉัยคุณสังเกตว่าคู่มือ คำตอบของแชทบอท และพฤติกรรมจริงของ EA พูดไม่ตรงกัน — แจ้งมาที่ [email protected] (บทที่ 1.9) เครื่องมือพัฒนาอย่างต่อเนื่อง และรายงานเช่นนี้ช่วยให้เรารักษาเอกสารให้สอดคล้องกับโค้ด
สารบัญ
21.1 วิธีวินิจฉัย — หลักการทั่วไป 21.2 การติดตั้งและการเริ่มใช้งาน 21.3 License (คีย์ + การตรวจสอบออนไลน์) 21.4 ไม่มีสัญญาณ 21.5 Pending order ไม่ถูก fill 21.6 การจัดการ position (BE / Trailing) 21.7 BEa ทำงานผิดจากที่คาด 21.8 Guardians ของบัญชี (DPL / EG / Basket Max Loss / PT) 21.9 Trading Hours 21.10 Cross-button Triggers 21.11 พาเนล EA 21.12 ประสิทธิภาพ
21.1 วิธีวินิจฉัย — หลักการทั่วไป
ก่อนจะข้ามไปยังอาการเฉพาะเจาะจง — มีหลักการไม่กี่ข้อที่แก้ปัญหาได้เกือบทุกกรณี
เริ่มจาก log แท็บ Experts ใน MetaTrader (Ctrl+T → แท็บ Experts) แสดงข้อความของ EA — ตั้งแต่การเริ่มต้นทำงาน ผ่านเหตุผลที่สัญญาณถูกปฏิเสธ ไปจนถึงข้อผิดพลาดในการเทรด ปัญหาส่วนใหญ่ทิ้งร่องรอยไว้ใน log บรรทัดสีแดง การแจ้งเตือน คำเตือนเรื่องฟิลเตอร์ที่บล็อกอยู่ — นี่คือที่แรกที่ควรดู
ตรวจสอบพาเนล Status Block แสดงสถานะปัจจุบัน; โหมดข้อมูล [B/G/S/T/C/H] (บทที่ 8) ให้คุณมอง “ใต้ฝากระโปรง” — สถานะของฟิลเตอร์ (G), เวลาเทรด (T), แผนผัง trigger (C) ปัญหามักมองเห็นได้ทันทีในโหมดที่ถูกต้อง
เปิด T. Levels และ T. History การแสดงผลภาพ (บทที่ 19) แสดงว่า EA เปิดและปิด position ที่ไหนและในบริบทใด พฤติกรรมที่ดูขัดสัญชาตญาณมักชัดเจนขึ้นบนกราฟ
ตัดตัวแปรออกทีละตัว เมื่อบางอย่างไม่ทำงาน — ลดให้เหลือน้อยที่สุด (button เดียว, ค่า default) ดูว่าปัญหาหายไปหรือไม่ แล้วค่อยเพิ่มส่วนประกอบกลับเข้าไปทีละอย่าง เป็นการแบ่งครึ่งค้นหาแบบคลาสสิก — ได้ผลเสมอ
รีสตาร์ท EA ก่อน แล้วจึง MT5 ปัญหาบางอย่างคือสถานะที่หายไปหลังโหลดใหม่ ให้ลบ EA ออกจากกราฟแล้ววางกลับเข้าไปก่อน; ถ้าไม่ช่วย — รีสตาร์ททั้งแพลตฟอร์ม
เก็บไฟล์ .set ที่เสถียรไว้ บันทึกทุกการตั้งค่าที่ใช้งานได้ (บทที่ 7) เมื่อการตั้งค่าปัจจุบันเริ่มทำงานแปลก ๆ ให้เทียบกับไฟล์เสถียรล่าสุดเพื่อหาความต่าง
ทุกอย่างบนเดโม การทดสอบครั้งแรกให้ทำบนบัญชี Demo เสมอ — พฤติกรรมบางอย่างขึ้นอยู่กับ Broker และประเภทบัญชี
เมื่อไม่มีอะไรช่วยได้ — ติดต่อฝ่ายสนับสนุน เข้าไปที่ okurra.com ในรายงานให้ระบุ: instrument และ timeframe, คำอธิบายปัญหา, ภาพจับหน้าจอแท็บ Experts จากช่วงเวลาที่เกิดปัญหา, ภาพหน้าจอของพาเนลและกราฟ ยิ่งมีบริบทมาก ยิ่งวินิจฉัยได้เร็ว
21.2 การติดตั้งและการเริ่มใช้งาน
เครื่องมือไม่ปรากฏใน Navigator
อาการ: คุณคัดลอกไฟล์ เปิด MT5 แล้วไม่มี O!kurra ใน Navigator (Ctrl+N) (ใต้ Expert Advisors สำหรับ EA หรือ Indicators สำหรับพาเนล/อินดิเคเตอร์)
- ตำแหน่งไฟล์ผิด EA ต้องอยู่ใน
MQL5\Experts\(แนะนำโฟลเดอร์ย่อยMQL5\Experts\OKU\), อินดิเคเตอร์อยู่ในMQL5\Indicators\OKU\เปิดโฟลเดอร์ผ่าน File → Open Data Folder แล้วตรวจสอบพาธ (บทที่ 3) - ยังไม่ได้รีเฟรช หลังวางไฟล์แล้ว คลิกขวาที่ Navigator → Refresh หรือรีสตาร์ท MT5
- ไฟล์เสียหายระหว่างการถ่ายโอน ดาวน์โหลดใหม่จาก okurra.com แล้ววางอีกครั้ง
ข้อผิดพลาด 560 — “newer unsupported version” (terminal เก่าเกินไป)
อาการ: เครื่องมือไม่โหลดขึ้นกราฟ (หายไปทันทีหลังวาง หรือไม่เริ่มทำงานเลย) และแท็บ Journal / Experts แสดง error 560 หรือข้อความ ”‘…ex5’ has newer unsupported version, please update your client terminal” ช่วงเวลาที่พบบ่อย: ทันทีหลังเปลี่ยนไฟล์เป็นรุ่นที่ใหม่กว่า
- สาเหตุ: ไฟล์
.ex5ของรุ่นนี้ถูกคอมไพล์บน build ของ MetaTrader ที่ใหม่กว่า terminal ของคุณ นี่เป็นข้อจำกัดของแพลตฟอร์ม — ไม่ใช่ไฟล์เสียหายและไม่ใช่ข้อผิดพลาดของการตั้งค่า build ขั้นต่ำที่ต้องใช้แสดงอยู่ข้างปุ่มดาวน์โหลดบน okurra.com; คุณตรวจสอบ build ของ terminal ได้ใน Help → About - วิธีแก้: อัปเดต MetaTrader 5 — Broker ของคุณให้ build ปัจจุบันเสมอ; โดยปกติเพียงปิด terminal แล้วเปิดใหม่โดยเปิดการอัปเดตอัตโนมัติไว้ก็พอ หลังอัปเดตแล้วให้รีสตาร์ทแพลตฟอร์มและตรวจสอบ Navigator
- หากคุณเขียนทับการติดตั้งที่ใช้งานได้อยู่ ด้วยไฟล์ของรุ่นใหม่บน terminal ที่เก่าเกินไป — พร้อมกับไฟล์ใหม่ การตั้งค่าเดิมของคุณก็หยุดทำงานไปด้วย (ไฟล์เก่าถูกแทนที่ไปแล้ว) ทางกลับมาทำงานที่เร็วที่สุดคือการอัปเดตแพลตฟอร์ม อีกทางเลือกคือติดตั้งไฟล์ของรุ่นก่อนหน้าใหม่ — รองรับรุ่นปัจจุบันและรุ่นก่อนหน้าหนึ่งรุ่น (N-1)
พาเนล EA ไม่ปรากฏหลังเริ่มทำงาน
อาการ: EA เริ่มทำงานแล้ว (หน้ายิ้มที่มุมกราฟ) แต่ไม่มีพาเนล
- พาเนลอยู่นอกพื้นที่กราฟ หลังเปลี่ยนความละเอียดจอภาพหรือเคยลากพาเนลไว้ก่อนหน้า พาเนลอาจไปอยู่นอกมุมมอง ให้ลบ EA แล้ววางกลับเข้าไป — พาเนลจะกลับไปยังตำแหน่ง default
- ปิดพาเนลควบคุมไว้ใน Inputs การมองเห็นพาเนลควบคุม (button, การกระทำ, สถานะ) ถูกกำหนดโดยฟิลด์
Show interactive control panel(พารามิเตอร์UI_ShowControlPanel, กลุ่ม Interactive Control Panel) หมายเหตุ: นี่เป็นสวิตช์คนละตัวกับShow info panel(Global_ShowStatsPanel) — ตัวหลังควบคุมเฉพาะพาเนลข้อมูลแบบขยาย [i] ไม่ใช่พาเนลควบคุม ตรวจสอบว่าพรีเซ็ตก่อนหน้าปิดตัวแรกไว้หรือไม่ - ซ่อนทุกส่วนไว้ทั้งหมด ถ้าคุณซ่อนทุกส่วนของพาเนล จะเหลือเพียงแถบเท่านั้น ให้เปิดอย่างน้อย Strategy Buttons (บทที่ 8)
เกิดข้อผิดพลาดเมื่อพยายามเปิด position
อาการ: ข้อผิดพลาดสีแดงพร้อมโค้ดของ MT5 ใน Experts (reject, invalid price ฯลฯ)
- Algo Trading ถูกปิด ปุ่ม Algo Trading สีเขียวบนแถบเครื่องมือ MT5 ต้องเปิดอยู่; เมื่อวาง EA ลงบนกราฟ ให้ติ๊ก Allow Algorithmic Trading ในแท็บ Common
- บัญชีไม่อนุญาตให้เทรดอัตโนมัติ บัญชีบางประเภท (prop/demo บางแห่ง) บล็อก algo ตรวจสอบกับ Broker ของคุณ
- เงินไม่พอ (margin) แม้แต่ lot ที่เล็กที่สุดก็ต้องใช้ margin ตรวจสอบ equity ของบัญชี
- สัญลักษณ์ที่มีคำต่อท้าย ทองอาจปรากฏเป็น XAUUSD, XAUUSDm, XAUUSD.r ฯลฯ ตรวจให้แน่ใจว่าคุณทำงานอยู่บนสัญลักษณ์ใดกันแน่
21.3 License (คีย์ + การตรวจสอบออนไลน์)
O!kurra ใช้ license key ในรูปแบบ OKUR-XXXX-XXXX-XXXX-XXXX ซึ่งตรวจสอบออนไลน์ผ่านการเชื่อมต่อไปยัง okurra.com (บทที่ 3) คุณกรอกคีย์ใน Inputs ของ EA การตรวจสอบทำงานอยู่เบื้องหลัง (ทุกไม่กี่นาที); การขาดการเชื่อมต่อเครือข่ายช่วงสั้น ๆ เป็นที่ยอมรับได้
การแจ้งเตือนว่าไม่มี license ที่ใช้ได้ / EA ไม่สร้าง position ใหม่
อาการ: EA เริ่มทำงาน แต่ไม่ออกสัญญาณใหม่; มีข้อความเรื่อง license ใน log
- ตรวจสอบ whitelist ของ WebRequest Tools → Options → Expert Advisors → Allow WebRequest for listed URL ต้องมี
https://okurra.comอยู่ในรายการ หากไม่มี EA จะไม่สามารถตรวจสอบคีย์ได้ (บทที่ 3) - ตรวจสอบคีย์ ป้อนถูกต้องทุกตัวอักษร (รูปแบบ
OKUR-...) ไม่มีช่องว่าง และยังใช้งานได้อยู่ - ตรวจสอบการสมัครสมาชิก EA บน okurra.com — ยังใช้งานอยู่หรือไม่ การชำระเงินผ่านหรือไม่ การสมัครสมาชิกครอบคลุม เฉพาะ EA เท่านั้น (บทที่ 3); อินดิเคเตอร์ทั้งหมด — ทั้ง design panels (OkurraButton/OkurraGlobal) และ companion indicators — ใช้งานได้ฟรีและไลเซนส์ไม่เกี่ยวข้องกับสิ่งเหล่านี้
- ตรวจสอบการเชื่อมต่ออินเทอร์เน็ต การตรวจสอบสิทธิ์ต้องเข้าถึง okurra.com ได้
- นาฬิกาของคอมพิวเตอร์ไม่ได้บล็อกการตรวจสอบสิทธิ์ การตรวจสอบแบบออนไลน์ไม่ไวต่อนาฬิกา — โซนเวลาที่ตั้งผิดหรือเวลาของเครื่องที่คลาดเคลื่อนจะไม่ทำให้ไลเซนส์ที่ถูกต้องถูกปฏิเสธ (time gate ถูกนำออกจากเซิร์ฟเวอร์เมื่อ 2026-07-25; คู่มือฉบับก่อนหน้านี้อธิบายว่ายังทำงานอยู่) หาก EA ทำงานได้บนคอมพิวเตอร์เครื่องหนึ่งแต่ไม่ทำงานบนอีกเครื่องหนึ่ง — ส่วนใหญ่คือ VPS — ให้ตรวจสอบบนเครื่องที่มีปัญหาตามลำดับ: whitelist ของ WebRequest (ข้อ 1), หมายเลขบัญชี MT5 ของเครื่องนั้นถูกผูกกับคีย์ในพาเนล okurra.com หรือไม่ (ข้อ 3), และเครื่องนั้นมีการเชื่อมต่ออินเทอร์เน็ตหรือไม่ (ข้อ 4) นาฬิกาที่ตั้งไว้ถูกต้องเป็นสิ่งที่ควรมีอยู่แล้วไม่ว่ากรณีใด (ล็อกและรายงานเป็นระเบียบ) แต่ไม่ใช่สิ่งที่ตัดสินการตรวจสอบสิทธิ์
- รีสตาร์ท EA หลังจากแก้ไขแล้ว เพื่อให้ทำการตรวจสอบสิทธิ์ใหม่อีกครั้ง
การยุติอย่างนุ่มนวล — ไม่ใช่ความผิดปกติ เมื่อ subscription หมดอายุ EA จะไม่ตัด position ข้ามคืน สิ่งที่ถูกบล็อกมีเพียงสัญญาณใหม่เท่านั้น; position ที่มีอยู่ยังคงได้รับการดูแล — ยังเดินไปถึง SL/TP ของมัน, Break Even และ Trailing ยังทำงาน, การปิดด้วยมือและการตอบสนองต่อสัญญาณฝั่งตรงข้ามยังทำงาน Pending order (การเข้าในอนาคต) จะถูกลบ; ข้อยกเว้นคือ basket ที่อยู่ภายใต้การป้องกัน BEa ที่ armed อยู่ — การป้องกันอาจยังคงเพิ่ม position ต่อไปจนกว่าจะปิด basket ลงที่ศูนย์ (บทที่ 12) EA จะค่อย ๆ ว่างงานหลังจาก basket ถูกปิด นี่เป็นกลไกที่นุ่มนวลและตั้งใจออกแบบไว้ (บทที่ 3)
A note on demo. ในโหมดเรียนรู้/demo ลิขสิทธิ์อาจถูกปิดใช้งาน — กรณีนั้นบทนี้ไม่เกี่ยวกับคุณ เราอธิบายสถานะของเวอร์ชันที่ใช้งานจริง
แต่ละรุ่นก็มีวันหมดอายุของตัวเองด้วย โดยไม่ขึ้นกับการสมัครสมาชิก เครื่องมือทุกเวอร์ชันที่แจกจ่ายออกไปมีวันหมดอายุฝังอยู่ภายใน EA จะตรวจสอบวันละครั้งระหว่างทำงาน (ไม่ใช่แค่ตอนเริ่มทำงาน) หลังพ้นกำหนดจะเข้าสู่โหมดดูแลอย่างนุ่มนวลแบบเดียวกับตอนที่การสมัครสมาชิกหมดอายุ — ไม่เปิดโพซิชันใหม่ ลบ pending order แต่ยังคงดูแลโพซิชันที่เปิดอยู่จนถึงการปิดตามแผน (การป้องกัน BEa อาจปิดตะกร้าให้จบ) อินดิเคเตอร์และพาเนลจะแสดงการแจ้งเตือนหลังพ้นกำหนดและถอนตัวออกจากกราฟเอง วิธีแก้: ดาวน์โหลดรุ่นปัจจุบันจาก okurra.com
21.4 ไม่มีสัญญาณ
button เปิดอยู่ (มีสี) แต่ไม่มี pending order เกิดขึ้น
นี่คือรายงานที่พบบ่อยที่สุด — และสาเหตุแทบทุกครั้งคือเงื่อนไขบางอย่างที่บล็อกอยู่ ไม่ใช่ความผิดพลาดของเครื่องมือ ไล่ตรวจตามลำดับต่อไปนี้ (แผนผังการตัดสินใจอยู่ด้านล่าง):
- EA เปิดอยู่หรือไม่? ตั้งแต่รุ่น 1.27 พาเนลมีสวิตช์หลักของตัวเอง (บทที่ 8) เมื่ออยู่ในสถานะ OFF ปุ่มในแถวบนสุดจะเป็นสีแดง และชื่อพาเนลจะแสดงว่า “O!kurra - EA OFF” — จะไม่มีอะไรใหม่เริ่มทำงาน แม้ว่าโพซิชันที่เปิดอยู่จะยังถูกดูแลต่อไป
- Algo Trading ทำงานอยู่หรือไม่? (หัวข้อ 21.2)
- Trading Hours หากเปิดใช้ชั่วโมงการเทรด button อาจอยู่นอกหน้าต่างเวลา โหมด [T] แสดงหน้าต่างปัจจุบันหรือ “no trading” (บทที่ 16) จำไว้ว่า: เวลาโบรกเกอร์ ไม่ใช่เวลาท้องถิ่น
- ฟิลเตอร์ โหมด [G] แสดงสถานะของฟิลเตอร์ระดับ global หาก MMD เป็น bearish และ button เป็น BUY โดยเปิดฟิลเตอร์ MMD ไว้ — สัญญาณ BUY ทั้งหมดจะถูกบล็อก (บทที่ 10) เช่นเดียวกันกับ SAR / SR / OKUR Filter
- Activation Zone หาก button ตั้งค่า “Active only inside Activation Zone” แล้วไม่มีโซนอยู่ หรือราคาอยู่นอกโซน — จะไม่เข้า (บทที่ 11) ตรวจสอบว่าโซนมีอยู่จริงและยังไม่หมดอายุ
- เกณฑ์ OKUR Threshold 180 ถือว่าลึกมาก — ในตลาดที่เงียบ oscillator อาจไปไม่ถึงเป็นชั่วโมง ลดค่าลง (เช่น เหลือ 100) แล้วดูว่าสัญญาณเริ่มเกิดหรือไม่ (บทที่ 9)
- Signal Band หากหน้าต่างความถูกต้อง (Signal Band) ปิดไปแล้ว button จะรอการอาร์มใหม่ในโซน ลองปิด Signal Band ชั่วคราวเพื่อตรวจสอบ (บทที่ 9)
- ล็อก เมื่อเปิดการบันทึกล็อก คุณจะเห็นเหตุผลที่สัญญาณแต่ละครั้งถูกปฏิเสธ — โดยปกติสิ่งนี้ขจัดข้อสงสัยทั้งหมด
button ปิดหรือเปิดตัวเอง ทั้งที่ไม่มีใครคลิก
ตั้งแต่รุ่น 1.27 สถานะของ button ไม่ได้ถูกเปลี่ยนแค่ด้วยมือของคุณและ cross-button triggers เท่านั้น ตรวจสอบตามลำดับ:
- เซนเซอร์การเคลื่อนที่ของราคา (บทที่ 18) button อาจถูกปิดโดยเซนเซอร์ที่ระบุไว้ในช่อง “switched OFF by” ของมัน หรือถูกเปิดโดยตัวที่อยู่ในช่อง “switched ON by” ในล็อกให้มองหา
[PM N] fired:— ข้างๆ นั้นเซนเซอร์จะระบุว่ามันไปกระทำกับ button ตัวใดบ้าง เซนเซอร์ทุกตัวถูกส่งมาในสถานะปิด ดังนั้นเรื่องนี้จะเกี่ยวข้องเฉพาะกับการตั้งค่าที่มีใครบางคนตั้งขึ้นอย่างตั้งใจเท่านั้น - วงจรครั้งเดียว (one-shot cycle) (§9.13) หาก button เปิดใช้ “switch off when its own positions are closed” ไว้ มันจะปลดระวางตัวเองเมื่อโพซิชันสุดท้ายปิดลง — และนั่นคือพฤติกรรมที่ตั้งใจไว้ ไม่ใช่ข้อบกพร่อง
- การ rollover รายวัน ณ ชั่วโมงรีเซ็ตวัน EA จะคืนค่า button กลับสู่สถานะ “Initial Enabled” — button ที่คุณเปิดด้วยมือตอนเย็นอาจกลับไปเป็นปิดในตอนเช้า (และในทางกลับกันเช่นกัน) บทที่ 14 ข้อยกเว้น: เมื่อ EA ถูกปิดอยู่ การคืนค่านี้จะไม่เกิดขึ้น (บทที่ 8)
- ผู้พิทักษ์บัญชี ลิมิตรายวัน Equity Guard และ Profit Target จะปิด button เมื่อทำงาน — นี่คือสาเหตุที่พบบ่อยที่สุดของ “ตอนเช้าทุกอย่างถูกปิดหมด” บทที่ 14 และ 15
สัญญาณเกิดขึ้น แต่เกือบทั้งหมดจบลงด้วยการขาดทุน
- Threshold ตื้นเกินไป — สัญญาณเกิดบนการย่อตัว “แบบไหนก็ได้” ไม่ใช่บนจุดสุดขั้วจริง เพิ่มความลึก (เช่น 100 → 150)
- ทิศทางผิดเมื่อเทียบกับตลาด — ตราสารอยู่ในเทรนด์ที่แข็งแรง และ button แบบ mean-reversion กำลัง “รับมีดที่ตกลงมา” ตรวจ MMD/SAR บน M15+ หากสวนทาง — ปิดฝั่งนั้น
- Trigger ไวเกินไป — Movement Correction 5 ทำงานตั้งแต่การย่อตัวระดับไมโครครั้งแรก เพิ่มเป็น 10–15
- ไม่มีฟิลเตอร์ — ทุกสัญญาณ “ตาบอด” เปิดฟิลเตอร์ MMD ระดับ global (บทที่ 10) เพื่อจำกัดการเข้าให้อยู่ในทิศทางเทรนด์
21.5 Pending order ไม่ถูกดำเนินการ
เห็นเส้น pending อยู่ แต่ไม่เคยมีโพซิชันเกิดขึ้น
- ระยะ pending ไกลเกินไป pending order วางอยู่ไกลจากราคาเกินไปและไม่ถูกแตะภายในเวลาที่สมเหตุสมผล ลดค่า “Pending Stop/Limit Distance” (บทที่ 9)
- Spread ของโบรกเกอร์ ในบางช่วงเวลา (เปิดเซสชัน ข่าว วันหยุดสุดสัปดาห์) spread จะกว้างขึ้น pending จะถูก fill ก็ต่อเมื่อฝั่งราคาที่เกี่ยวข้องแตะถึงเท่านั้น ตรวจ spread ปัจจุบัน
pending หายไป แต่ไม่มีโพซิชันเกิดขึ้น
- เงินไม่พอ (margin) ล็อกมักแสดง “Not enough money” ลด lot ลงหรือเติมเงินเข้าบัญชี
- Spread กว้างเกินไปในจังหวะที่ fill — โบรกเกอร์ปฏิเสธคำสั่ง (invalid price) พบได้ทั่วไปช่วงประกาศข่าว
- ลิมิตจำนวนโพซิชันของโบรกเกอร์ (จำนวนโพซิชันพร้อมกันสูงสุดต่อบัญชี/สัญลักษณ์) ตรวจสอบกับโบรกเกอร์ของคุณ
โพซิชันเปิดขึ้นด้วย SL/TP ที่ต่างจากที่ตั้งค่าไว้
- stop level ขั้นต่ำของโบรกเกอร์ SL/TP ไม่สามารถอยู่ใกล้ราคามากกว่าเกณฑ์ของโบรกเกอร์ได้ หาก SL ของคุณใกล้เกินไป โบรกเกอร์จะปฏิเสธ/แก้ไขมัน ตรวจสอบ: คลิกขวาที่สัญลักษณ์ → Specification → Stops level
pending order ที่โบรกเกอร์หายไปหลังรีสตาร์ท EA
- นี่คือพฤติกรรมที่ออกแบบไว้ ไม่ใช่ความผิดพลาด (ตั้งแต่ EA 1.11) เมื่อใช้ pending จริง (ปิดการทำงานแบบเสมือน) EA จะลบ pending order ของตัวเองที่ค้างมาจากการรันครั้งก่อนตอนเริ่มทำงาน — pending ที่ “กลายเป็นกำพร้า” เพราะการรีสตาร์ทอาจถูก fill ในอีกหลายวันต่อมาในสภาพตลาดที่ต่างออกไป และเปิดโพซิชันโดยไม่มีบริบทที่ถูกต้อง มองหาแท็ก
[StalePendings]ในล็อก pending ใหม่จากเซสชันปัจจุบันจะไม่ถูกแตะต้อง ส่วนอันใหม่จะถูกสร้างจากสัญญาณปัจจุบันของ button รายละเอียด: บทที่ 9.7
21.6 การจัดการโพซิชัน (BE / Trailing)
ระวังสองระดับ Break Even และ Trailing จากบทที่ 9 ทำงานต่อโพซิชันแต่ละตัว ส่วน BEa จากบทที่ 12 ทำงานกับทั้งตะกร้าของทิศทางนั้น นี่คือกลไกคนละอย่าง — อย่าสับสน
Break Even (ต่อโพซิชัน) ไม่เลื่อน SL
- โพซิชันยังไม่ถึงเกณฑ์เริ่ม BE BE จะอาร์มก็ต่อเมื่อโพซิชันมีกำไรเท่ากับ “Break Even Start” ตรวจสอบค่านั้น (บทที่ 9)
- ไม่มี SL ให้แก้ไข หากโพซิชันถูกเปิดโดยไม่มี SL ก็ไม่มีอะไรให้เลื่อน — ตั้ง Stop Loss ที่สมเหตุสมผลต่อ button
- ข้อจำกัดของโบรกเกอร์ (stops / freeze level) ที่โบรกเกอร์บางราย การแก้ไข SL ที่ใกล้ราคาเกินไปเคยถูกปฏิเสธ และ BE “ไม่ทำงาน” — ไม่สอดคล้องกันในแต่ละบัญชี ตอนนี้ EA จะดัน SL ออกไปจนถึงระยะขั้นต่ำของโบรกเกอร์ และเมื่อแม้แต่วิธีนั้นก็ไม่ผ่าน (ราคาอยู่ในโซน freeze) — จะปิดโพซิชันแบบฉุกเฉินที่ราคาตลาดและแจ้งเตือน (popup + ล็อก) หากคุณเห็นการแจ้งเตือนแบบนี้ ให้ตรวจ stops/freeze level ของตราสารนั้น (บทที่ 9)
Trailing Stop ไม่ตามราคา
- ราคายังไม่ถึงเกณฑ์เริ่ม Trailing Trailing จะเริ่มก็ต่อเมื่อผ่าน “Trailing Start” แล้วเท่านั้น (บทที่ 9)
- BEa ปิดตะกร้าไปก่อน BEa จัดการทั้งทิศทางอย่างเป็นอิสระ หากมันปิดตะกร้าก่อนที่ Trailing จะอาร์ม — นั่นเป็นเรื่องธรรมชาติ ไม่ใช่ข้อผิดพลาด
โพซิชันไม่ปิดที่ virtual (stealth) SL
- ปัญหาเก่า — แก้ไขไปแล้ว Virtual SL/TP ได้รับการดูแลอย่างน่าเชื่อถือบนบัญชีทุกประเภทแล้ว (ระบุ position ด้วย ID ถาวร) หากในเวอร์ชันเก่าเคยเจออาการ “ราคาถึง SL แล้วแต่ position ไม่ปิด” — ให้อัปเดต EA (บทที่ 9)
- EA ต้องออนไลน์ Virtual SL ทำงานเฉพาะเมื่อ EA กำลังทำงานและเชื่อมต่ออยู่ — เมื่อปิดเทอร์มินัลมันจะไม่ทำงาน (เพราะมันไม่มีอยู่ที่ฝั่ง Broker) หากต้องการการป้องกันแบบออฟไลน์ → ให้ใช้ SL จริง (ปิดโหมดเสมือนใน OkurraGlobal)
- การแจ้งเตือน orphan ป๊อปอัป “position หายไปโดยไม่มีการปิด / สูญเสียการป้องกัน” หมายถึงความผิดปกติที่ฝั่ง Broker — ให้ตรวจสอบบัญชีด้วยตนเอง (บทที่ 9)
การแจ้งเตือน “PROTECTION OFFLINE” — การเทรดถูกปิดที่ฝั่งเทอร์มินัล
อาการ: ป๊อปอัปที่ขึ้นต้นด้วย “PROTECTION OFFLINE” ซึ่งแสดงซ้ำประมาณทุกหนึ่งนาที บอกว่า EA ไม่สามารถปิด position หรือเลื่อน stop ได้
นี่ไม่ใช่ Broker ที่ปฏิเสธคำสั่ง — แต่เป็นเทอร์มินัลของคุณที่ปิดการเทรดอยู่ ก่อนที่ EA จะส่งคำสั่งปิดหรือแก้ไข stop ใด ๆ มันจะตรวจสวิตช์สองตัว: ปุ่ม AutoTrading บนแถบเครื่องมือ MT5 และการอนุญาต “Allow Algo Trading” ในการตั้งค่าของ EA ตัวนี้ เมื่อตัวใดตัวหนึ่งถูกปิด กลไกป้องกันทั้งหมดจะหยุดนิ่ง: virtual SL จะไม่ปิด position, Break Even จะไม่เลื่อน stop, Equity Guard และ Close All จะไม่ส่งอะไรเลย position ถูกทิ้งไว้โดยไม่มีใครดูแล ทั้งที่ EA “กำลังทำงาน” และวาดแผงของมันอยู่
วิธีแก้: เปิด AutoTrading (Ctrl+E หรือปุ่มบนแถบเครื่องมือ) และติ๊ก “Allow Algo Trading” ในคุณสมบัติของ EA การแจ้งเตือนจะหายไปและกลไกต่าง ๆ จะกลับมาทำงานทันที หาก AutoTrading ปิดตัวเอง “เอง” — ส่วนใหญ่เกิดจากคีย์ลัดที่ถูกกดโดยบังเอิญหรือการรีสตาร์ตเทอร์มินัลด้วยโปรไฟล์อื่น
การแจ้งเตือนนี้ตั้งใจให้มาแทน “พายุ” ข้อความเดิม “Broker refused SL move… keep retrying” — ป๊อปอัปที่อ่านง่ายหนึ่งครั้งต่อนาที แทนบันทึกหลายร้อยบรรทัด และให้การวินิจฉัยที่ชัดเจน (เทอร์มินัล ไม่ใช่ Broker)
ล็อก “[CloseModel] ADAPTIVE: … switching to SYNC-first”
นี่ไม่ใช่ข้อผิดพลาด — เป็นข้อมูลแจ้งให้ทราบ เมื่อใช้โมเดลการปิดแบบ Adaptive (เป็นตัวเลือกเสริม — ตั้งแต่ EA 1.23 ค่าเริ่มต้นคือ Auto โดยปิด async ไว้ กล่าวคือปิดแบบซิงโครนัส; บทที่ 5.5) EA จะส่งคำสั่งปิดแบบอะซิงโครนัส หาก Broker ปิด position บางส่วนไม่สำเร็จในรอบแรก EA จะตามไปปิดให้เสร็จแบบซิงโครนัสอยู่ดี (ตาข่ายนิรภัย) และเพิ่มเติม คือสลับการปิดครั้งถัด ๆ ไปเป็นโหมดซิงโครนัสตลอดช่วง cooldown (ค่าเริ่มต้น 30 นาที) หลังจากนั้นมันจะกลับไปเป็นอะซิงโครนัสเอง บันทึกในล็อกบรรทัดนี้บันทึกการสลับดังกล่าวพอดี หากมันปรากฏบ่อย แสดงว่า Broker ของคุณรับการปิดแบบอะซิงโครนัสได้ไม่ดี — พิจารณาตั้ง “Close Model = 1 (Sync)” ไว้ถาวร
การแจ้งเตือน “EA build … is older than this panel expects” — เวอร์ชันในแพ็กเกจปนกัน
แผง (OkurraButton หรือ OkurraGlobal) ตรวจพบว่าสถานะบนดิสก์ถูกเขียนโดย EA จากรุ่นที่เก่ากว่า รุ่นที่แผงนี้ถูกปล่อยออกมาพร้อมกัน — ส่วนใหญ่เพราะตอนอัปเดตมีการเปลี่ยนไฟล์เพียงบางส่วน Okurra ถูกปล่อยออกมาเป็นแพ็กเกจครบชุดเสมอ (EA + แผงทั้งสอง + companion indicators) การผสมรุ่นต่างกันอาจทำให้เกิดความไม่สอดคล้องแบบเงียบ ๆ ในการแลกเปลี่ยนข้อมูล
วิธีแก้: เปลี่ยนไฟล์ทั้งหมดจากแพ็กเกจรุ่นเดียวกัน (บทที่ 3) แล้วรีเฟรช Navigator หรือรีสตาร์ตเทอร์มินัล ข้อความนี้จะปรากฏหนึ่งครั้งต่อเซสชันของแผงและไม่ขัดขวางการทำงาน — แต่ให้ถือว่ามันเป็นไฟเตือนสีแดง ไม่ใช่ของประดับ
บันทึกกิจกรรมและบันทึกการตัดสินใจของ EA — “ทำไมถึง (ไม่) เข้าออเดอร์?”
สำหรับคำถามอย่าง “ทำไม EA ถึงไม่เปิด position?” หรือ “เกิดอะไรขึ้นกันแน่ตอน 14:32?” มีบันทึกกิจกรรม (activity journal) ไว้ให้: เมื่อเปิดฟิลด์ Log EA activity + decision/execution CSV (off during optimization) (พารามิเตอร์ Global_DiagActivity กลุ่ม Global ใน Inputs, เปิดไว้เป็นค่าเริ่มต้น) EA จะเขียนต่อท้าย หนึ่งบรรทัดต่อหนึ่งเหตุการณ์ ลงในไฟล์ MQL5\Files\OKU\diag\ea_activity.log ทุกรายการมีหมวดหมู่กำกับ:
- ENTRY — ชะตากรรมของสัญญาณเข้า (ผ่าน / ถูกประตูใดบล็อก; เหตุผลการบล็อกเดียวกันถูกบันทึกครั้งเดียว จนกว่าผลลัพธ์จะเปลี่ยน — ไฟล์จึงไม่บวม),
- TRADE — การดำเนินการกับ position (การเปิด, การเลื่อน SL โดย BE/Trailing ฯลฯ),
- BASKET — สแนปช็อตของ basket เป็นระยะ (จำนวน position, PnL, สถานะ EG/PT),
- SAFETY — เหตุการณ์ของผู้พิทักษ์ (ลิมิต DPL, Equity Guard, Profit Target, การชนกันของ Magic ฯลฯ),
- EXEC — การปฏิเสธการดำเนินการฝั่ง Broker พร้อมโค้ดและเหตุผลเป็นคำพูดธรรมดา (ตั้งแต่ 1.28 — ก่อนหน้านี้โค้ดการปฏิเสธดิบ ๆ มองเห็นได้เฉพาะในบันทึก Experts และการปฏิเสธบางส่วนไม่ทิ้งร่องรอยเลย).
รายการเดียวกันนี้ถูกสะท้อนไปยังแท็บ Experts พร้อมแท็ก [OKU-ACT] — ไฟล์นั้นสะดวกสำหรับการส่ง/ตรวจดูทั้งก้อน ส่วนบันทึกของ MT5 เอาไว้ดูแบบสด
ตั้งแต่รุ่น 1.28 สวิตช์เดียวกันนี้ยังเก็บบันทึกการตัดสินใจด้วย — ไฟล์ที่เครื่องอ่านได้ชื่อ ea_decisions.csv ในโฟลเดอร์เดียวกัน: หนึ่งบรรทัด = หนึ่งเหตุการณ์ในคอลัมน์ที่ตายตัว มันบันทึกทุกการตัดสินใจเข้าออเดอร์ (สัญญาณ, ชื่อประตูที่บล็อก, การลงทะเบียนการเข้า) และทุกการติดต่อกับ Broker — การเปิด, pending, การปิด, การแก้ไข stop — พร้อมโค้ดและคำอธิบายของการปฏิเสธ (ถ้ามี), ราคาที่ร้องขอเทียบกับราคาที่ดำเนินการได้ (นั่นคือ slippage) และเวลาตอบสนองของเซิร์ฟเวอร์เป็นมิลลิวินาที ไฟล์นี้จงใจไม่มีทั้งล็อกอินและยอดเงิน นี่คือไฟล์หลักฐานสำหรับคำถามอย่าง “EA ตัดสินใจผิด หรือ Broker หน่วงคำสั่งของฉันไว้?” — และแผงลูกค้าบน okurra.com มีเครื่องมือวิเคราะห์ที่เปลี่ยนไฟล์ที่อัปโหลดให้กลายเป็นรายงานที่อ่านเข้าใจง่าย: การกระจายเวลาตอบสนองของ Broker รายชั่วโมง, slippage ในการดำเนินการ, แผนที่การปฏิเสธ และประวัติการบล็อกของประตูต่าง ๆ
บันทึกนี้ทำงานใน Strategy Tester ด้วย (ตั้งแต่ 1.28) — มันปิดตัวเองเฉพาะระหว่างการ optimization เท่านั้น เพื่อไม่ให้การรันคู่ขนานหลายพันรอบสร้างไฟล์ที่ไม่มีใครอ่าน ไฟล์จากเทสเตอร์จะไปอยู่ในโฟลเดอร์ข้อมูลร่วม (common data folder) ของเทอร์มินัล (…\MetaQuotes\Terminal\Common\Files\OKU\diag\) โดยมีชื่อสัญลักษณ์และหมายเลขรอบอยู่ในชื่อไฟล์ — ทุกรอบมีไฟล์คู่ของตัวเอง ไม่มีอะไรถูกเขียนทับ ดังนั้นการวิเคราะห์ backtest และการวิเคราะห์การเทรดจริงจึงใช้เครื่องมือเดียวกันและรูปแบบเดียวกัน
แท็ก [OwnReg] ที่แยกต่างหากในล็อกเกี่ยวข้องกับรีจิสทรี “own only” (การ adopt/ติดตาม ticket ของตัวเองในโหมด Monitor Own Only — หัวข้อ 21.8) — นั่นเป็นกลไกคนละอย่างกับบันทึกกิจกรรม
21.7 BEa มีพฤติกรรมที่ไม่คาดคิด
BEa ปิด basket ทันทีหลังการ arm
อาการ: คุณคลิก BEa BUY แล้ว basket ปิดทันที
นี่คือพฤติกรรมที่ออกแบบไว้ ณ ขณะที่ arm ราคาอยู่เหนือ weighted break-even + BEa Gain อยู่แล้ว BEa จะทำงานทันทีเมื่อเงื่อนไขเป็นจริง วิธีแก้: arm BEa ให้เร็วขึ้น (ก่อนที่ราคาจะไปถึงเกณฑ์) หรือลดค่า BEa Gain (เช่น 30 → 10) เพื่อปิดใกล้ศูนย์มากขึ้น
เส้น BEa “หนีไปเรื่อย ๆ” เมื่อมี position ใหม่เข้ามา
นี่ไม่ใช่ข้อผิดพลาด weighted break-even ขึ้นอยู่กับทุก position ใน basket; ทุก position ใหม่จะเปลี่ยนค่าเฉลี่ยถ่วงน้ำหนัก และเส้น BEa = weighted BE + Gain มันจึงขยับ ยิ่งไปกว่านั้น — นี่เป็นข่าวดี: ยิ่งมี position ในจุดที่แย่กว่ามากเท่าไร weighted break-even ก็ยิ่งต่ำลง (สำหรับ BUY) นั่นคือเกณฑ์การ realization ยิ่งเข้าใกล้ราคาปัจจุบันมากขึ้นเรื่อย ๆ (บทที่ 12)
Auto-Arm ไม่ได้ arm BEa
- EA ปิดอยู่ในขณะนั้น Auto-Arm ทำงานเฉพาะเมื่อ EA กำลังทำงาน; จังหวะที่พลาดไปแล้วก็หายไปเลย
- ไม่มี position เปิดอยู่ Auto-Arm จะระงับการ arm เมื่อไม่มี position ในทิศทางของทริกเกอร์ — ไม่มีอะไรให้ปกป้อง BEa จึงยังคง disarm อยู่ (ในล็อก: arming suppressed) ทริกเกอร์จะทำงานในครั้งถัดไปที่มันเกิดขึ้น เมื่อ basket มีอยู่จริง
- แลตช์ “วันละครั้ง” (Auto-Arm ตามเวลา) การ arm ที่ชั่วโมงที่กำหนดทำงานวันละครั้ง; ถ้าคุณ disarm BEa ด้วยมือไปก่อนหน้านั้นในวันเดียวกัน มันจะไม่ลองอีก (บทที่ 12)
- เวลา Broker ≠ เวลาท้องถิ่น ชั่วโมงของ Auto-Arm เป็นเวลา Broker ตรวจสอบ offset ด้วย
โหมด hedge ของ BEa — basket แบบ net “ไม่ยอม” ปิด
ในโหมด hedge (นับ BUY และ SELL รวมกันแบบ net) การ realization จะเกิดขึ้นเมื่อทั้งก้อนเป็นบวก เมื่อ lot ทั้งสองฝั่งสมดุลกัน net อาจ “ถูกแช่แข็ง” อยู่ใกล้ศูนย์และไม่ปิด จนกว่าฝั่งใดฝั่งหนึ่งจะได้เปรียบ นี่เป็นผลจากเรขาคณิต (บทที่ 12.5) ไม่ใช่จากข้อผิดพลาด
21.8 ผู้พิทักษ์บัญชี (DPL / EG / Basket Max Loss / PT)
การแก้ความเข้าใจที่สำคัญที่สุด Equity Guard เฝ้าดูฝั่งกำไร (PROFIT) (เป้าหมายกำไร/trailing ของกำไร) ส่วนผลขาดทุนของ basket นั้นเฝ้าดูโดย Basket Max Loss (บทที่ 15) นี่เป็นแหล่งของความเข้าใจผิดที่พบบ่อย — ดูด้านล่าง
Daily Loss ทำงานทันทีหลังเริ่มต้น
- position จากก่อนหน้านี้ หากมี position เปิดอยู่ (เช่น จากวันก่อน) และที่ราคาปัจจุบันมันขาดทุนเกินลิมิต — Daily Loss จะทำงานทันที ผลของวันคำนวณเป็น equity ปัจจุบัน − equity captured at reset (บทที่ 14)
- equity captured at reset ไม่ตรงกัน (หลังออฟไลน์เป็นเวลานาน / เปลี่ยนกราฟ) วิธีแก้: ตั้ง Daily Loss เป็น 0 (ปิด) แล้วรอ day reset ครั้งถัดไป — ค่าอ้างอิงจะรีเฟรชใหม่อย่างสะอาด
Equity Guard ทำงาน “ไม่ตรงกับที่ฉันคาดไว้”
- EG คือด้านกำไร ค่า “Start” ของ EG ที่เป็นบวก = เกณฑ์กำไร (เมื่อ Distance เป็น 0 จะปิดที่ +Start; เมื่อ Distance > 0 — เป็น profit trailing พร้อมล็อกแบบขยับทางเดียว) EG ไม่ใช่ ผู้พิทักษ์ฝั่งขาดทุน ถ้าคุณต้องการจำกัดการขาดทุนของ basket — นั่นคือ Basket Max Loss (บทที่ 15)
- โหมดเปอร์เซ็นต์ ถ้า EG อยู่ในโหมดเปอร์เซ็นต์ “Start” จะคำนวณเป็น % ของ equity — สับสนกับจำนวนเงินได้ง่าย ตรวจสอบโหมด
- EG ดูที่ Total PnL (floating + realized) ไม่ใช่แค่ floating เพียงอย่างเดียว
Basket Max Loss ปิด basket ไปแล้ว แต่การเทรดยังดำเนินต่อ
นี่คือพฤติกรรมที่ออกแบบไว้ Basket Max Loss คือ “ตาข่ายนิรภัยของการขาดทุนตามแผน”: เมื่อการขาดทุนของ basket เกินลิมิต (เช่น 3% ของ equity) EA จะ ปิด basket ทั้งหมด รีเซ็ต basket แล้วเล่นต่อ (บทที่ 15) นั่นคือความต่างจาก Daily Loss ซึ่งทำ hard stop ของทั้งวัน
Profit Target ไม่ทำงานทั้งที่มีกำไร
PT ดูเฉพาะกำไรที่ realized แล้ว ไม่ใช่ floating +300 “บนหน้าจอ” ยังไม่ถือเป็นกำไรสำหรับ PT — คุณต้องปิดโพซิชันจริง ๆ (TP/BEa/ด้วยมือ) หลังจาก realization ผลรวมจะถูกนับเข้าสู่เกณฑ์และ PT จะทำงาน (บทที่ 15)
ตัวนับ / Equity Guard แสดงโพซิชันที่ EA ตัวนี้ไม่ได้เปิด
สาเหตุทั่วไปมีสองอย่าง:
- โหมด “own only” ถูกปิดอยู่ โดยค่าเริ่มต้นเซลล์ “Monitor Own Only” (บทที่ 5.5) เปิดอยู่ และ EA แต่ละอินสแตนซ์จะจัดการเฉพาะโพซิชันที่ตัวเองเปิดเท่านั้น — แม้ว่าอินสแตนซ์ที่สองจะทำงานบนสัญลักษณ์เดียวกันด้วย Magic Number เดียวกัน ถ้ามีใครปิดมันไว้ อินสแตนซ์ที่มี Magic ทับซ้อนกันจะ “ปนกัน”: ต่างนับโพซิชันของกันและกันเข้า basket ของตัวเอง และตัวนับกับ Equity Guard จะแสดงค่าที่ผิดเพี้ยน เปิด “Monitor Own Only” กลับคืน
- ช่วง Magic Number ทับซ้อนกัน (ฐานต่างกันน้อยกว่า 5) แม้ในโหมด “own only” การใช้ Magic ร่วมกันก็หมายถึงการแชร์ ผลลัพธ์รายวันที่ realized (Daily P/L นับต่อ Magic) ดังนั้นผู้พิทักษ์รายวันจึงอาจตอบสนองต่อการเทรดของอีกอินสแตนซ์ได้ ขยาย Global Magic Number ให้ฐานต่างกันอย่างน้อย 5 (ในทางปฏิบัติคือทีละ 10) เมื่อตรวจพบการทับซ้อน EA จะยกอเลิร์ตตอนเริ่มทำงาน (บทที่ 9)
ลำดับความสำคัญ เมื่อมีหลายเงื่อนไขมาบรรจบกัน Daily P/L Limits มีสิทธิ์เหนือกว่า EG/PT/Basket Max Loss (บทที่ 14)
21.9 Trading Hours
Button เปิดอยู่ แต่เงียบทั้งวัน
- Master เปิดอยู่ แต่หน้าต่างว่างเปล่า ถ้าทุกวันระบุว่า “no trading” EA จะไม่เทรด ตรวจสอบรายการที่กรอกไว้ (บทที่ 16)
- เวลาโบรกเกอร์ vs เวลาท้องถิ่น คุณกรอก “08:00-22:00” โดยคิดเป็นเวลาท้องถิ่น แต่ EA อ่านมันเป็นเวลาโบรกเกอร์ ปรับชดเชยตาม offset
- รูปแบบผิด พิมพ์ผิดในหน้าต่างหนึ่ง (เช่น “08:0-22:00”) → EA จะข้าม เซกเมนต์นั้น และบันทึกคำเตือน
[TH] …: invalid range '…' - skippingใน Experts; หน้าต่างที่เหลือซึ่งถูกต้องของวันนั้นยังทำงานตามปกติ เมื่อวันนั้นมีเพียงหน้าต่างเดียว (ที่ผิด) — ทั้งวันจะกลายเป็น “no trading” ตรวจสอบรูปแบบ “HH:MM-HH:MM” (บทที่ 16.2)
เปิด button นอกช่วงเวลาที่กำหนดแล้วไม่มีอะไรเกิดขึ้น
นี่เป็นเจตนา — button อยู่ในสภาพ “หลับ” การเปิดด้วยมือนอกหน้าต่างเทรดจะได้รับการยอมรับ (button เปิดอยู่) แต่สัญญาณจะยังไม่ถูกสร้างจนกว่าหน้าต่าง Trading Hours ที่ใกล้ที่สุดจะเปิด — จากนั้น button จะเริ่มทำงานเอง ถ้าคุณต้องการเทรดทันที — ขยายหน้าต่างหรือปิด Trading Hours (บทที่ 16)
Button ยังคงเก็บสะสมต่อหลังหน้าต่างสิ้นสุด
ถ้ามัน arm BEa ไว้ — นี่เป็นเจตนา: เมื่อเปิด “Exclude BEa mode from Trading Hours” button ในโหมด BEa จะทำงานต่อเพื่อปิด basket ให้เหลือศูนย์ button ตัวอื่นจะเงียบ (บทที่ 16) การสิ้นสุดของหน้าต่าง ไม่ปิด โพซิชันที่เปิดอยู่
21.10 Cross-button Triggers
Trigger ไม่ยิง
- โหมด [C] — แผนที่แสดงการเชื่อมต่อหรือไม่? ถ้าไม่ แสดงว่า EA ไม่ได้โหลดคอนฟิกนั้น ตรวจสอบว่า target เป็น 1…7 (ไม่ใช่ 0) และไม่ได้ชี้ไปที่ตัวเอง (self-target จะถูกปฏิเสธ — บทที่ 17)
- สล็อตไม่ตรงกับเหตุการณ์ การคลิกด้วยมือจะยิงเฉพาะ OnManualOn ไม่ใช่ OnAnyAutoOn เลือกสล็อตให้ตรงกับเหตุการณ์
- ล็อก เมื่อเปิดการบันทึกล็อกไว้ ทุกการกระทำของ trigger จะถูกบันทึก; ไม่มีรายการ = trigger ไม่ได้ยิง
Loop detection ทำงานระหว่างการใช้งานตามปกติ
คุณมีวงจร (cycle) ในกราฟของ trigger ที่พบบ่อยที่สุดคือ B1 → B3 → B1 (โดยตรง) หรือ B1 → B3 → B5 → B1 (แบบทรานซิทีฟ) วาดกราฟลงกระดาษ หาวงจรนั้นให้เจอ แล้วลบ trigger หนึ่งตัวออก อย่าเพิ่มเกณฑ์ของ loop detection — นั่นคือการซ่อนปัญหา ไม่ใช่การแก้ (บทที่ 17.7)
Trigger ไม่ยิงตอน EA เริ่มทำงาน
นี่เป็นเจตนา การเริ่มทำงานด้วย “Initial Enabled” เป็น เหตุการณ์ของระบบ ที่ ไม่แพร่กระจายต่อ (บทที่ 17.6) ถ้าคุณต้องการให้ button เป้าหมายทำงานตั้งแต่เริ่ม — ให้กำหนด “Initial Enabled” ของมันเองแยกต่างหาก หรือเปิด button ต้นทางด้วยมือหลังเริ่มทำงาน (แล้ว OnManualOn จะยิง) เช่นเดียวกันกับ rollover ของ DPL และ hard stop
21.11 แผง EA
แผงอยู่นอกพื้นที่ของกราฟ
ลบ EA ออกแล้ววางกลับเข้าไปใหม่ — แผงจะกลับไปยังตำแหน่งเริ่มต้น (ตำแหน่งและมุมกำหนดได้ในการตั้งค่า — บทที่ 8)
เซลล์ Target Blocks ไม่ตอบสนองต่อการคลิก
- เซกชันถูกซ่อน ตรวจสอบว่าคุณเห็นเซกชัน Target Blocks หรือไม่; ถ้าไม่เห็น — แสดงว่ามันถูกปิดในการตั้งค่าเซกชัน (บทที่ 8)
- การแก้ไขแบบสด เซลล์ทำงานในโหมด SET → กรอกค่า → OK/X ตรวจสอบให้แน่ใจว่าคุณคลิกปุ่ม SET ที่ถูกต้อง (บทที่ 8)
โหมด info ไม่แสดงอะไรเลย
เป็นไปได้มากที่สุดว่าปุ่ม [i] ปิดอยู่ (สีเทา) โหมด [B/G/S/T/C/H] จะวนเปลี่ยนหมวดหมู่ แต่แผงขยายจะยังซ่อนอยู่จนกว่าคุณจะเปิด [i] (สีเขียว) — บทที่ 8 ถ้ายังไม่ช่วยเช่นกัน — ตรวจสอบฟิลด์ Show info panel ใน Inputs (พารามิเตอร์ Global_ShowStatsPanel, ส่วนย่อย Info Panel): เมื่อมันปิดอยู่ แผง [i] แบบขยายจะไม่แสดงเลย มันเป็น สวิตช์คนละตัว กับ Show interactive control panel (UI_ShowControlPanel) ซึ่งควบคุมแผงควบคุมหลัก
ป๊อปอัปอเลิร์ตมากเกินไป — หรือขาดการแจ้งเตือนบางอย่าง
ตั้งแต่ EA 1.08 คุณปิดเสียงป๊อปอัปแต่ละกลุ่มแยกกันได้ในเซกชัน Alerts ของแผง OkurraGlobal (หรือในกลุ่ม Alerts ของหน้าต่าง Inputs ของ EA): 8 กลุ่มป๊อปอัป + สวิตช์ push ร่วมหนึ่งตัว (บทที่ 5.5) สองสิ่งที่ต้องจำไว้ระหว่างการวินิจฉัย:
- การปิดเสียงทำให้เงียบเฉพาะป๊อปอัป/push — รายการในบันทึก Experts ยังคงอยู่เสมอ ถ้าคุณกำลังมองหาเหตุการณ์ที่ป๊อปอัปไม่แสดง ให้ตรวจสอบในล็อก
- ไม่ได้รับ push บนโทรศัพท์? ตรวจสอบตามลำดับ: สวิตช์ Push Notifications ในเซกชัน Alerts จากนั้น MetaQuotes ID ใน MT5 (Tools → Options → Notifications) หากไม่ได้ตั้งค่า ID ไว้ push จะไม่ถูกส่งออก แม้ว่าสวิตช์จะเปิดอยู่ก็ตาม
อเลิร์ตเรื่อง license ไม่มีสวิตช์ปิด — ถ้า EA ไม่เทรดเพราะ license ป๊อปอัปจะแสดงเสมอ (ส่วน 21.3)
21.12 ประสิทธิภาพ
MT5 ทำงานช้าลงเมื่อ EA ทำงานอยู่
- T. History ที่มีจำนวนวันมาก สิบกว่าหรือหลายสิบวันบน M1 หมายถึงลูกศรหลายพันอันที่ต้องวาด ลดจำนวนวันของประวัติลงเหลือ 1–3 (บทที่ 19.6)
- EA หลายอินสแตนซ์ทำงานพร้อมกัน แต่ละตัวกินทรัพยากร ปิดตัวที่ไม่จำเป็นหรือกระจายไปยังเทอร์มินัลแยกกัน
- ฮาร์ดแวร์อ่อนแอ บนเครื่องที่เก่ามาก ให้พิจารณาใช้ VPS
ล็อก Experts ถูกท่วมด้วยข้อความ
ส่วนใหญ่มักเป็นเพราะเปิด “Log Every Trigger Action” ไว้ขณะที่มี trigger ทำงานอยู่ เมื่อดีบักเสร็จแล้ว ให้ปิดการบันทึกทุกการกระทำ — ล็อกจะกลับมาอ่านได้อีกครั้ง (บทที่ 17)
21.13 หลังรีสตาร์ท EA “มองไม่เห็น” โพซิชันของตัวเอง (หรือมันตัด pending order ทิ้ง)
โพซิชันที่มี Magic Number ของโรบอทเปิดอยู่ แต่โรบอทไม่ได้ดูแลมัน
นี่เกือบจะเป็น orphan position เสมอ: มันหายไปจากรีจิสทรีความเป็นเจ้าของของโหมด own-only (บทที่ 7.9) สถานการณ์ทั่วไป: pending order ถูกจับคู่ขณะที่แพลตฟอร์มปิดอยู่, โพซิชันถูกเปิดบน MetaTrader VPS ในตัว (ไฟล์ของโรบอทไม่ย้ายตามไป — รีจิสทรีในเครื่องจึงไม่รู้จักมัน), และที่พบน้อยกว่าคือบัญชีแบบ netting
ขั้นตอน:
- ตรวจสอบบันทึก Experts — บน EA 1.26 ให้มองหารายการ
[OwnReg] reconcile ... ORPHAN(ด้วยการตั้งค่าจากโรงงานคุณจะได้ป๊อปอัปด้วย) รายการนั้นระบุหมายเลขโพซิชันและเหตุผล - คืนการดูแล: ตั้งค่า
Global_OwnOnly_Reconcile = Adopt(การรับกลับมาพร้อมหลักฐานความเป็นเจ้าของ) หรือ ใช้แบบครั้งเดียวGlobal_OwnOnly_AdoptExisting = true(รับทุกโพซิชันที่ MN ตรงกัน — ใช้อย่างตั้งใจแล้วสลับกลับเป็นfalse) - ระวังเรื่อง virtual SL: จนกว่า orphan จะกลับมาอยู่ในการดูแล เมื่อเปิด Virtual SL ไว้ มันจะ ไม่มี stop เลย — ถ้าจำเป็นให้ป้องกันมันด้วยมือที่โบรกเกอร์
- ถ้าอเลิร์ตกล่าวถึง อินสแตนซ์ที่สอง บนฐาน MN เดียวกัน — ให้จัดการฐานให้เรียบร้อยก่อน (ระยะห่าง ≥ 5) แล้วค่อย adopt
Pending order หายไปหลังรีสตาร์ท
นี่คือนโยบายที่ตั้งใจไว้ ไม่ใช่ความผิดพลาด: รายการ pending order ที่เฝ้าดูอยู่นั้นเก็บไว้ในหน่วยความจำของโรบอต ดังนั้นหลังรีสตาร์ท pending order ที่กลายเป็นกำพร้าอยู่ที่โบรกเกอร์จะถูกกวาดทิ้งก่อนที่ setup ที่ล้าสมัยจะมีโอกาสทำงาน (ตั้งแต่ 1.26 พร้อมการแจ้งเตือน) หากต้องการให้การกวาดยกเลิกเฉพาะคำสั่งที่อยู่ในรีจิสทรีของโรบอตเอง (เพื่อป้องกันอินสแตนซ์พี่น้องที่มีช่วง MN ทับซ้อนกัน) ให้เปิด Global_OwnReg_TrackPendingOrders + Global_StalePendings_OwnListOnly (บทที่ 7.9)
การแจ้งเตือน “[Migration] … retired B6/B7 magics” หลังอัปเดตเป็น 2.00
อาการ: หลังจากเปลี่ยนไฟล์เป็นรุ่น 2.00 EA จะแสดง popup และบันทึกในเจอร์นัลที่ขึ้นต้นด้วย [Migration] ตอนเริ่มทำงาน โดยระบุจำนวนพอซิชันและ magic สองค่าที่เจาะจง
สาเหตุ: ในบัญชียังมีพอซิชันที่เปิดอยู่ของปุ่มเดิม B6/B7 จากรุ่นที่มี 7 ปุ่ม (magic base+5 และ base+6) รุ่น 2.00 มีห้าปุ่มและไม่จัดการพอซิชันเหล่านั้น: ไม่มี Break Even หรือ Trailing ให้ ไม่มีการดูแล virtual SL/TP (เมื่อเปิด Virtual SL พอซิชันแบบนี้จะเปลือย — ที่โบรกเกอร์ก็ไม่มี stop เช่นกัน!) และไม่ถูกนับเข้า basket ของ BEa, ลิมิตรายวัน หรือ Close All การแจ้งเตือนนี้เป็นเพียงข้อมูลเท่านั้น — EA ไม่ทำอะไรกับพอซิชันเหล่านั้น
วิธีแก้: ปิดพอซิชันเหล่านั้นด้วยมือในเทอร์มินัล (แท็บ Trade — คุณจะจำได้จาก magic ที่ระบุในข้อความ) หรือ — หากคุณยังเข้าถึงการติดตั้งที่มีรุ่นเก่าอยู่ — ปล่อยให้ EA ตัวเก่าพาพอซิชันเหล่านั้นไปจนถึงการปิดตามแผนก่อนที่คุณจะอัปเดต ทางที่ดีที่สุดคือหลีกเลี่ยงสถานการณ์นี้ไปเลย: ปิดพอซิชัน B6/B7 ก่อนเปลี่ยนไฟล์ (บทที่ 3.5) การแจ้งเตือนจะปรากฏซ้ำทุกครั้งที่ EA เริ่มทำงาน ตราบใดที่พอซิชันเหล่านั้นยังอยู่
คอลัมน์ Magic Number ในรายงานว่างเปล่า
ดีลที่ไม่มี MN คือดีลจากนอกโรบอต: พอซิชันที่เปิดหรือปิดด้วยมือ (เทอร์มินัล, โทรศัพท์) จะมี MN = 0 แพลตฟอร์มไม่อนุญาตให้กำหนด MN หลังจากเปิดแล้ว — ไม่มี EA ตัวใด “เขียน” หมายเลขลงบนพอซิชันที่เปิดด้วยมือได้ แต่ถ้าพอซิชันที่โรบอตเปิดกลับแสดง MN ว่างเปล่า — ให้ตรวจสอบว่า Global_MagicBase ถูกตั้งเป็น 0 หรือไม่ (ปุ่ม B1 จะเทรดด้วย MN = 0 ในกรณีนั้น; ตั้งแต่ 1.26 EA จะเตือนเรื่องนี้)
ในบทถัดไป — FAQ: คำถามที่พบบ่อยที่สุดพร้อมคำตอบสั้น ๆ จากหลากหลายด้าน รวมถึงคำถามที่ไม่เข้ากับบทใดบทหนึ่งโดยตรง รูปแบบคำถาม–คำตอบ กระชับและเป็นรูปธรรม