งานวิจัย · มาตรฐานบริการ · ตัวอย่างงานจริง
มาตรฐานการตรวจ EA
และผลตอนเราเอาระบบที่ดีที่สุดของตัวเองเข้าด่าน
รายงาน walk-forward ทั่วไปตอบว่า “ระบบนี้กำไรนอกกลุ่มไหม” · คำถามนั้นสำคัญ แต่ไม่พอ — เพราะมันไม่ได้บอกว่า ผลที่เห็นแยกออกจากโชคได้หรือไม่ · หน้านี้คือด่านแปดข้อที่เราใช้ และผลตอนเอาระบบของเราเองเข้าด่าน
ด่านทั้งเจ็ด
สามด่านที่ทำเครื่องหมายไว้ หายาก คือด่านที่รายงาน walk-forward ทั่วไปไม่มี · ทั้งสามข้อมาจากโปรแกรมวิจัยของเราเองที่ทดสอบกลไก 15 ตระกูลแล้วไม่ผ่านสักตระกูล — เราค้นพบมันเพราะเราต้องอธิบายให้ตัวเองฟังว่า “ไม่ผ่าน” แปลว่าอะไรกันแน่
ไบนารีเริ่มทำงานในสภาพแวดล้อมที่ควบคุมได้หรือไม่
ด่านที่เหลือทั้งเจ็ดไม่มีความหมายเลยถ้า EA เริ่มทำงานไม่ได้ · เราเพิ่มด่านนี้เข้ามาหลังซ้อมกับไฟล์กล่องดำ 59 ไฟล์แล้วพบว่า ทั้ง 59 ไฟล์ตายที่ขั้นนี้ — ใช้เวลาไฟล์ละไม่กี่วินาที เทียบกับการตรวจเต็มที่ใช้เวลาเป็นชั่วโมงต่อไฟล์
ข้อมูลชุดนี้แยกขอบเล็กสุดขนาดไหนออกจากศูนย์ได้
การบอกว่า “ระบบคุณไม่มีขอบ” โดยไม่บอกตัวเลขนี้ เป็นคำตัดสินที่พิสูจน์ผิดไม่ได้ · ระบบที่ยิงปีละ 20 ไม้ ผลลบแทบไม่มีความหมายตั้งแต่ต้น
กำไรมาจากทุกปี หรือมาจากสองปี
ถ้ากำไรทั้งหมดมาจากไม่กี่ปี ลูกค้าไม่ได้ถือระบบ เขาถือเดิมพันบนสภาวะตลาดแบบหนึ่งที่อาจไม่กลับมา
ชนะการถือสินทรัพย์นั้นเฉย ๆ ที่ความเสี่ยงเท่ากันไหม
Profit Factor วัดเทียบกับศูนย์ แต่ศูนย์ไม่ใช่ทางเลือกที่มีอยู่จริง · และ “เกณฑ์” มีสองนิยามที่ให้คำตอบต่างกัน ต้องรายงานทั้งคู่
จังหวะเข้ามีข้อมูล หรือแค่ทิศทางกับระยะถือ
สุ่มเข้าโดยให้จำนวนไม้ ทิศ และระยะถือเท่ากันทุกอย่าง เหลือต่างกันแค่จังหวะ · ถ้าชนะไม่ได้ ลูกค้าไม่ต้องซื้อ EA ก็ทำได้
ลองไปกี่ชุดกว่าจะได้ผลนี้
ระบบที่ผ่านในความพยายามครั้งที่ 500 ก็ยังคือระบบที่ถูกดัด · เกณฑ์ต้องยกขึ้นตาม √(2 ln N)
ต้นทุนเพิ่มเท่าไรระบบถึงตาย
ระบบ PF บาง ๆ จำนวนมากตายตรงขั้นนี้ และรายงานของผู้ขายไม่เคยแสดง
ไม้ท็อป 10 คิดเป็นกี่เปอร์เซ็นต์ของกำไรสุทธิ
ถ้าเกิน 100% แปลว่าไม้ที่เหลือทั้งหมดรวมกันขาดทุน — ระบบขึ้นกับการจับเหตุการณ์หายากไม่กี่ครั้ง
ด่าน 0 มาจากไหน — ไฟล์กล่องดำ 59 ไฟล์ที่ไม่มีตัวไหนรันได้เลย
มาตรฐานนี้เริ่มต้นด้วยด่านเจ็ดข้อ · ด่านที่ศูนย์ถูกเพิ่มเข้ามาทีหลัง เพราะการซ้อมรับงานจริงสอนเราด้วยวิธีที่ตรงไปตรงมาที่สุด: เราติดตั้งไฟล์ .ex5 จำนวน 59 ไฟล์ที่ไม่เคยเห็นมาก่อน ลงเทอร์มินัลตรวจสอบที่แยกออกมาโดยเฉพาะ แล้วรันทีละตัวด้วยทิกจริง
ทั้ง 59 ไฟล์ล้มที่จุดเดียวกัน — ก่อนจะเทรดแม้แต่ไม้เดียว
| สิ่งที่ตัวทดสอบเขียนไว้ | แปลว่า |
|---|---|
| DLL loading is not allowed | EA เรียกไลบรารีเนทีฟจากภายนอก |
| global initialization failed | จึงเริ่มทำงานไม่สำเร็จ |
| tester stopped because expert initialization failed | การทดสอบจบทันที ไม่มีคำสั่งซื้อขายเลย |
และไม่มีไฟล์ .dll แนบมาด้วยเลยสักไฟล์ → ถึงจะเปิดสิทธิ์ให้ ก็จะไปตายที่ cannot load library อยู่ดี ชุดนี้ใช้งานไม่ได้ในสภาพที่ส่งมา ไม่ว่ากลยุทธ์ข้างในจะดีแค่ไหน
เราไม่เปิดสิทธิ์เรียก DLL ให้ไบนารีที่อ่านซอร์สไม่ได้ · โค้ดเนทีฟอยู่นอกกรอบทั้งหมดของ MetaTrader — อ่านไฟล์ ต่ออินเทอร์เน็ต เขียนรีจิสทรีได้หมด · การยอมเปิดเพื่อให้ผลออกมา “ตรวจได้” คือการทิ้ง เหตุผลทั้งหมดที่เราแยกเทอร์มินัลออกมาตั้งแต่แรก · “รันไม่ได้ในกล่องทราย” เป็นผลตรวจที่ถูกต้อง ไม่ใช่ปัญหาที่ต้องแก้ให้ผ่าน
สิ่งที่ด่าน 0 ไม่ได้บอก
ผลว่า “ตรวจไม่ได้” ไม่ได้แปลว่ากลยุทธ์ข้างในดีหรือแย่ — เราไม่ได้เห็นมันเทรดแม้แต่ไม้เดียว จึงยังไม่มีความเห็นเรื่องผลตอบแทน ความเสี่ยง หรือความทนทาน · สิ่งที่พูดได้คือของที่ส่งมาใช้งานไม่ได้ ในสภาพที่ส่งมา ซึ่งเป็นคนละคำถามและตอบได้ก่อน ด้วยต้นทุนไม่กี่วินาที
สิ่งที่ลูกค้าควรขอจากผู้ขายเมื่อเจอผลนี้: บิลด์ที่ไม่เรียก DLL หรือไฟล์ .dll ทั้งหมดพร้อมชื่อผู้พัฒนาและเหตุผลที่ต้องใช้ · ผู้ขายที่ให้ไม่ได้ ก็เป็นข้อมูลสำหรับการตัดสินใจซื้ออยู่แล้ว
ด่าน 0 มีสี่คำตอบ ไม่ใช่สองคำตอบ
| ผล | แปลว่า | คิดเงินไหม |
|---|---|---|
| รันได้ | เริ่มทำงานและออกคำสั่งได้ → ตรวจต่อได้ทุกด่าน | ตรวจต่อตามแพ็กเกจ |
| ตรวจไม่ได้ | EA ปฏิเสธจะรัน (DLL · ล็อกบัญชี · หมดอายุ) — เป็นผลตรวจ ไม่ใช่ข้อผิดพลาด | ไม่คิดเงิน |
| รันได้แต่ไม่ออกไม้ | เริ่มทำงานปกติ แต่เงื่อนไขไม่เคยเข้าในหน้าต่างสั้นที่ใช้ตรวจ | ตรวจต่อด้วยหน้าต่างเต็ม |
| ตั้งค่าไม่ครบ | ปัญหาอยู่ฝั่งเรา — ข้อมูล สัญลักษณ์ หรือสภาพแวดล้อมยังไม่พร้อม | ไม่คิดเงิน แก้แล้วรันใหม่ |
คำตอบที่สามเพิ่งถูกแยกออกมาหลังรับงานจริง · โค้ดเขียนกรณีนี้ไว้ ตั้งแต่แรก แต่มันตัดสินจากตัวแปรที่เป็น “เท็จ” เสมอเมื่อไม่มีไม้ — ทางแยกนั้นจึงไปไม่ถึงเลยแม้แต่ครั้งเดียว และทุกเคสตกไปที่ “ตั้งค่าไม่ครบ · ปัญหาอยู่ฝั่งเรา” แล้วหยุดทั้งเคส · EA จริงตัวแรกที่เรารับมาเป็นระบบตัดกันของเส้นค่าเฉลี่ย 50/200 บน H1 ซึ่งไม่ตัดกันเลยใน 18 วัน — เรื่องปกติของระบบตามเทรนด์ทุกตัว · เครื่องมือกลับรายงานว่าเราตั้งค่าไม่ครบแล้วปฏิเสธงาน · แปลว่า เราจะปฏิเสธลูกค้าที่ระบบออกไม้ไม่บ่อย โดยโทษตัวเอง ทั้งที่ EA ไม่มีอะไรผิด
ถ้าส่งซอร์สโค้ดมา เราคอมไพล์เอง — และบอกไว้ในรายงานว่าเราคอมไพล์
ไฟล์ .ex5 คือไบนารีที่อ่านไม่ได้ · ถ้าลูกค้าส่ง .mq5 มาแทน เราตรวจตัวโค้ดได้ด้วย และ คอมไพล์เองในกล่องทราย จึงไม่ติดปัญหาไฟล์ประกอบที่ผู้ขายลืมแนบ — ซึ่งเป็นสาเหตุที่ฆ่าไฟล์กล่องดำทั้ง 59 ไฟล์ข้างบน
แต่ไบนารีที่เราคอมไพล์เอง ไม่ใช่ไบนารีที่ผู้ขายแจก · ถ้าผู้ขายคอมไพล์ด้วยเวอร์ชันอื่น หรือมีโค้ดที่ไม่ได้ให้มา ผลอาจต่างกัน · รายงานจึงบันทึกไว้เสมอว่าไบต์ชุดไหนถูกทดสอบ พร้อม SHA-256 ของทั้งซอร์สและไบนารี · ถ้ามีข้อโต้แย้งในอีกหกเดือน นี่คือสิ่งเดียวที่ตอบได้ว่าเราตรวจไฟล์ตัวไหน
และก่อนถึงด่าน 0 ทุกครั้ง เราตรวจว่าไฟล์ที่ได้รับครบไบต์หรือไม่ · อีเมลกับแชทบล็อกไฟล์ที่รันได้ คนจึงเปลี่ยนนามสกุลเป็น .txt เพื่อให้ส่งผ่าน — บางช่องทางจะไปแก้ท้ายบรรทัด ทำให้ไฟล์โตขึ้นราว 0.4% โดยที่หัวไฟล์ยังอ่านว่า “EX5” เหมือนเดิมทุกประการ · MT5 จะโหลดไม่ขึ้น และอาการเหมือนกันเป๊ะกับ EA ที่ถูกล็อกไลเซนส์ · เราแยกสองอย่างนี้ด้วยสัดส่วนไบต์ขึ้นบรรทัดที่มีตัวนำหน้า (ไฟล์ปกติ 0.3–0.6% · ไฟล์ที่เสีย 100.0% — วัดจากไฟล์จริง 59 ไฟล์ ไม่มีช่วงคาบเกี่ยว) · ถ้าเสียจากการส่ง เราบอกให้ส่งใหม่ ไม่ใช่รายงานว่า EA คุณมีปัญหา
ตัวอย่างจริง — เราตรวจระบบที่ดีที่สุดของเราเอง
DeskTrend_H4 คือ EA ตัวเดียวจากที่เราเขียนมาทั้งหมด ที่เคยผ่าน walk-forward 13.7 ปี (นอกกลุ่ม PF 1.39 · กวาดพารามิเตอร์ 27 ชุด กำไรทุกชุด · ดรอว์ดาวน์ 7.4%) · เช็คลิสต์มาตรฐานให้ใบผ่านเต็มใบ
| ด่าน | ผล | ตัวเลข |
|---|---|---|
| ① ขอบที่มองเห็นได้ | ยังตัดสินไม่ได้ | กำไร 7.33$/ไม้ · พื้นที่มองเห็นได้ 14.09$ → ข้อมูลยังแยกจากโชคไม่ได้ |
| ② การกระจายตามเวลา | ไม่ผ่าน | บวก 8/14 ปี · ปีที่ดีที่สุด = 45.6% ของสุทธิ |
| ③ เกณฑ์ที่ถูกต้อง | ผ่าน | ชนะเกณฑ์ความเสี่ยงเท่ากัน +4.98$ · ดรอว์ดาวน์ดีกว่าครึ่ง |
| ④ ตัวควบคุมที่จับคู่ | ไม่ผ่าน | อยู่เปอร์เซ็นไทล์ 78.2 (ต้อง 95) |
| ⑤ หักค่าการค้นหา | ไม่ผ่าน | เกณฑ์หลังหัก 12.92$ vs วัดได้ 7.33$ |
| ⑥ ความไวต่อต้นทุน | ผ่าน | ยังเป็นบวกที่ต้นทุน +1.00$/ไม้ · PF 1.256 |
| ⑦ การกระจุกตัว | ไม่ผ่าน | ไม้ท็อป 10 = 142.4% ของกำไรสุทธิ → อีก 280 ไม้รวมกันขาดทุน |
⚑ ด่านที่หนักที่สุดคือด่านแรก — กำไรเฉลี่ย 7.33$ ต่อไม้ ขณะที่ขอบเล็กสุดที่ข้อมูล 290 ไม้มองเห็นได้คือ 14.09$ · แปลว่า “ระบบเดียวที่ผ่าน walk-forward ของเรา” ยังไม่มีขอบที่แยกออกจากโชคได้ ที่จำนวนไม้เท่านี้ — ต้องมีถึง 1,073 ไม้ ถึงจะยืนยันขอบขนาดที่วัดได้
กำไรรายปี
| ปี | ไม้ | สุทธิ |
|---|---|---|
| 2013 | 11 | -149.93$ |
| 2014 | 18 | -2.92$ |
| 2015 | 19 | +62.97$ |
| 2016 | 22 | -31.18$ |
| 2017 | 23 | +110.58$ |
| 2018 | 26 | +76.56$ |
| 2019 | 28 | +243.59$ |
| 2020 | 24 | +286.13$ |
| 2021 | 16 | -105.77$ |
| 2022 | 23 | -41.50$ |
| 2023 | 20 | +676.16$ |
| 2024 | 21 | +348.43$ |
| 2025 | 23 | +968.31$ |
| 2026 | 16 | -316.61$ |
ปีที่ 2023–2025 รวมกันคิดเป็น 94% ของกำไรทั้งหมด · 6 ใน 14 ปีขาดทุน · และปี 2026 ถึงตอนนี้ติดลบ · เช็คลิสต์มาตรฐานไม่มีข้อไหนจับเรื่องนี้ได้เลย
เกณฑ์มีสองนิยาม และเราเคยเผยแพร่ไปนิยามเดียว
| นิยาม | ถามว่าอะไร | ผล |
|---|---|---|
| ขนาดเท่ากัน อยู่ในตลาดตลอด | ใช้กฎขนาดเดียวกันแต่ไม่เคยออกจากตลาด | แพ้ 2,602$ |
| ความเสี่ยงเท่ากัน | สเกลให้ความผันผวนของเส้นทุนรายวันเท่ากัน | เสมอ +4.98$ · ดรอว์ดาวน์ดีกว่าครึ่ง |
ต่างกันมากเพราะระบบอยู่ในตลาดแค่ 21.5% ของเวลา · นิยามแรกลงโทษระบบที่แบนอยู่เป็นส่วนใหญ่ นิยามที่สองไม่ลงโทษ · ทั้งคู่ถูกต้อง และการเลือกนิยามเดียวแล้วไม่บอกว่ามีอีกนิยาม คือการเลือกคำตอบ ไม่ใช่การวัด — เราทำแบบนั้นไปแล้วครั้งหนึ่ง และแก้ไว้ที่นี่
walk-forward แบบขยับกรอบ — รันจบสายแล้ว และนี่คือหน้าตาของ curve-fit
MT5 มีโหมด Forward ในตัว แต่มันแบ่งข้อมูลครั้งเดียวที่วันเดียว ซึ่งตอบได้แค่ว่า “ชุดค่านี้รอดท่อนสุดท้ายไหม” — เป็นการโยนเหรียญหนึ่งครั้ง · เราจึงคุมหน้าต่างเองจากข้างนอก: ฟิตบนกรอบหนึ่ง ทดสอบบนกรอบถัดไปที่มันไม่เคยเห็น แล้วขยับกรอบ ทำซ้ำ
รอบพิสูจน์: ทอง 3 ปี · ทิกจริง 146,482,984 ทิก · ไม่มีชั่วโมงขาดเลย · ใช้เวลา 30 นาที
| หน้าต่าง | ฟิตบน | ทดสอบบน | ชุดที่ชนะ | ในกลุ่ม | นอกกลุ่ม |
|---|---|---|---|---|---|
| 0 | 2022-01 → 2023-01 | 2023-01 → 2023-07 | 15 / 20 | +193$ | −128$ |
| 1 | 2022-07 → 2023-07 | 2023-07 → 2024-01 | 15 / 20 | +638$ | −660$ |
| 2 | 2023-01 → 2024-01 | 2024-01 → 2024-07 | 5 / 60 | −191$ | −268$ |
| 3 | 2023-07 → 2024-07 | 2024-07 → 2025-01 | 20 / 60 | −251$ | +23$ |
อ่านสองบรรทัดนี้ก็พอ — ในกลุ่มเฉลี่ย +97$ นอกกลุ่มเฉลี่ย −258$ · เป็นบวก 1 จาก 4 หน้าต่าง
แต่ตัวเลขที่บอกอะไรมากที่สุดไม่ใช่กำไร · ชุดค่าที่ชนะเปลี่ยนไป 3 แบบ ใน 4 หน้าต่าง (15/20 → 15/20 → 5/60 → 20/60) · ถ้าพารามิเตอร์ที่ดีที่สุดกระโดดไปมาแบบนี้ แปลว่ากริดกำลังจับเสียงรบกวน ไม่ใช่โครงสร้าง — และค่าที่ “ดีที่สุด” ของวันนี้ก็ไม่มีเหตุผลจะดีที่สุดในปีหน้า นี่คือลายเซ็นของ curve-fit ที่การแบ่งข้อมูลครั้งเดียวมองไม่เห็น
EA ที่ใช้ทดสอบคือ MA-cross ธรรมดาที่เราเขียนเองเพื่อพิสูจน์สาย ผลลบจึงเป็นสิ่งที่คาดไว้ · สิ่งที่พิสูจน์คือเครื่องมือ ไม่ใช่กลยุทธ์
ของแถมที่สำคัญกว่าที่คิด: เรารู้ N จริง
เราเดินกริดเอง ไม่พึ่งโหมด optimisation ของ MT5 → รอบนี้ลองไปทั้งหมด 32 ชุด (8 ชุด × 4 หน้าต่าง) ซึ่งเป็นตัวเลขที่นับได้ ไม่ใช่ตัวเลข ที่ต้องเชื่อคำบอก · ด่าน ⑤ จึงยกเกณฑ์เป็น √(2 ln 32) = 2.63 เท่าของค่าคลาด ได้อย่างมีที่มา · ข้อนี้สำคัญเพราะ N เป็นข้อที่ลูกค้าตอบต่ำกว่าความจริงเสมอ ไม่ใช่เพราะตั้งใจโกหก แต่เพราะไม่มีใครนับตอนลองผิดลองถูก
⚠ ข้อจำกัดที่ต้องอ่านคู่กันเสมอ — เราลบสิ่งที่ผู้ขายเคยเห็นออกไม่ได้ · ถ้าเขาจูน EA บนข้อมูลปี 2015–2025 แล้วเราแบ่ง “นอกกลุ่ม” ตามวันที่ในช่วงนั้น มันไม่ใช่นอกกลุ่มจริง เพราะสายตาเขาเห็นข้อมูลนั้นไปแล้วตอนออกแบบ · นอกกลุ่มที่ปลอมไม่ได้มีอย่างเดียวคือข้อมูลที่ยังไม่เกิดตอน EA ถูกสร้าง · walk-forward บนอดีตจึงเป็น ขอบล่างของการจับ curve-fit ไม่ใช่ใบรับรองความทนทาน — ผ่านแล้วแปลว่า “ยังจับไม่ได้” ไม่ได้แปลว่า “ไม่มี”
การซ้อมครั้งนี้จับบั๊กในเครื่องมือตรวจของเราเอง
รอบแรกที่รัน ตัวควบคุมสุ่มให้กำไร 206,876$ เทียบระบบ 2,125$ — เป็นไปไม่ได้ · สาเหตุคือการแปลงหน่วยเวลาผิดหนึ่งบรรทัด ทำให้แกนเวลาหดลง 1,000 เท่า และช่วงถือกินข้อมูลหลายปี
ถ้าไม่ซ้อมกับระบบที่เรารู้จักดีที่สุดก่อน บั๊กนี้จะไปโผล่ในรายงานฉบับแรก ที่ลูกค้าจ่ายเงิน — และมันจะทำให้ EA ทุกตัวดูเหมือน “แพ้การสุ่มขาดลอย” ซึ่งผิดทั้งหมด · เราจับได้เพราะตัวเลขมันเป็นไปไม่ได้ ไม่ใช่เพราะโค้ดฟ้อง นี่คือเหตุผลที่การซ้อมกับของที่เรารู้คำตอบอยู่แล้ว เป็นขั้นตอนที่ข้ามไม่ได้
และรอบล่าสุด เราจับบั๊กที่ไม่ทำให้อะไรพังเลย — ซึ่งอันตรายกว่า
ตรรกะของด่านทั้งเจ็ดเคยอยู่ในสองที่ · เส้นทางที่เริ่มจาก ไฟล์รายการไม้รันครบทุกด่าน ส่วนเส้นทางที่เริ่มจาก .ex5 ของลูกค้า — คือเส้นทางที่ลูกค้าจริงใช้ — ผ่านตัวเขียนรายงานคนละตัว ซึ่งไม่เคยคำนวณด่าน ① ③ ④ ⑤ เลย รวมถึงสองด่านที่เราติดป้ายบนหน้านี้เองว่าเป็นเหตุผลที่ควรจ้างเรา
ไม่มีอะไรพัง ไม่มี error ไม่มีคำเตือน · รายงานออกมาสวย มีคำตัดสิน มีตัวเลข — แค่ไม่มีสิ่งที่เราสัญญาไว้อยู่ในนั้น · บั๊กแบบล้มเสียงดังนั้นจับง่าย บั๊กที่ทำงานเรียบร้อยแล้วเงียบ ๆ ไม่ทำสิ่งที่ควรทำ คือแบบที่อยู่ได้เป็นปี · ตอนนี้ตรรกะเหลือชุดเดียว เกณฑ์ตัดสินเหลือสำเนาเดียว และมีเทสต์ที่ตกทันทีถ้าด่านไหนหายไปจากรายงาน หรือถ้ามีใครเขียนเกณฑ์ซ้ำในตัวเขียนรายงาน
เทสต์ตัวเดียวกันนั้นจับข้อที่สามได้ทันที
ตัวสรุปคิดเกณฑ์ของด่าน ① เองแยกจากตัวด่าน · ผลคือระบบของเราเองถูกพิมพ์ว่า “ไม่ผ่าน” ทั้งที่เนื้อความของด่านเดียวกันในรายงานฉบับเดียวกัน เขียนว่า “ยังบอกไม่ได้” · สองบรรทัดขัดกันเอง และฝั่งที่ผิด คือฝั่งที่กล่าวหาแรงเกินหลักฐาน · ตัวเลขบนหน้านี้จึงเปลี่ยนจาก “ผ่าน 1 จาก 5” เป็น “ผ่าน 2 · ไม่ผ่าน 4 · ยังตัดสินไม่ได้ 1 จาก 7” — ไม่ใช่เพราะผลดีขึ้น แต่เพราะคำตัดสินเดิมพูดเกินสิ่งที่ข้อมูลรองรับ
ข้อที่สี่: ตัวควบคุมที่หยาบเกินไปจะเข้าข้างระบบเสมอ
และข้อที่ห้า ซึ่งลูกค้าจริงเป็นคนทำให้เจอ — ไม่ใช่เทสต์ของเรา
ค่าถือข้ามคืนที่ลูกค้าแจ้งมาเป็น “ต่อล็อตต่อคืน” ถูกส่งเข้าสองที่ โดยไม่แปลงหน่วย · ฝั่งรายการไม้คิดต่อล็อตถูกต้อง แต่เส้นเกณฑ์ในด่าน ③ เป็นส่วนต่างราคาต่อหนึ่งออนซ์ — ทองต่างกัน 100 เท่า
ทิศของความผิดพลาดคือสิ่งที่ทำให้มันร้ายแรง: เกณฑ์ถูกคิดค่าถือเกินจริงร้อยเท่า → “ถือทองเฉย ๆ” ดูแย่กว่าความจริงมหาศาล → ระบบที่ควรตกด่าน ③ กลับได้ใบผ่าน · และด่าน ③ คือด่านที่เราตั้งขึ้นมา เพื่อจับเรื่องนี้โดยเฉพาะ หลังพบว่าระบบที่ดีที่สุดของเราเองแพ้การถือทอง ที่ความเสี่ยงเท่ากันอยู่ 3,464$ · ถ้าไม่จับได้ เราจะขายใบผ่าน ด้วยเครื่องมือที่สร้างขึ้นเพื่อไม่ให้ขายใบผ่าน · ตอนนี้แปลงหน่วยที่จุดเดียว และมีเทสต์ที่ตกทันทีถ้าขนาดของค่าถือฝั่งเกณฑ์ คลาดไปจากที่ควรเป็น
บั๊กสามข้อล่าสุด (ข้อนี้ · ทางแยก “รันได้แต่ไม่ออกไม้” ที่ไปไม่ถึง · และตัวอ่านไฟล์ที่ตัดสินว่าซอร์สคอมเมนต์ภาษาไทยเป็นไฟล์ไบนารี) ถูกเจอภายในชั่วโมงเดียวกัน ตอนรับไฟล์จริงมาตรวจครั้งแรก · ไม่มีข้อไหนทำให้อะไรพัง และไม่มีข้อไหนที่เทสต์เดิมจับได้ เพราะเทสต์เดิมง่ายกว่าของจริง — ตัวอย่างซอร์สในเทสต์เป็น ภาษาอังกฤษล้วน ทั้งที่ลูกค้าของเราเขียนคอมเมนต์เป็นภาษาไทยแทบทุกคน · เทสต์ที่ง่ายกว่าของจริง คือเทสต์ที่ไม่ได้ทดสอบอะไรเลย
ด่าน ④ สุ่มจุดเข้าโดยจับคู่ระยะถือให้เท่าของจริง · แต่ถ้าราคาอ้างอิงหยาบกว่า ระยะถือ — เช่นระบบถือ 50 วินาที แล้วเราวัดบนแท่ง 15 นาที — การสุ่มจะได้ผลต่างราคาเป็น ศูนย์ เกือบทุกรอบ ระบบจึงชนะตัวควบคุมโดยอัตโนมัติ ทั้งที่ไม่ได้เก่งอะไรเลย · ตอนนี้ด่านนี้จะปฏิเสธที่จะตัดสินเมื่อข้อมูลละเอียดไม่พอ และบอกไปตรง ๆ ว่าต้องใช้ข้อมูลละเอียดแค่ไหนถึงจะตัดสินได้
มาตรฐานสายสถิติ — สิ่งที่เพิ่มเข้ามา และสิ่งที่ยังไม่มี
คำถามจากคนที่อ่านรายงาน quant เป็น: เครื่องมือชุดนี้ผ่านเกณฑ์ที่ วงการยอมรับหรือยัง · ผมไล่ตรวจโค้ดของตัวเองแล้วเจอสิ่งที่ต้องรายงาน
PBO ถูกเขียนไว้ตั้งแต่ต้น เผยแพร่บนหน้าราคา แต่ไม่เคยถูกคำนวณเลยสักครั้ง
เป็นข้อบกพร่องประเภทเดียวกับที่เจอตอนเช้า — ฟังก์ชันมีอยู่ เทสต์ผ่าน คำโฆษณาเขียนไว้ แต่ไม่มีใครเรียกมัน · เหตุผลมีที่มา: PBO ต้องกิน ผลของ “ทุกชุดพารามิเตอร์” ไม่ใช่แค่ชุดที่ชนะ ซึ่งเราไม่เคยมี เพราะไม่เคยเดินกริดเอง · พอเปลี่ยนมาเดินกริดเองเพื่อแก้บั๊กอีกตัว อินพุตของมันก็เกิดขึ้นเป็นครั้งแรก
ด่าน ⑤ ตอนนี้มีหลักฐานสามชั้น และชั้นบนคว่ำชั้นล่างได้
เหตุผลที่ต้องเรียงแบบนี้: ชุดพารามิเตอร์ที่ใกล้กันให้ผลคล้ายกัน จำนวนการทดลองที่เป็นอิสระจริงจึงน้อยกว่า N มาก · √(2 ln N) มองไม่เห็นข้อนี้เพราะมันนับจำนวน ส่วนอีกสองตัววัดจากข้อมูลจริง
และตัวเลขที่ทำให้ต้องเขียนหัวข้อนี้: Monte Carlo แบบที่ทุกคนใช้ รายงานดรอว์ดาวน์ต่ำกว่าความจริง
| ชั้น | ถามว่า | ข้อจำกัด |
|---|---|---|
| White's Reality Check | ชุดที่ดีที่สุดดีเกินกว่าที่ “ลองเยอะ” จะอธิบายได้ไหม | ต้องมีผลของทุกชุด → มีเฉพาะระดับ walk-forward |
| PBO | การเลือกชุดที่ดีที่สุดบอกอะไรเกี่ยวกับอนาคตได้ไหม | เหมือนกัน |
| √(2 ln N) | ยกเกณฑ์ตามจำนวนครั้งที่ลอง | นับหัวอย่างเดียว → เข้มเกินไปเมื่อกริดละเอียด |
| ข้อมูลทดสอบ | สลับลำดับไม้ | สุ่มเป็นก้อน | ต่างกัน |
|---|---|---|---|
| ไม้เกาะกลุ่ม (เหมือนระบบตามเทรนด์) | DD p95 10.8% | 27.6% | +154% |
| ไม้เป็นอิสระต่อกันจริง | 8.1% | 10.4% | +29% |
Monte Carlo ที่สลับลำดับไม้ สมมติว่าไม้แต่ละไม้เป็นอิสระต่อกัน · ระบบตามเทรนด์มีไม้ชนะเกาะกลุ่มและไม้แพ้เกาะกลุ่ม การสลับจึงทำลายการเกาะกลุ่มนั้นทิ้ง และรายงานดรอว์ดาวน์ ต่ำกว่าความจริงถึงสองเท่าครึ่ง — ซึ่งเป็นทิศที่เข้าข้างระบบเสมอ · ตอนนี้รายงานพิมพ์สองค่าคู่กันทุกฉบับ พร้อมบอกเป็นเปอร์เซ็นต์ว่าสมมติฐานนั้นราคาเท่าไร (วิธีที่ใช้คือ stationary bootstrap — สุ่มเป็นก้อนที่ยาวตามการเกาะกลุ่มที่วัดได้จริง)
ผลจริงเมื่อเอา EA ทดสอบของเราเองเข้าเครื่องมือชุดใหม่
ทองสามปี ทิกจริง · เมทริกซ์ 36 เดือน × 7 ชุดพารามิเตอร์ · Reality Check p = 1.000 · PBO = 0.62
p = 1.000 ไม่ใช่ข้อผิดพลาด — มันคือค่าสูงสุดที่เป็นไปได้ และแปลว่าชุดที่ดีที่สุดยังทำได้ แย่กว่า สิ่งที่ความบังเอิญล้วน ๆ จะให้ได้แทบทุกรอบ · ตรงกับผล walk-forward ที่ชุดค่าที่ชนะกระโดดไปมา 3 แบบใน 4 หน้าต่าง — สองวิธีที่วัดคนละแกน ให้คำตอบเดียวกัน
Hansen's SPA — และตัวเลขที่ทำให้มันไม่ใช่ของเสริม
Reality Check มีจุดอ่อนที่ SPA แก้: มันสมมติว่าทุกชุดพารามิเตอร์ มีค่าเฉลี่ยจริงเป็นศูนย์ภายใต้สมมติฐานว่าง — รวมถึงชุดที่แย่อย่างเห็นได้ชัด · ชุดขยะเหล่านั้นก็แกว่งใน bootstrap และไปดันค่าสูงสุดของการกระจายว่างให้สูงขึ้น ผลคือยิ่งใส่ชุดขยะเข้าไปมาก ยิ่งปฏิเสธสมมติฐานว่างยากขึ้น ซึ่งกลับหัวโดยสิ้นเชิง
| กริดทดสอบ | Reality Check | Hansen's SPA |
|---|---|---|
| ชุดที่มีขอบจริง 1 + ขยะผันผวนสูง 30 ชุด | p = 0.999 | p = 0.004 |
| ชุดที่มีขอบจริง 1 + ขยะผันผวนสูง 60 ชุด | p = 1.000 | p = 0.003 |
| ชุดที่มีขอบจริง 1 + ขยะผันผวนสูง 120 ชุด | p = 1.000 | p = 0.000 |
| เสียงรบกวนล้วน (ไม่มีขอบจริงเลย) | p = 0.448 | p = 0.310 |
Reality Check มองไม่เห็นขอบที่มีอยู่จริงเลย ในสามแถวแรก ขณะที่ SPA จับได้ทุกครั้ง · และในแถวสุดท้ายทั้งคู่ไม่ปฏิเสธ — SPA จึง แรงขึ้น ไม่ใช่หลวมลง · กลไก: SPA ทำสถิติให้เป็นแบบ studentised (ชุดที่ผันผวนสูงไม่ได้เปรียบเพียงเพราะผันผวน) และ ตัดชุดที่แย่ชัดเจนออกจากการแข่งขัน ด้วยเกณฑ์ −√(2 ln ln n)
สิ่งที่ตัวเลขชุดนี้แปลว่า: ผู้ขายที่กวาดกริดใหญ่ ๆ ทำให้ Reality Check ตาบอดได้โดยไม่ต้องตั้งใจ — ยิ่งลองมาก ยิ่งมีชุดขยะมาก ยิ่งทำให้ การทดสอบผ่านง่ายขึ้น · เรารายงานทั้ง SPA และ RC คู่กัน และให้ SPA อยู่เหนือ RC ในการตัดสินด่าน ⑤
ADF / KPSS — “ขอบนี้เป็นค่าคงที่ หรือมันกำลังเลื่อน”
รายงานตรวจทุกฉบับเต็มไปด้วยค่าเฉลี่ย — กำไรเฉลี่ยต่อไม้ Sharpe อัตราชนะ · ตัวเลขเหล่านั้นมีความหมายก็ต่อเมื่อสิ่งที่มันเฉลี่ย เป็นค่าคงที่ที่มีอยู่จริง · ถ้าขอบดีมากในปี 2023 แล้วหายไปในปี 2025 “กำไรเฉลี่ย 7.33$ ต่อไม้” คือค่าเฉลี่ยของสองระบอบที่ไม่มีอันไหน เท่ากับค่านั้น
⚑ เราไม่เอา ADF ไปทดสอบ ราคา · ทุกคนรู้อยู่แล้วว่าราคาไม่นิ่ง และมันไม่ได้บอกอะไรเกี่ยวกับ EA เลย — การใส่ผลนั้นในรายงานคือพิธีกรรม ไม่ใช่หลักฐาน · เราทดสอบผลตอบแทนรายเดือนของระบบ ซึ่งเป็นสิ่งที่คำถามข้างบนพูดถึงจริง ๆ
และรายงานสองการทดสอบคู่กันเสมอ เพราะสมมติฐานว่างของมันตรงข้ามกัน (KPSS: นิ่ง · ADF: มีรากหน่วย) · การรายงานตัวเดียวทำให้ “ไม่ปฏิเสธ” ถูกอ่านเป็น “ยืนยันแล้ว” ซึ่งผิด · สองตัวคู่กันให้สี่กรณี และหนึ่งในนั้นคือ “ข้อมูลสั้นเกินกว่าจะบอกอะไรได้” ซึ่งเป็นคำตอบที่ซื่อสัตย์ที่สุด เมื่อ EA มีประวัติไม่กี่ปี
สิ่งที่ยังไม่มี และเราไม่แกล้งทำเป็นมี
- ยังไม่เคยตรวจ EA ของบุคคลที่สามจนจบสาย — ไฟล์กล่องดำ 59 ไฟล์ที่ซ้อมมา ติดด่าน 0 ทั้งหมด จึงไม่มีตัวไหนไปถึงด่าน ①–⑦ เลย · สายถูกพิสูจน์ด้วยไฟล์ที่เรารันได้เอง (ทิกจริง 3 ปี · 4 หน้าต่าง · 512 ไม้) แต่ “พร้อมทำ” กับ “เคยทำแล้ว” ไม่ใช่คำเดียวกัน และผมจะไม่พูดสลับกัน
- คลังทิกที่พร้อมใช้ทันทีมีเฉพาะทองคำ — สัญลักษณ์อื่นเครื่องมือรองรับครบ แต่ต้องดาวน์โหลดก่อน ราว 1–2 ชม. ต่อปีข้อมูล · บอกล่วงหน้าได้ ผมเริ่มก่อนถึงคิว
- นอกกลุ่มที่ปลอมไม่ได้ — เราลบสิ่งที่ผู้ขายเคยเห็นออกไม่ได้ · มีทางเดียวคือเฝ้าเดินหน้าจริงจากวันนี้ไป
- ตัวเลขผลกระทบราคาเป็นดอลลาร์ — จงใจไม่ทำ ดูเหตุผลข้างล่าง
- รับงานทีละเคส — ตัวทดสอบรันพร้อมกันสองงานบนเทอร์มินัลเดียวไม่ได้ · งานที่สองจะได้ผลว่างซึ่งหน้าตาเหมือน EA ถูกล็อก · กระทบคิว ไม่กระทบความถูกต้องของรายงาน
⚑ รายการนี้อยู่บนหน้าขายของเราเอง โดยตั้งใจ · บริการนี้ขายคำตัดสินที่ บอกขอบเขตของตัวเองได้ — ถ้าเราปิดข้อจำกัดของตัวเองไว้ เราก็ไม่ต่างจาก backtest ที่โชว์เฉพาะช่วงที่สวย ซึ่งเป็นสิ่งที่บริการนี้ มีไว้จับพอดี
ความจุ — “ระบบนี้รับเงินได้เท่าไรก่อนที่มันจะพัง”
ความจุไม่ใช่คุณสมบัติของกลยุทธ์เพียงอย่างเดียว มันคือคุณสมบัติของ (กลยุทธ์ × ขนาด) และมันแสดงตัวออกมาเป็นต้นทุนเสมอ — เทรดใหญ่ขึ้น ฟิลแย่ลง ต้นทุนต่อไม้สูงขึ้น · เราจึงไม่ตั้งเป็นด่านใหม่ แต่ใส่ไว้ในด่าน ⑥ เพราะมันคือคำถามเดียวกันมองจากอีกด้าน
ด่าน ⑥ บอกว่า “ต้นทุนเท่าไรระบบตาย” · ความจุบอกว่า “ขนาดเท่าไรถึงไปถึงต้นทุนนั้น”
ประกอบกันได้ตัวเลขเดียวที่ลูกค้าใช้ตัดสินใจได้จริง — ขนาดใหญ่ที่สุดที่ระบบนี้ยังมีขอบเหลืออยู่ · สิ่งที่รายงานเพิ่มเข้ามา: จำนวนไม้ต่อปี · มูลค่าที่หมุนผ่านตลาดต่อปีเทียบกับเงินทุน · สัดส่วนเวลาที่มีสถานะเปิดจริง · ต้นทุนที่เพิ่มทุก 0.10$ ต่อไม้ กินกำไรปีละเท่าไร (ตัวเลขที่ทำให้เห็นทันทีว่าความถี่แลกมาด้วยอะไร) · และงบต้นทุนที่เหลือก่อนระบบตาย
เส้นที่เราไม่ข้าม: ไม่ให้ตัวเลขผลกระทบราคาเป็นดอลลาร์
สูตรรากที่สองที่ใช้กันทั่วไป (impact ≈ Y·σ·√(Q/V)) ต้องใช้ค่าคงที่ Y ที่วัดจากข้อมูลของเราไม่ได้ — มันมาจากงานวิจัยหุ้นสหรัฐ และการยืมมาใช้กับ CFD ทองคือการเดาที่ดูเหมือนการวัด · สิ่งที่เราบอกได้จริงคือ ที่ขนาดกี่เท่าของปัจจุบัน ออเดอร์เริ่มใหญ่ เมื่อเทียบกับปริมาณที่ข้อมูลของเราเห็น แล้วบอกตรง ๆ ว่าเกินนั้น ต้องไปขอข้อมูลฟิลจริงจากโบรก · ตัวเลขที่มั่นใจแต่ผิด แย่กว่าการบอกว่าวัดไม่ได้
⚠ และเราพิมพ์กำกับทุกครั้งว่าตัวหารคือฟีดของผู้ให้สภาพคล่องชุดหนึ่ง ไม่ใช่ปริมาณของตลาดทองทั้งโลก · หน่วยของปริมาณเราอนุมานเอา ไม่ได้ยืนยัน → ตัวเลขที่เป็นเปอร์เซ็นต์จึงมีสมมติฐานติดอยู่ ส่วนตัวเลขที่เป็น “กี่เท่าของขนาดปัจจุบัน” ไม่ขึ้นกับหน่วย จึงเป็นตัวหลักที่เรารายงาน
บั๊กหน่วยที่จับได้ระหว่างเขียนข้อนี้
ด่าน ⑥ ลบ ดอลลาร์ ออกจากกำไรต่อไม้ แต่มันเคยถูกป้อน ตัวคูณ (1.0 · 1.5 · 2.0) เข้าไป มันจึงลบ 1.00$ 1.50$ ซึ่งไม่เกี่ยวกับต้นทุนที่ลูกค้าแจ้งเลย แล้วผลนั้นถูกเอาไปคูณต้นทุนอีกที · ทั้งสองเป็นตัวเลขเหมือนกัน จึงไม่มีอะไรฟ้อง และคำตอบก็ดูสมเหตุสมผลตลอด — เป็นบั๊กชนิดเดียวกับที่จับได้สามครั้งแล้ววันนี้: ทำงานเรียบร้อย แต่ตอบคนละคำถาม
นโยบายการเปิดเผยชื่อ
ผลตรวจที่เผยแพร่บนเว็บนี้ ไม่ระบุชื่อ EA ของคนอื่นเลย · ไฟล์ทั้ง 59 ตัวข้างบนปรากฏเป็น EA-01…EA-59 และจะเป็นแบบนั้นเสมอ
เหตุผลไม่ใช่ความเกรงใจ · ผลลบที่พิมพ์ใต้ชื่อสินค้าของคนอื่น คือการกล่าวหาสาธารณะ ด้วยหลักฐานที่เก็บในสภาพแวดล้อม และค่าตั้งของเราเอง — และคุณค่าต่อคนอ่านคือ กลไกที่ล้ม กับสิ่งที่ต้องไปถามผู้ขาย ไม่ใช่ยี่ห้อที่ล้ม · ชื่อจริงอยู่ในรายงานฉบับที่ ส่งให้ผู้ว่าจ้างเท่านั้น
แต่ข้อนี้ไม่ใช้กับระบบของเราเอง
EA ของเราเองที่ตายที่ walk-forward ถูกเผยแพร่พร้อมชื่อ พร้อมตัวเลข และพร้อมเหตุผลทุกตัว — เพราะการยอมเปิดความล้มเหลวของตัวเอง คือฐานความน่าเชื่อถือทั้งหมดของบริการนี้ · เราปิดชื่อของคนอื่น ไม่ใช่ของตัวเอง
แปลว่าถ้าคุณส่ง EA มาให้ตรวจ ชื่อระบบของคุณจะไม่ขึ้นเว็บนี้ ไม่ว่าผลจะออกมาอย่างไร เว้นแต่คุณจะขอเองเป็นลายลักษณ์อักษร
สิ่งที่ด่านเหล่านี้ไม่ได้บอก
- ไม่ได้บอกว่าระบบจะกำไรในอนาคต — ไม่มีการทดสอบไหนบอกได้ · มันบอกว่าผลในอดีตแยกออกจากโชคได้หรือไม่ ซึ่งเป็นคนละคำถาม และเป็นคำถามเดียวที่ข้อมูลตอบได้
- ตรวจรายการไม้ ไม่ได้ตรวจซอร์สโค้ด — ถ้าระบบมีตรรกะที่พังในสภาวะ ที่ไม่เคยเกิดในข้อมูล ด่านเหล่านี้มองไม่เห็น
- ข้อมูลที่ใช้ไม่ใช่ฟีดของโบรกคุณ — ผลที่ได้คือตัวชี้วัดคุณภาพของระบบ ไม่ใช่คำสัญญาว่าเปิดกับโบรกของคุณแล้วจะได้ตัวเลขเท่านี้
- ตัวเลข “ลองไปกี่ชุด” มาจากคำตอบของเจ้าของระบบ — และเป็นข้อที่คนมักตอบต่ำกว่าความจริง · ถ้าค่าจริงสูงกว่าที่แจ้ง คำตัดสินจะแย่ลง ไม่ใช่ดีขึ้น
อยากให้ตรวจระบบของคุณด้วยด่านชุดนี้ · ดูขอบเขตงานและราคา