อ่าน Journal และ Log ของ EA: แยกปัญหากลยุทธ์กับปัญหาโบรกเกอร์
บทความนี้ตอบคำถามว่า เมื่อ EA ไม่เปิดออเดอร์หรือมีข้อความผิดพลาดบน MT5 เราจะรู้ได้อย่างไรว่าปัญหาเกิดจากกฎของกลยุทธ์ ตัว EA เอง ข้อมูลราคา การตั้งค่า symbol บัญชี หรือการส่งคำสั่งไปยัง trade server คำตอบไม่ใช่การดูข้อความเพียงบรรทัดเดียว แต่ต้องอ่าน Experts Journal, Platform Journal และไฟล์ Log ให้ตรงกับช่วงเวลาเดียวกัน แล้วจับคู่กับเงื่อนไขและผลลัพธ์ของคำสั่งที่เกิดขึ้นจริง
บทความนี้เป็นคู่มือการอ่านหลักฐานแบบทั่วไป ไม่ได้วิเคราะห์บัญชีหรือ Log ของผู้อ่านรายใด และไม่ได้สรุปว่า error ใดเป็นความผิดของ broker โดยไม่มีข้อมูล request, symbol specification และเหตุการณ์แวดล้อมครบถ้วน

Journal, Experts Journal และ Log ต่างกันอย่างไร
MetaTrader 5 แยกบันทึกหลักเป็นสองมุมใน Toolbox ตามเอกสารทางการของแพลตฟอร์ม
Experts Journal มีข้อความจาก EA และ Indicator รวมถึงการเปิดหรือปิดสถานะ การแก้ไขคำสั่ง alert และ comment ส่วน Platform Journal มีการเริ่มแพลตฟอร์ม การเชื่อมต่อ เหตุการณ์ของระบบ และรายละเอียดการดำเนินการเทรด
ในแต่ละรายการจะมีเวลา แหล่งที่มา และข้อความ โดยเวลาในหน้าจออ้างอิง timezone ของเครื่องคอมพิวเตอร์ผู้ใช้ ไม่ใช่เวลาของเว็บไซต์หรือเวลาของ TRADERMAN โดยอัตโนมัติ เมื่อนำไปทำรายงานจึงควรบันทึก timezone เดิมไว้ แล้วแปลงเป็นเวลาไทยเพื่อเรียงเหตุการณ์ให้ถูกต้อง
ไฟล์ Log ของ MT5 อยู่ตรงไหน
เอกสาร MetaTrader 5 ระบุว่าไฟล์ระบบและไฟล์ของ EA อยู่คนละตำแหน่ง การแยกตำแหน่งช่วยไม่ให้เราเอา log จาก Strategy Tester ไปปนกับ log ของ terminal หรือบัญชีที่กำลังใช้งาน
ตำแหน่ง Logs ใช้ดู log ของแพลตฟอร์ม เหตุการณ์การเชื่อมต่อ และการทำงานทั่วไป ส่วน MQL5/Logs ใช้ดู log ของ Expert Advisor ตามวันที่ทำงาน และ Tester/logs เป็น log ของ agent ใน Strategy Tester ซึ่งเป็นหลักฐานคนละชุดกับ terminal
metaeditor.log เป็น log ของ MetaEditor แยกจาก runtime log ของ EA และไม่ใช่ผลการเทรด แท็บ Journal แสดงรายการล่าสุดเป็นหลัก หากต้องตรวจเหตุการณ์เก่าหรือเรียง timeline ยาวขึ้น ต้องเปิดไฟล์ Log หรือใช้ Log Viewer
เริ่มอ่านจากเวลาและ Source ก่อนอ่านข้อความ
ก่อนตีความ ให้จดวันที่และ timezone ของเครื่อง ชื่อ symbol timeframe ชื่อ EA และรุ่น magic number ถ้ามี และช่วงเวลาที่ต้องการตรวจ เช่น 08:00–09:00 เวลาไทย จากนั้นเรียงเหตุการณ์ตามเวลา
ถ้าเวลาของเครื่องเป็น timezone อื่น ให้เขียนทั้งเวลาต้นฉบับและเวลาที่แปลงแล้ว อย่าแทนที่เวลาเดิมโดยไม่บันทึกที่มา เพราะความคลาดเคลื่อนเพียงไม่กี่ชั่วโมงอาจทำให้จับคู่กับแท่งราคา ข่าว หรือ session ผิดช่วง
แยกปัญหากลยุทธ์ออกจากปัญหาการส่งคำสั่ง
Log ช่วยบอกลำดับเหตุการณ์ แต่ไม่ได้ตัดสินสาเหตุแทนเรา หาก EA ทำงานและบอกว่าไม่มีสัญญาณ แต่ไม่มี trade retcode อาจเป็นกฎกลยุทธ์ที่ยังไม่เข้าเงื่อนไขหรือข้อมูลที่ EA ใช้ไม่ตรงกับที่คาด ต้องตรวจแท่งที่ปิดแล้ว indicator value timeframe symbol spread filter และ session filter
ถ้า EA บอกว่าพบสัญญาณแล้วส่งคำขอ แต่ได้ INVALID_STOPS, INVALID_VOLUME หรือ INVALID_FILL ให้ตรวจ digits, point, volume min/step/max, stop level, filling mode และราคาที่ส่งจริงก่อนสรุปว่าเป็นปัญหา broker
ถ้าได้ MARKET_CLOSED, PRICE_OFF, CONNECTION หรือ NO_QUOTES ให้ตรวจเวลาเปิดตลาดของ symbol quote ล่าสุด connection event และ server message ส่วน NO_MONEY, TOO_MANY_REQUESTS และ TRADE_DISABLED ต้องตรวจ free margin account mode permission และ rate of requests
ไม่มี retcode ไม่ได้แปลว่า broker ปฏิเสธคำสั่ง ถ้า EA ยังไม่ส่งคำขอ เหตุผลอาจอยู่ที่กฎเข้าออเดอร์หรือขั้นตอนก่อนส่งคำขอ ขณะเดียวกันการมี retcode ที่ผิดพลาดก็ยังไม่พิสูจน์ว่า source code ผิด ต้องดู request parameters และข้อกำหนดของ symbol ร่วมกัน
อ่าน Trade Server Return Code ให้ถูกบริบท
ใน MQL5 คำขอเทรดใช้ MqlTradeRequest และผลลัพธ์อยู่ใน MqlTradeResult โดยช่อง retcode เป็นรหัสผลจาก trade server ตัวอย่างที่พบบ่อยคือ 10009 DONE, 10010 DONE_PARTIAL, 10006 REJECT, 10014 INVALID_VOLUME, 10016 INVALID_STOPS, 10017 TRADE_DISABLED, 10018 MARKET_CLOSED, 10019 NO_MONEY, 10021 PRICE_OFF, 10024 TOO_MANY_REQUESTS, 10026 SERVER_DISABLES_AT, 10027 CLIENT_DISABLES_AT และ 10031 CONNECTION
รหัสเหล่านี้เป็นหลักฐานของผลคำขอ ไม่ใช่คะแนนกลยุทธ์ เช่น 10016 อาจเกิดจาก stop ที่ใกล้เกินกฎของ symbol หรือราคาเปลี่ยนก่อนส่ง ไม่ได้แปลว่า signal ผิดเสมอไป ส่วน 10009 ก็ไม่ได้ยืนยันว่ากลยุทธ์ดีหรือจะทำกำไรในอนาคต
ตัวอย่างการไล่เหตุการณ์แบบไม่เดาสาเหตุ
สมมติว่าเห็นข้อความว่า พบสัญญาณ Buy เวลา 09:01:10 แต่ไม่มีสถานะเปิด ให้ตรวจใน Experts Journal ว่า EA ใช้ symbol และ timeframe ใด และใช้แท่งปิดหรือแท่งที่ยังไม่ปิด
จากนั้นตรวจว่ามีข้อความส่ง request หรือไม่ พร้อม volume ราคา SL/TP และ filling mode ที่ใช้ ถ้ามี request ให้ค้น retcode ใน Platform Journal และจับคู่ด้วยเวลา ไม่ใช่ค้นจากข้อความที่คล้ายกันคนละวัน
ถ้า retcode เป็น INVALID_STOPS หรือ INVALID_VOLUME ให้ตรวจข้อกำหนด symbol และค่าที่ส่งจริง ถ้าเป็น CONNECTION, PRICE_OFF หรือ MARKET_CLOSED ให้ตรวจเหตุการณ์ feed และ session ถ้าไม่มี request เลย ให้กลับไปตรวจ source path condition filter และ initialization ของ EA
ถ้าจะเขียน Log ให้ช่วยตรวจได้มากขึ้น
ฟังก์ชัน Print() ของ MQL5 เขียนข้อความลง Expert Advisor log ได้ และ PrintFormat() ช่วยกำหนดรูปแบบตัวเลขให้สม่ำเสมอ สำหรับงานตรวจสอบควรเขียน timestamp และ timezone, symbol และ timeframe, ชื่อขั้นตอน, bar time, indicator value, volume ราคาเข้า SL/TP filling mode, retcode และ comment เท่าที่จำเป็น
การเขียน Log มากเกินไปไม่ได้ทำให้การวิเคราะห์ดีขึ้นเสมอ ควรใช้ข้อความสั้นที่ค้นหาได้และไม่ใส่ password, token, account credentials หรือข้อมูลส่วนตัวลงใน log หากจะส่งไฟล์ให้บุคคลอื่น ควรปกปิด login, server ที่ระบุตัวตนได้, ยอดเงิน, balance, equity และเลขบัญชีตามความจำเป็น
สิ่งที่ Log บอกได้และบอกไม่ได้
Log บอกได้ว่าเกิดเหตุการณ์อะไร เวลาใด แหล่งข้อมูลใดเป็นผู้เขียนข้อความ มี request หรือไม่ และ server/client ตอบ retcode อะไรเมื่อมีผลตอบกลับ
Log บอกไม่ได้ด้วยตัวมันเองว่ากลยุทธ์จะทำกำไรหรือไม่ EA จะชนะกี่เปอร์เซ็นต์ ปัญหาเกิดจาก source แน่นอนหรือไม่ broker มีความผิดแน่นอนหรือไม่ หรือผลลัพธ์จะเหมือนกันทุกบัญชี ทุก symbol และทุกช่วงตลาดหรือไม่
Tester/logs เป็นหลักฐานจาก Strategy Tester และไม่ควรนำมาปะปนกับ MQL5/Logs ของ terminal ที่กำลังใช้งานจริง หากยังไม่มีผลรันจริง ห้ามรายงานว่า Compile, Strategy Tester, Backtest, Demo หรือ Live ผ่าน
Checklist ก่อนส่ง Log ให้คนช่วยตรวจ
ตรวจให้ครบก่อนส่งหลักฐาน: วันที่ ช่วงเวลา timezone ต้นฉบับ symbol timeframe EA version และ magic number เท่าที่ไม่เปิดเผยข้อมูลลับ ส่งทั้ง Experts Journal และ Platform Journal เฉพาะช่วงที่เกี่ยวข้อง เก็บบรรทัดก่อน signal ตอนสร้าง request และหลังได้ retcode แยก log ของ terminal, EA และ Strategy Tester ให้ชัด และปกปิดเลขบัญชี login password token ยอดเงินและข้อมูลส่วนบุคคล
อย่าใช้ภาพกราฟหรือข้อความว่า น่าจะเป็น broker แทน retcode และข้อความต้นทาง ให้เก็บหลักฐานตามเวลาและระบุสิ่งที่ยังเป็นเพียงสมมติฐาน
สำหรับแนวทางจัดการความเสี่ยง อ่านต่อได้ที่ Risk Gate ก่อนเปิด EA และดูตัวอย่างการแยกกฎจาก source ใน
รีวิว RiskGuard Lite บน MT5 ส่วนการทบทวนหลักฐานย้อนหลังอ่าน
แหล่งอ้างอิงทางการ
MetaTrader 5: Platform Logs
MetaTrader 5: Files and Folders
MQL5 Reference: Print
MQL5 Reference: Trade Server Return Codes
คำเตือนความเสี่ยง
ข้อมูลนี้จัดทำเพื่อการศึกษาและการวิเคราะห์ ไม่ใช่คำแนะนำการลงทุนเฉพาะบุคคล และไม่รับประกันผลกำไร



ความคิดเห็น