A3 · screening ทั้งกอง
▶ clip: https://youtu.be/QKjcPLoyJP0
จบบทนี้แล้วทำได้:
- ตัด EA บนกระดาษก่อน run โดยเรียงการตรวจจากถูกที่สุดไปแพงที่สุด
- เขียน config กองที่ run ทั้งกองใน queue เดียว พร้อม criteria S1–S6 และ k ในหัว file
- ทำครบสี่ขั้นเมื่อฆ่างานที่ equity curve ดิ่ง และรู้ว่าทำไมแต่ละขั้นขาดไม่ได้
- ติดป้าย ผ่าน · ตก · ยังตัดสินไม่ได้ จากรายงาน และรู้ว่าด่านถัดไปหลังผ่านรอบแรกคืออะไร
ต้องมีก่อน: A1 (prereg · Šidák · ledger) · A2 (intake) · S5 (History Quality · DD แถว Relative) · S7 (ตัดสินผลรอบแรก)
1 · ตัดบนกระดาษก่อนเสียเวลา run

ทุกงานที่ run กินเวลาใน queue ของ terminal ตัวเดียวกัน ของที่ตัดได้โดยไม่ต้อง run ควรตัดก่อน
ใน Claude Code มี skill /ea-analyze <path> ทำสี่ขั้นบนกระดาษ: triage → decode → G1 (cost) → G2 (โครงสร้าง) ได้รายงานใน research\2-decode\
gate เต็มมี G1 ถึง G6
| gate | ครอบเรื่อง |
|---|---|
| G1 | cost |
| G2 | โครงสร้าง |
| G3–G6 | ข้อมูล · t ≥ 2 บน edge สุทธิ (G4) · กระดานหก · ความเสถียร |
| หลังผ่าน G6 | ค่อยคิด lot และ risk |
ทำไม lot/risk มาท้ายสุด: ถ้าไม่มี edge จะตั้ง risk เท่าไรก็ไม่มีความหมาย risk ที่ใหญ่ขึ้นแค่ทำให้ขาดทุนเร็วขึ้น
case: EA ที่ขายว่าเป็น "AI news sentiment"
ปิด case ได้โดยไม่ต้อง run เลย เพราะสามอย่างนี้เห็นได้จาก code
| ดูอะไร | เจออะไร | แปลว่า |
|---|---|---|
| "AI" ทำงานด้วยอะไร | MathRand() |
ตัวเลขสุ่ม ไม่ใช่การอ่านข่าว |
ค้นหา WebRequest |
ไม่เจอเลยสักบรรทัด | EA ไม่ได้ดึงข้อมูลข่าวจากภายนอก |
| เงื่อนไขฝั่ง sell | ต้องการค่าเกิน 0.90 แต่ค่าที่ได้สูงสุดแค่ 0.85 | ฝั่ง sell ไม่มีทางเกิด |
2 · ลำดับตรวจที่ถูกที่สุดก่อน

เรียงจากถูกที่สุดไปแพงที่สุด ตัวไหนตกที่ข้อต้น ๆ ไม่ต้องไปข้อถัดไป
| # | detector | ทำอะไร | EA ที่ถูกจับ |
|---|---|---|---|
| 1 | ค้นหาการเรียกข้อมูลภายนอก | ค้นใน source หา WebRequest |
"AI news sentiment" (หัวข้อ 1) |
| 2 | win% เทียบ 1 / (1 + payoff) |
win% ต้องเกินจุดคุ้มทุนของรูปทรง TP/SL ของตัวเอง | — |
| 3 | stop/trail ที่สูงเกิน 1 ไปมาก · profit factor เข้าหา 1 เมื่อ cost = spread ไหม | ดูว่ากำไรหายหมดเมื่อคิด spread หรือเปล่า | HeavenHedge |
| 4 | นับจำนวน setup | นับก่อน tune | Elliott Wave |
| 5 | ด่าน era เก่า | run IS ปีเก่า | SwingBreakerV2 (หัวข้อ 4) |
ข้อ 2 คืออะไร: 1 / (1 + payoff) คือ win% ที่ทำให้เสมอตัวพอดีเมื่อ trade ชนะได้ payoff เท่าของที่แพ้ เช่น payoff 1 ต้องชนะเกิน 50% ถ้า EA ชนะ 80% แต่ payoff ต่ำจนจุดคุ้มทุนอยู่ที่ 85% แปลว่าชนะบ่อยแต่ขาดทุน (เกณฑ์นี้คือ S6)
ข้อ 3 · HeavenHedge: ขาดทุนเท่ากับจำนวน trade × spread พอดี 19,808 trade × $0.50 ล้างทุน $10,000 ใน 40 วัน แปลว่าก่อนหัก spread กลยุทธ์ไม่ได้อะไรเลย กำไรขั้นต้นเป็นศูนย์ ส่วนที่หายไปคือต้นทุนล้วน ๆ
ข้อ 4 · Elliott Wave: มี setup แค่ 2 ครั้งใน 19 เดือน ต้องนับก่อน tune ไม่งั้นเสียเวลา tune ของที่ไม่มีวันมีตัวอย่างพอ (เทียบกับ power ใน A1: 2 ตัวอย่างไม่พอแยกอะไรได้เลย)
3 · run ทั้งกองใน queue เดียว

