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

S7 · ตัดสินผลรอบแรก

▶ clip: https://youtu.be/73HY6SVVI2g

จบบทนี้แล้วทำได้:

  • ตัดสินรายงานด้วยเกณฑ์คัดกรอง S1–S6 และหาตัวเลขแต่ละข้อจากรายงานหรือ mc
  • ติดป้ายได้หนึ่งในสามแบบ: ผ่าน · ตก · ยังตัดสินไม่ได้ และรู้ว่า "ผ่าน" ไม่ได้แปลว่ามี edge
  • แยก "ตัวเลขเบื้องต้น" ออกจาก "สรุป" ด้วย checklist เจ็ดมิติ
  • ตัด EA ทิ้งบนกระดาษด้วย gate G1 / G2 ก่อนเสียเวลา run

ต้องมีก่อน: S5 และ S6 · รายงานสามใบใน lab\reports\tick-quality\ ชุดเดียวกับ S5


1 · criteria S1–S6

S7-1

เกณฑ์คัดกรองรอบแรกมีหกข้อ ชื่อ S1–S6 — คนละอย่างกับชื่อบทของ course (S1–S8)

ข้อ ดูอะไร ผ่านเมื่อ หาจากไหน
S1 run จบ + tick History Quality ≥ 90% .htm บรรทัด History Quality
S2 จำนวนวันที่มี trade ≥ 10 วัน mc --daily → days N
S3 E[R] + CI (bootstrap รายวัน) E[R] > 0 และ CI ล่าง > 0 mc --daily → bootstrap 95% a..b
S4 ตัด 3 trade กำไรสูงสุด ยอดที่เหลือยังบวก ตาราง Deals ใน .htm (ไม่มีคำสั่งทำให้)
S5 Equity DD Relative ≤ 30% .htm แถว Equity Drawdown Relative
S6 win% เทียบฐานรูปทรง win% > 1 / (1 + payoff) .htm Profit Trades · Average profit trade · Average loss trade

ทำไมนับวัน ไม่นับ trade: เดิมเคยมีเกณฑ์ว่าต้องมีอย่างน้อย 100 trade แต่ถูกทิ้งไป เพราะหลักฐานนับเป็นวัน (S6) · docs\ea-screen-criteria.md ยกตัวอย่าง EA บน M1 ที่ยิง 696 trade แต่อยู่ใน 2 วัน = เหตุการณ์เดียว ขณะที่ EA บน H4 ที่ยิง 15 trade กระจาย 12 วัน = 12 เหตุการณ์

ตัวเลข 10 วัน · 30% · 3 trade เป็นค่าที่ตั้งขึ้น ไม่ได้มาจากการวัด เป็นกติกาที่ใช้ใน course นี้ ไม่ใช่มาตรฐานสากล ใช้เป็นจุดเริ่มต้นได้ แต่ถ้าจะเปลี่ยน ต้องเปลี่ยนก่อน run ไม่ใช่หลังเห็นผล

S2 ใน docs\ea-screen-criteria.md มีเงื่อนไขที่สองด้วย คือ ≥ 10% ของวันที่ตลาดเปิดในช่วงนั้น · lab ในบทนี้ข้ามเงื่อนไขนี้ เพราะยังไม่มีคำสั่งนับวันที่ตลาดเปิด

2 · สามคำตัดสิน

S7-2

ตรวจตามลำดับนี้ — ตรวจ "ตก" ก่อน

ลำดับ ถ้า ป้าย ทำอะไรต่อ
1 ตก S5 · หรือ E[R] ≤ 0 · หรือตก S4 ตก ปิด case รอบนี้
2 ไม่ตก แต่ E[R] > 0 และ CI คร่อม 0 · หรือตก S2 ยังตัดสินไม่ได้ run test period เพิ่ม
3 ผ่านครบ S1–S6 ผ่าน เปิด case วิจัย

