ข้ามไปที่เนื้อหา

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

A3-1

ทุกงานที่ 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 · ลำดับตรวจที่ถูกที่สุดก่อน

A3-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 เดียว

A3-3

กองที่ผ่านกระดาษ 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 เก่าทันที

A3-4

ผ่านรอบแรกแปลว่า "น่าลงแรงต่อ" เท่านั้น ยังไม่ใช่หลักฐานว่ามี 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 สถานะกลยุทธ์

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

A3-L

เป้าหมาย: ติดป้าย ผ่าน · ตก · ยังตัดสินไม่ได้ ให้ 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%

ตารางตัดสินผลใน dashboard

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 ของคุณ ต้องอ่าน column t net เทียบเส้นจาก ledger เอง (บรรทัดหัวที่บอกว่าเส้นขยับเพราะจำนวน preset ก็ไม่ได้เปลี่ยน column result)
เฉลย — ทำเองก่อนแล้วค่อยเปิด

ตัวอย่างการติดป้ายจากกองจริงของผู้สอน (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 ทันที

ทวนท้ายบท

A3-Q

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