กองที่ผ่านกระดาษ run ใน queue เดียวด้วย config กอง: ทุก EA ใช้ preset ร่วมกัน V0.01/default (ที่ intake สร้างให้) และ set_dir ชี้ folder set ทั้งกอง ไม่ใช่ folder ของ EA ตัวเดียว (ตัวอย่างตาม path ที่ intake สร้าง)
set_dir: research/1-screen/set
only_presets: ['V0.01/default']
equity curve ดิ่ง → กด Stop แล้วทำครบสี่ขั้น
ระหว่าง run ถ้าเห็น equity curve ไหลลงเป็นเส้นเดียวต่อเนื่องหลายเดือน ไม่ต้องรอให้จบ
| ขั้น | ทำ | ถ้าข้าม |
|---|---|---|
| 1 | จดว่า "ตกด้วยตา" | คนอ่านทีหลังเข้าใจว่ามีตัวเลขที่วัดแล้ว ทั้งที่ไม่มีรายงาน ไม่มี E[R] ไม่มี CI |
| 2 | ปิด terminal ไม่ใช่แค่กด Stop | queue รอ file รายงานต่อจนครบ run_timeout_sec งานถัดไปไม่ขึ้น |
| 3 | ลบ folder set ของตัวนั้น (set\<slug>\) |
งานกลับเข้า queue เงียบ ๆ รอบถัดไป (ดูข้างล่าง) |
| 4 | ลบจาก sources พร้อมจด sha ลง _rejected.json |
intake รับกลับเข้ามาเงียบ ๆ (A2) |
| + | ลด k ของ Šidák | arm ที่ถูกฆ่าก่อนมีตัวเลขไม่ใช่การทดสอบที่นับ (A1) |
ทำไมต้องลบ set ด้วย: งานที่ถูกฆ่าไม่ทิ้งรายงาน queue จึงคิดว่างานนั้นยังไม่เสร็จ แล้วปล่อยกลับเข้า queue เงียบ ๆ ในรอบถัดไป config กองใช้ชื่อ preset ร่วมกันทั้งกอง จึงถอดทีละตัวออกจาก only_presets ไม่ได้ ทางกันเดียวคือลบ .set ของตัวนั้น
ตัวที่ตกรอบแรกโดยมีรายงาน ไม่ต้องลบ
.setเพราะskip_existing: trueใน config เห็นรายงานแล้วข้ามให้เอง ตัวที่ต้องลบคือตัวที่ถูกฆ่ากลางคันเท่านั้น
4 · ผ่านรอบแรกแล้ว ไปด่าน era เก่าทันที