(ตก S1 = ไม่อ่านต่อตั้งแต่แรก ตาม S5)

ทำไม "ยังตัดสินไม่ได้" ไม่ใช่ "ตก": CI คร่อม 0 หรือ trade กระจุกไม่กี่วันแปลว่าข้อมูลยังไม่พอจะบอกทางไหน ไม่ได้แปลว่าไม่มี edge · ทางแก้คือหาข้อมูลเพิ่ม ไม่ใช่ทิ้ง

"ผ่าน" แปลว่า "เปิด case วิจัย" ไม่ใช่ "มี edge" — ผ่าน test period เดียวไม่พอ · case จริง: EA ที่ใช้ SL เป็น USD คงที่ 6 ตัว ผ่าน IS 2026 ทุกตัว แต่ตกช่วง 2022–2024 ทุกตัว

3 · "ตัวเลขเบื้องต้น" กับ "สรุป"

S7-3

ก่อนจะพิมพ์คำว่า "สรุป" ต้องกวาดให้ครบเจ็ดมิติ:

# มิติ ถามว่า
1 R + CI R ต่อ trade พร้อมช่วงความเชื่อมั่น
2 equity multiplier ทุนโตกี่เท่าเมื่อ compounding ทั้งที่ risk เดียวกัน และที่ drawdown เท่ากัน
3 DD จาก shuffle ไม่ใช่ลำดับที่เกิดจริง
4 ราย era แยกรายยุค ผลรวมกลบยุคที่กลับด้านได้
5 ราย broker แยกราย broker และบอกว่า broker เหล่านั้นอิสระกันจริงไหม
6 จำนวนนับ n จริงเท่าไร ไม่ใช่แค่สัดส่วน
7 ตัด tail ตัดหางออกแล้วเหลืออะไร
  • มิติไหนข้าม ต้องเขียนว่าข้ามเพราะอะไร
  • ยังไม่ครบ → เขียนว่า "ตัวเลขเบื้องต้น"
  • กวาดไม่ครบ → ห้ามเผยแพร่คำตัดสิน เพราะการแก้ทีหลังทำให้คนอ่านต้องไล่เองว่า version ไหนถูก

4 · gate กระดาษก่อน run (G1 / G2)

S7-4

บาง EA ตัดทิ้งได้ตั้งแต่บนกระดาษ ไม่ต้องเสียเวลา run

gate ถามว่า
G1 · cost spread + commission + swap เทียบกับ SL จริงของ EA
G2 · โครงสร้าง win% ที่ EA ต้องได้เพื่อคุ้มทุน เกินกว่าที่กลไกของมันให้ได้ไหม

ตัวอย่าง EA-D (G2): ตั้ง ReverseStart = 3.75 × trailing → payoff < 1 → ต้องชนะ 51–54% · แต่ระบบที่สมมาตรแบบนี้ให้ได้ประมาณ 50% · ฐานที่ต้องชนะอยู่เหนือสิ่งที่กลไกให้ได้ จึงตัดได้โดยไม่ต้อง run

cost ต้องมาจากข้อมูลจริงของ broker ห้ามใส่ค่าคงที่ — spread ต่างกันตาม broker และตามช่วงเวลา ค่าคงที่ที่ยืมมาจากที่อื่นอาจทำให้ G1 สรุปกลับด้าน

skill /ea-analyze ใน Claude Code ทำ G1 / G2 ให้ได้ (ใช้ใน course Advanced) · Standard ไม่บังคับ คำนวณด้วยมือได้ และถ้าใช้ skill ก็ต้องตรวจตัวเลขเอง


Lab · ตัดสิน 3 รายงานด้วย S1–S6

S7-L

ใช้รายงานสามใบเดิมจาก S5 ติดป้าย ผ่าน / ตก / ยังตัดสินไม่ได้ พร้อมเหตุผลทุกข้อที่หัก

S1 — ทำไปแล้วใน S5

S2 · S3 — run mc แบบรายวันทีละใบ:

bt\ea-bt.exe mc lab\reports\tick-quality\Inter\A1-base.htm --daily
bt\ea-bt.exe mc lab\reports\tick-quality\Robo\A1-base.htm --daily
bt\ea-bt.exe mc lab\reports\tick-quality\Exness\A1-base.htm --daily

days N = จำนวนวันที่มี trade · bootstrap 95% a..b = CI รายวัน

S4 — ไม่มีคำสั่งทำให้ · เปิด .htm ตาราง Deals เรียง trade ตามกำไร ตัด 3 trade กำไรสูงสุดออกจาก Total Net Profit แล้วดูว่ายอดยังบวกไหม

S5 — Equity Drawdown Relative จาก .htm

S6 — Profit Trades (% of total) เทียบกับ 1 / (1 + Average profit trade ÷ |Average loss trade|)

กับดักสองข้อ:

  1. ป้าย PASS G4 / FAIL G4 ท้ายบรรทัดของ mc เป็น gate ชุดเก่า ไม่ใช่ S3 — S3 ดูที่ขอบล่างของ CI
  2. win ในโหมด --daily เป็น % ของวัน ไม่ใช่ราย trade — S6 ต้องใช้ Profit Trades จาก .htm

verdict ช่วยอ่านได้ แต่ป้ายของมันไม่ใช่ S1–S6

bt\ea-bt.exe verdict lab\reports\tick-quality\<broker>

verdict พิมพ์ win% · need% (= ฐาน 1 / (1 + payoff)) · DDrel% (= แถว Relative) ไว้ในบรรทัดเดียว ใช้หยิบตัวเลข S5 / S6 ได้เร็ว แต่ column result ตัดสินด้วย gate ชุดเก่า (G2 รูปทรง · G4 net และ t ราย trade) ไม่ดู History Quality ไม่ตัดสินด้วย DD Relative และไม่ใช้ CI รายวัน ผลจริงบนสามใบนี้:

preset   trade  /day      net   ...   PF    win%   need%  DDrel%  result
Inter      253   1.3   1159.9   ...  15.12  80.63  21.62    0.6    PASS
Robo       256   1.2  10896.0   ...   1.30  45.70  39.26   33.7    PASS
Exness     244   1.2    300.2   ...   3.06  52.87  26.85    0.1    PASS

(ย่อ column กลางออก · ชื่อแถวจริงคือ A1-base ทั้งสามใบ ใส่ชื่อ broker แทนให้อ่านง่าย)

ทั้งสามใบขึ้น PASS ทั้งที่ Inter มี real ticks 17% และ Robo มี DD Relative 33.7% · S1 · S3 · S5 ต้องตัดสินเองทุกครั้ง

ส่งคำตอบต่อท้าย research\4-backtest\_lab\<ชื่อคุณ>\L1.md เดิม · ทุกตัวเลขบอกว่ามาจากบรรทัดไหน

เฉลย — ทำเองก่อนแล้วค่อยเปิด

S7-LA

รายงาน S1 tick S2 วัน S3 E[R] · CI S4 ตัด 3 trade S5 DD rel S6 win · ฐาน ป้าย
Inter ตก 17% — ไม่อ่านต่อ — — — ตก
Robo ผ่าน 100% ผ่าน 86 ตก +0.486 [−0.224, +1.178] ผ่าน 10,896 → 1,392 ตก 33.70% ผ่าน 45.70 vs 39.26 ตก
Exness ผ่าน 100% ผ่าน 88 ผ่าน +1.865 [+1.088, +2.772] ผ่าน 300.18 → 248.30 ผ่าน 0.11% ผ่าน 52.87 vs 26.85 ผ่าน
  • Inter — ตก S1 real ticks 17% ไม่อ่านต่อ
  • Robo — ป้ายรวม ตก เพราะ S5 33.70% เกิน 30% (S3 คร่อมศูนย์ด้วย แต่ตก S5 ตัดสินแล้ว) · ตามลำดับในหัวข้อ 2 ตรวจ "ตก" ก่อน จึงไม่ใช่ "ยังตัดสินไม่ได้"
  • Exness — ผ่านครบหกข้อ

Exness ผ่าน = "เปิด case วิจัย" ไม่ใช่ "มี edge" — test period เดียว broker เดียว และเป็นช่วงข้อมูลที่ใช้ไปแล้ว

proxy หลอกในตารางนี้: expected payoff ของ Robo 42.56 สูงกว่า Exness 1.23 มาก แต่ E[R] ต่อ trade กลับด้าน — Robo +0.163 · Exness +0.673 · expected payoff เป็นเงิน ขึ้นกับ lot และ contract size จึงเทียบข้ามรายงานไม่ได้

ที่ lab นี้ข้าม: S2 เงื่อนไข ≥ 10% ของวันที่ตลาดเปิด เพราะยังไม่มีคำสั่งนับวันตลาดเปิด


จุดที่มักพลาด

พลาด ผลที่ตามมา ทางกัน
อ่าน PASS G4 ของ mc เป็น S3 ผ่าน S3 ทั้งที่ CI คร่อมศูนย์ ดูขอบล่างของ bootstrap 95%
อ่าน result PASS ของ verdict เป็นผ่าน S1–S6 รายงาน tick ปั้นและ DD เกินเกณฑ์ผ่านไปได้ ตัดสิน S1 · S3 · S5 เอง
เอา win ของ --daily มาตัดสิน S6 เทียบ % ของวันกับฐานราย trade ใช้ Profit Trades จาก .htm
E[R] บวกแล้วติดป้ายผ่าน ข้าม CI และ DD ตรวจ "ตก" ก่อนตามลำดับ
ติดป้าย "ตก" ให้ผลที่ CI คร่อมศูนย์ ทิ้ง EA ที่ข้อมูลยังไม่พอ ใช้ "ยังตัดสินไม่ได้" แล้ว run เพิ่ม
อ่าน "ผ่าน" ว่ามี edge เชื่อผลจาก test period เดียว ผ่าน = เปิด case วิจัย
เขียน "สรุป" ก่อนกวาดครบเจ็ดมิติ ต้องถอนทีหลัง เขียน "ตัวเลขเบื้องต้น"
เทียบ expected payoff ข้ามรายงาน สรุปกลับด้าน เทียบด้วย E[R]
ใส่ cost คงที่ใน G1 G1 ผิดทาง ใช้ spread / commission จริงของ broker

ทวนท้ายบท

S7-Q

  1. รายงาน Exness ผ่านครบหกข้อ แปลว่า EA มี edge แล้วใช่ไหม
  2. รายงาน Robo ได้ E[R] ต่อวัน +0.486 เป็นบวก ติดป้ายอะไร เพราะอะไร
  3. บรรทัดท้ายของ mc เขียนว่า PASS G4 และ win rate ในโหมดรายวันสูง เอาสองค่านี้ไปตัดสิน S3 และ S6 ได้ไหม
เฉลย
  1. ไม่ใช่ ผ่านแปลว่าเปิด case วิจัย · test period เดียว broker เดียว และเป็นช่วงข้อมูลที่ใช้ไปแล้ว · case EA ที่ใช้ SL เป็น USD คงที่ 6 ตัว ผ่าน IS 2026 แต่ตกปี 2022–2024 ทุกตัว
  2. ตก เพราะ Equity DD Relative 33.70% เกิน 30% และ CI คร่อมศูนย์ · E[R] เป็นบวกอย่างเดียวไม่พอ
  3. ไม่ได้ PASS G4 เป็น gate ชุดเก่า และ win rate ในโหมดรายวันเป็นรายวัน · S3 ดูขอบล่าง CI · S6 ใช้ Profit Trades จาก .htm เทียบฐาน 1 / (1 + payoff)