ผ่านรอบแรกแปลว่า "น่าลงแรงต่อ" เท่านั้น ยังไม่ใช่หลักฐานว่ามี edge
EA ที่ใช้ SL เป็นระยะ USD คงที่ 6 ตัว ผ่าน IS 2026 แต่ตกช่วง 2022–2024 ทุกตัว
ตัวอย่าง SwingBreakerV2 (E[R] และ CI 95% ต่อ trade)
| test period | E[R] | CI 95% | ผล |
|---|---|---|---|
| IS 2026 | +0.330 | +0.234 ถึง +0.415 | ผ่าน |
| IS 2024 บน Robo | −0.000 | −0.076 ถึง +0.072 | ปิด case |
อ่านกราฟ: แท่ง IS 2026 อยู่ขวาของเส้นศูนย์ทั้งแท่ง แท่ง IS 2024 คร่อมศูนย์พอดี edge ที่เห็นในปี 2026 หายไปทั้งหมดเมื่อย้อนไปสองปี
ทำไมเป็นแบบนี้: ทองปี 2026 เคลื่อนที่เร็วกว่าเดิมหลายเท่า SL ระยะ USD คงที่ที่ดูดีในปีนี้ เมื่อเทียบกับการเคลื่อนไหวของราคาในปีก่อน จึงเป็นระยะที่กว้างหรือแคบต่างไปมาก พูดอีกแบบคือเป็นคนละกลยุทธ์กับปีก่อน
ด่านถัดไปหลังผ่านรอบแรกจึงต้องเป็น IS period ปีเก่าบน broker ชั้น 1 ทันที ก่อนลงแรง tune หรือ clone

tab สถานะกลยุทธ์ ของ kit ที่เพิ่งแตก: กล่องขั้น 0 intake → 9 evaluate (รวม 5R robustness) บอกจำนวน EA ที่อยู่แต่ละขั้น · ตอนนี้มีตัวเดียวคือ LAB_MACROSS V1.00 ค้างที่ขั้น 3 prereg พร้อมบรรทัด "ขั้นต่อไป" และหลักฐาน bt/config.yaml · แถบ 0–9 ใต้ชื่อ EA ระบายสีถึงขั้นที่ผ่านแล้ว ขั้นหลังจากนั้นยังเป็นสีเทา
Lab · กอง 10 EA จากกระดาษถึง S1–S6

เป้าหมาย: ติดป้าย ผ่าน · ตก · ยังตัดสินไม่ได้ ให้ EA ทุกตัว พร้อมเหตุผล รายงานผู้สอน run ไว้ล่วงหน้าแล้วใน test period ที่ใช้ไปแล้ว คุณไม่ต้องกด run
ขั้นที่ 1 · แยกถัง
bt\ea-bt.exe intake --src <folder กอง> --dry-run
จดว่าแต่ละตัวตกถังไหน: ซ้ำ · MT4 · ไม่ใช่ EA · พร้อมเข้า queue
ขั้นที่ 2 · ตัดบนกระดาษทีละตัว
/ea-analyze <path>
(ใน Claude Code) หรือทำมือตามลำดับในหัวข้อ 2 · จดเหตุผลที่ตัดทุกตัว
ขั้นที่ 3 · เขียน config กอง
copy bt\config.yaml เป็น file ใหม่ แล้วแก้ key เหล่านี้
| key | ค่า |
|---|---|
set_dir |
folder set ทั้งกอง |
only_presets |
['V0.01/default'] |
model |
4 (every tick based on real ticks) |
date_from / date_to |
test period ตามที่ผู้สอนกำหนด · ได้จาก is_oos ห้ามพิมพ์เอง |
backtest_root |
ใต้ research/4-backtest/_lab/ |
หัว file เขียน criteria S1–S6 กับ k ก่อน → หลัง (k เพิ่มเท่ากับจำนวน EA ที่จะ run เพราะ EA ละหนึ่งงาน)
ขั้นที่ 4 · dry-run
bt\ea-bt.exe run --config <file> --dry-run
จำนวนงานต้องเท่ากับจำนวน EA ที่เหลือจากกระดาษ ถ้าไม่เท่า แปลว่า set_dir หรือ only_presets ผิด หรือมี .set ของตัวที่ตัดไปแล้วค้างอยู่
ขั้นที่ 5 · ตัดสินจากรายงาน
ไม่มีคำสั่งเดียวที่คิด S1–S6 ครบ แต่ละเกณฑ์มีทางของมัน ตัวเลขเกณฑ์มาจาก docs\ea-screen-criteria.md ใน kit (เป็นกติกาของทีม ไม่ใช่กฎธรรมชาติ)
| เกณฑ์ | ผ่านเมื่อ | อ่านจาก |
|---|---|---|
| S1 ข้อมูลใช้ได้ | History Quality ≥ 90% | บรรทัด History Quality ใน .htm |
| S2 trade กระจายพอ | วันที่มี trade ≥ 10 วัน และ ≥ 10% ของวันที่ตลาดเปิด | นับเอง (ไม่มีคำสั่ง) |
| S3 edge | E[R] > 0 และ CI ล่าง > 0 | bt\ea-bt.exe mc <รายงาน.htm> --daily |
| S4 ไม่พึ่งหางเดียว | ตัด 3 trade กำไรสูงสุดแล้วยังบวก | ตัดเองด้วยมือ (ไม่มีคำสั่ง) |
| S5 ความเสี่ยง | Equity Drawdown Relative ≤ 30% | แถว Relative ใน .htm |
| S6 เกินจุดคุ้มทุนของรูปทรง | win% > need% | bt\ea-bt.exe verdict <folder ผล> column win% กับ need% |

verdict ใน tab เครื่องมือวิเคราะห์ › อ่านผล / ตัดสินใจ ชี้ที่รายงาน lab ของ Standard (lab\reports\tick-quality\Robo): S6 อ่านจาก ชนะ% 45.7 เทียบ ต้องชนะ% 39.3 · column ผล ขึ้น PASS เพราะ t สุทธิ 2.05 เกินเส้นตายตัว 2.00 (หัว chart เขียนไว้) ไม่ใช่เส้น Šidák จาก ledger ของคุณ
ป้ายผลมีสามแบบ ไม่ใช่สอง (จาก docs\ea-screen-criteria.md)
| ป้าย | เมื่อไร |
|---|---|
| ผ่าน | ครบ S1–S6 |
| ตก | ตก S5 · หรือ E[R] ≤ 0 · หรือตก S4 |
| ยังตัดสินไม่ได้ | E[R] > 0 แต่ CI คร่อมศูนย์ · หรือตก S2 — ต้อง run test period เพิ่มถึงจะรู้ |
ด่านผ่าน: ทุก EA มีป้าย 1 ใน 3 พร้อมเกณฑ์ที่ตก · ทุกตัวที่ตัดบนกระดาษมีเหตุผล · k ลดตาม arm ที่ถูกฆ่า
กับดักสามข้อ
- อ่าน DD จากแถว Maximal ซึ่งต่ำกว่าความจริงบนเส้นที่ compounding (S5)
- นับ trade แทนวันที่มี trade อย่าง Alpha-Scalper ที่มี 696 trade ใน 2 วัน — นั่นคือสองเหตุการณ์ ไม่ใช่ 696 ตัวอย่าง
- column
resultของverdictใช้เส้น t 2.00 เสมอ ไม่ใช่ป้าย S1–S6 และไม่ใช่เส้น Šidák จาก k ใน ledger ของคุณ ต้องอ่าน columnt netเทียบเส้นจาก ledger เอง (บรรทัดหัวที่บอกว่าเส้นขยับเพราะจำนวน preset ก็ไม่ได้เปลี่ยน columnresult)
เฉลย — ทำเองก่อนแล้วค่อยเปิด
ตัวอย่างการติดป้ายจากกองจริงของผู้สอน (IS 2026 · 102 วันที่ตลาดเปิด · จาก docs\ea-screen-criteria.md) เพื่อดูว่าแต่ละป้ายมาจากเกณฑ์ไหน
| EA | TF | trade | วันที่มี trade | DD | E[R] [CI] | ป้าย |
|---|---|---|---|---|---|---|
| Apex-Gold-Algo-2-0-fix | M5 | 69 | 64 | 7.2% | +0.337 [+0.130, +0.526] | ผ่าน |
| H4-Gold-Scalper-v1-5 | H4 | 15 | 12 | 4.8% | +1.272 [+0.486, +2.271] | ผ่าน (หลักฐานบาง 12 วัน) |
| Zerqon | M5 | 947 | 45 | 12.4% | +0.337 [−0.156, +1.119] | ยังตัดสินไม่ได้ — CI คร่อมศูนย์ |
| Quantum-Titan | M5 | 85 | 77 | 8.8% | +0.037 [−0.065, +0.151] | ยังตัดสินไม่ได้ — CI คร่อมศูนย์ |
| One-1-0-3 | M5 | 6,151 | 101 | 35.5% | ตัวแทน (กำไรรายวัน) คร่อมศูนย์ · ตัด 5 วันดีสุดเหลือ −1,781 | ตก — S4 + S5 |
| Alpha-Scalper-Pro | M1 | 696 | 2 | 105.6% | คิดไม่ได้ | ตก — บัญชีแตก (DD 105.6% · สุทธิ −10,624) |
สังเกต H4-Gold-Scalper: 15 trade น้อยแต่กระจาย 12 วัน ผ่าน S2 ส่วน Alpha-Scalper-Pro 696 trade แต่อยู่ใน 2 วัน และบัญชีแตก
ตัวเลขชุดนี้อยู่ใน IS 2026 ซึ่งเป็นช่วงข้อมูลที่ใช้ไปแล้ว
จุดที่มักพลาด
| พลาด | ผลที่ตามมา | ทางกัน |
|---|---|---|
| run ก่อนตัดบนกระดาษ | เสียเวลา queue กับ EA ที่ปิด case ได้จาก code | ตรวจตามลำดับในหัวข้อ 2 ก่อน |
| tune ก่อนนับ setup | tune ของที่ไม่มีวันมีตัวอย่างพอ | นับจำนวน setup ก่อน |
| คิด lot/risk ก่อนผ่าน G6 | ตั้ง risk ให้ EA ที่ไม่มี edge | lot/risk หลังผ่าน G6 เท่านั้น |
| ฆ่างานแล้วกดแค่ Stop | queue ค้างจนครบ run_timeout_sec |
ปิด terminal ด้วย |
ฆ่างานแล้วไม่ลบ .set |
งานกลับเข้า queue เงียบ ๆ รอบหน้า | ลบ set\<slug>\ ของตัวนั้น |
| ไม่ลด k เมื่อฆ่า arm | เส้น t เข้มเกินจริง | ลด k ใน ledger |
| อ่าน DD แถว Maximal | ผ่าน S5 ทั้งที่ควรตก | แถว Relative |
| นับ trade แทนวันที่มี trade | เชื่อหลักฐานที่จริง ๆ มาจากไม่กี่วัน | S2 นับวัน |
อ่าน column result ของ verdict เป็นป้าย |
ใช้เส้น t 2.00 แทนเส้นจาก ledger | อ่าน t net เทียบเส้นเอง |
| ผ่าน IS 2026 แล้วถือว่ามี edge | ลงแรงกับ EA ที่ตกยุคเก่า แบบ 6 ตัว SL USD คงที่ | IS ปีเก่าบน broker ชั้น 1 ทันที |
ทวนท้ายบท

- เปิดรายงาน
.htmแล้วอ่าน DD สำหรับ S5 จากแถวไหน เพราะอะไร - EA ที่ถูกฆ่ากลางคันเพราะ equity curve ดิ่ง ต้องทำอะไรบ้างไม่ให้กลับเข้า queue
- EA ที่ใช้ SL USD คงที่ผ่าน IS 2026 แล้ว ด่านถัดไปคืออะไร
เฉลย
- แถว Equity Drawdown Relative เพราะแถว Maximal ต่ำกว่าความจริงบนเส้นที่ compounding
- จดว่า "ตกด้วยตา" · ปิด terminal · ลบ folder set ของตัวนั้น · ลบจาก sources พร้อมจด sha · และลด k — เพราะงานที่ถูกฆ่าไม่ทิ้งรายงาน queue จึงปล่อยกลับเข้ามาเงียบ ๆ
- IS period ปีเก่าบน broker ชั้น 1 เพราะ 6 ตัวที่ผ่าน IS 2026 ตก 2022–2024 ทุกตัว