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

A4 · decode และจับ EA ที่รู้ผลล่วงหน้า

▶ clip: https://youtu.be/Zw39cqqtiD8

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

  • หาหน่วยและค่าที่ EA ใช้จริงจาก .ex5 ที่แกะไม่ได้ ด้วยการตั้ง input ค่าเด่น ๆ แล้วอ่านผล
  • จำลายเซ็นสี่แบบของ EA ที่จำผลในอดีตไว้ข้างใน
  • ใช้การทดสอบเลื่อนวัน · PX1000 · AMP2 แยกว่า EA อ่านราคาหรืออ่านปฏิทิน
  • เลี่ยงการ decode ผิดหน่วย (แท่ง/นาที · points/digits)
  • ตั้งจุดเลิกถอดไว้ก่อนเริ่ม และตัดสิน clone ด้วย loss เฉลี่ย ไม่ใช่ win%

ต้องมีก่อน: A1 (prereg · กติกานับ k) · A3 (screening) · S6 (E[R] · CI)


1 · .ex5 แกะไม่ได้ ถามมันแทน

A4-1

MT5 รุ่นใหม่เข้ารหัสทั้ง file ค่า entropy ของ .ex5 อยู่ที่ 7.98–8.00 (ค่าสูงสุดที่เป็นไปได้ของ byte คือ 8.00 file ที่ entropy ใกล้ 8 แทบแยกไม่ออกจากข้อมูลสุ่ม) จึงแกะกลับเป็น code ไม่ได้

ทางที่ใช้ได้คือถามมันด้วย input ค่าเด่น ๆ แล้วดูผล

input ที่ตั้ง สิ่งที่อ่านจากผล ได้คำตอบว่า
SL = 777 SL ในผลออกมาเป็น 7.77 หรือไม่ หน่วยที่ EA ใช้กับ input นั้น

เลือก 777 เพราะเป็นเลขที่ไม่น่าจะชนกับค่าอื่นในรายงานโดยบังเอิญ เห็นตัวเลขชุดนี้ที่ตำแหน่งทศนิยมไหน ก็รู้ว่า EA หารหรือคูณ input ด้วยอะไร

ไม่มีรายงาน .htm ก็อ่าน trade จาก tester log ได้

file .mq5 ที่บอกว่า "ถอดมา" คือสมมติฐานของคน ไม่ใช่ต้นฉบับ ใช้เป็นจุดตั้งต้นได้ แต่ต้องพิสูจน์กับผลของ .ex5 จริงทุกครั้ง

case SixtyNine

.set เขียนว่า TP 3000 และ SL 1000 แต่ค่าที่ใช้จริงต้องวัดเอาจากใบสั่ง 50,000 ใบ ตัวเลขใน .set บอกแค่ว่าผู้ขายตั้งอะไร ไม่ได้บอกว่า EA เอาไปใช้อย่างไร

2 · ลายเซ็นของข้อมูลฝัง

A4-2

EA บางตัวไม่ได้อ่านตลาด แต่จำผลในอดีตไว้ข้างใน ใน backtest มันจึงดูแม่นมาก แต่ใช้กับข้อมูลใหม่ไม่ได้ ลายเซ็นมีสี่แบบ

# ลายเซ็น ตัวอย่าง / เหตุผล
1 เวลาเข้าเป็นนาฬิกา เข้า 12:00:00 ตรงเป๊ะ 22 จาก 23 trade · ระบบที่อ่านราคาจะเข้าตามจังหวะราคา ไม่ใช่ตามเข็มนาฬิกา
2 ฝั่ง buy/sell ไม่สัมพันธ์กับราคา ทิศถูกกำหนดไว้แล้ว ไม่ได้มาจากสิ่งที่ราคาทำ
3 ยิ่งย้อนหลังยิ่งแม่น กลับด้านกับระบบจริงที่เสื่อมตามเวลา
4 ชนะ ≥ 70% บนประตูสมมาตร ต้องทดสอบก่อน clone

ข้อ 4 ประตูสมมาตร คือ TP กับ SL ระยะเท่ากัน ถ้าราคาเดินแบบสุ่ม โอกาสชนแต่ละฝั่งใกล้ 50% การชนะ 70% ขึ้นไปบนรูปทรงแบบนี้จึงต้องมีคำอธิบาย และคำอธิบายหนึ่งที่ต้องตัดออกก่อนคือ EA รู้ผลล่วงหน้า

ข้อ 3 ทำไมแปลก: ระบบที่หา edge จากตลาดจริงมักทำได้ดีที่สุดในช่วงที่มันถูกพัฒนา แล้วค่อย ๆ แย่ลงเมื่อตลาดเปลี่ยน ถ้าแม่นขึ้นเรื่อย ๆ เมื่อย้อนกลับไปในอดีต แปลว่าอดีตคือสิ่งที่มันจำไว้

case CyberVest

ปี ชนะ
2026 88%
2025 98.5%
2024 99.6%

ยิ่งย้อนหลังยิ่งแม่น (ลายเซ็นข้อ 3) และตัวมันเองยังพิมพ์ใน log ว่า Mode เท่ากับ BACKTEST และ SwitchDate คือ 30 กันยายน 2026 หลังวันนั้นเปลี่ยนเป็น SL $100 TP $20

บทเรียน: อ่าน tester log หาข้อความที่ EA พิมพ์เองก่อนทำอย่างอื่น บางตัวประกาศออกมาตรง ๆ

3 · ทดสอบเลื่อนวันและบิดราคา

A4-3

การทดสอบสามแบบที่แยกได้ว่า EA อ่านราคาหรืออ่านปฏิทิน

การทดสอบ ทำอะไรกับข้อมูล อ่านผลอย่างไร
เลื่อนวัน ±14 วัน ราคาเดิม แต่ติดวันที่ใหม่ trade ยังตามราคา = อ่านราคา · ไม่ตาม = ตามปฏิทิน
PX1000 ยกราคาขึ้น $1,000 การเคลื่อนไหวเดิม trade หายเกือบหมด = จำรูปราคาในอดีต
AMP2 ขยายการเคลื่อนไหวเป็นสองเท่า trade หายเกือบหมด = จำรูปราคาในอดีต

ทำไมเลื่อนวันถึงแยกได้: EA ที่อ่านราคาเห็นราคาชุดเดิมทุกแท่ง จะเปิด trade ที่จุดราคาเดิม แค่ติดวันที่ต่างไป ส่วน EA ที่จำตารางวันที่ไว้จะเปิด trade ตามวันที่ใหม่ ซึ่งตอนนี้ตรงกับราคาคนละช่วง ผลจึงพัง

ผลจริง

EA เลื่อนวัน PX1000 / AMP2 อ่านว่า
CyberVest ชนะเหลือ 38% และ 49% — ตามปฏิทิน
Iron Stops ตรงตัวคุม 69 จาก 70 PX1000 เหลือแค่ 6 trade จำรูปราคา
One Gold — ตรง 32 จาก 32 ตามราคา

Iron Stops คือ case ที่การเลื่อนวันอย่างเดียวไม่พอ มันผ่านการเลื่อนวัน (trade ตรงเกือบหมด) แต่พอยกราคา trade หายเกือบหมด แปลว่ามันไม่ได้จำวันที่ แต่จำรูปราคาในอดีต

ข้อจำกัดของการทดสอบนี้

  • เป็นการทดสอบวินิจฉัยกลไก จึงไม่นับเข้า Šidák (A1)
  • ผ่านแล้วตัดได้แค่เรื่อง "ตารางเวลา" ตัดเรื่อง "ผู้ขาย tune กับปีเหล่านั้น" ไม่ได้ EA ที่ถูก tune ให้เข้ากับข้อมูลปีหนึ่งยังอ่านราคาจริงอยู่ จึงผ่านการเลื่อนวันได้

4 · หน่วยที่อ่านผิดแล้วได้ clone ผิด

A4-4

decode ผิดหน่วยเดียว clone ก็ผิดทั้งตัว

หน่วย ปัญหา ทางแก้
แท่ง vs นาที radius หรือ lookback ที่คงที่ อาจนับเป็นแท่งหรือนาทีก็ได้ chart เดียวแยกไม่ออก ต้องมีรายงานสอง TF ถ้าเป็นแท่ง ระยะเวลาจริงจะเปลี่ยนตาม TF ถ้าเป็นนาทีจะคงที่
points vs digits Alpha Nova SL กว้างขึ้นราว 10 เท่าบนทองที่มี 3 หลักทศนิยม ดู digits ของ symbol ก่อนอ่านค่า
EA ปรับ digits เอง บางตัวปรับให้อยู่แล้ว ห้ามคูณ 10 ใน .set ซ้ำ

กล่องขวาของ slide: คู่ trade signal เดียวกันบน Robo กับ Exness TP เท่ากันที่ $20 แต่ SL ต่างกัน 9.90 เท่า ถ้าดูแค่ TP จะสรุปว่าสอง broker ทำงานเหมือนกัน

case Fortune

"การถอดผิด 10 เท่า" นำไปสู่ clone ผิด 2 version ก่อนรายงาน H1 จะบอกว่า radius 15 แท่งถูกมาตั้งแต่ต้น และเคยคูณ 10 ซ้ำจน SL กลายเป็น $240 กับ $320 ทั้งหมดนี้เกิดเพราะมี chart TF เดียว ถ้ามีรายงานสอง TF ตั้งแต่แรกจะรู้หน่วยทันที

5 · เมื่อไรเลิกถอด

A4-5

การถอดต้องมีจุดเลิก ตั้ง criteria precision บนชุดทดสอบไว้ก่อนถอด (หลักเดียวกับ prereg ใน A1)

One Gold precision
fit (ข้อมูลที่ใช้ถอด) 87%
ชุดทดสอบ 1.21%
criteria ที่ตั้งไว้ก่อน 70%

fit ได้สูงแต่ชุดทดสอบได้ต่ำ = overfit กฎที่ถอดได้แค่จำข้อมูลที่ใช้ถอด ไม่ได้จับกลไกจริง ไม่ต้องสร้าง clone

ตัวชี้ขาดของ clone คือ loss เฉลี่ย ไม่ใช่ win%

Pigasus clone v0.30 ค่า
ชนะ 84%
loss เฉลี่ย −35.90
เป้า −11.67

ชนะบ่อย แต่แพ้หนักกว่าเป้าเกินสามเท่า win% สูงซ่อนเรื่องนี้ได้ เพราะ trade ที่แพ้มีน้อย แต่แต่ละ trade กินกำไรของ trade ที่ชนะหลายตัว

clone ไม่ต้องเหมือนต้นฉบับ 100% ใช้ชี้กลไกแล้วพัฒนาต่อได้ ถ้าเจอ setting ที่ดีกว่าต้นฉบับก็พัฒนาตัวนั้นต่อ


Lab · เลื่อนวันแล้ว EA ตัวไหนอ่านราคา

A4-L

เป้าหมาย: ตัดสินว่า EA สองตัวตัวไหนตามราคา ตัวไหนตามปฏิทิน พร้อมตัวเลข "ตรงตัวคุม x จาก y" และ win% แยกกลุ่ม รายงานผู้สอน run ไว้แล้ว และใช้เฉพาะ EA ที่ปิด case แล้ว

รายงานที่ได้รับ (folder A4-shift\ · ปี 2024 · Robo-ECN)

file EA ชนิด
CYBERVEST_A24C.htm CyberVest control
CYBERVEST_A24S.htm CyberVest เลื่อนวัน +14 วัน
PHANTOMX_A24C.htm GOLD Phantom X control
PHANTOMX_A24S.htm GOLD Phantom X เลื่อนวัน +14 วัน

ขั้นที่ 1 · mc ทุกรายงาน

bt\ea-bt.exe mc A4-shift\CYBERVEST_A24C.htm
bt\ea-bt.exe mc A4-shift\CYBERVEST_A24S.htm
bt\ea-bt.exe mc A4-shift\PHANTOMX_A24C.htm
bt\ea-bt.exe mc A4-shift\PHANTOMX_A24S.htm

(แก้ path ตามที่คุณวาง folder) จด n · win% · E[R] · CI จากบรรทัดแรกของผลรวม เช่น

   trades 110 · win 68.2% · E[R] +0.356 (bootstrap 95% +0.184..+0.524) · sd 0.93 · t 4.00  PASS G4

CI มาจาก bootstrap ซึ่งสุ่มทุกครั้ง ตัวเลขทศนิยมหลักท้ายจึงขยับได้เล็กน้อยระหว่างการ run แต่ละครั้ง

mc บนรายงานสี่ใบ

mc บนรายงานสี่ใบใน A4-shift\ (ตัดมาแค่สี่บรรทัดแรกของแต่ละใบ ตาราง risk ข้างล่างไม่ได้แสดง): control ของทั้งสองตัว PASS G4 (win 97.1% · 68.2%) ส่วนคู่เลื่อนวัน win เหลือ 38.0% · 38.7% E[R] ติดลบ และ FAIL G4 — ตัวเลขชุดนี้ยังไม่ได้ตอบว่าตามราคาหรือตามปฏิทิน ต้องจับคู่ trade ในขั้นที่ 2 ก่อน

Monte Carlo ของ CyberVest เลื่อนวันใน dashboard

ใบเดียวกัน (CYBERVEST_A24S.htm) ผ่านช่อง Monte Carlo ใน tab อ่านผล / ตัดสินใจ แบบ "ทีละ trade": หัวบอก trade 108 · ชนะ 38% · E[R] −0.178 · ตก G4 · chart DD p95/p50 ตามระดับ risk · เส้น portfolio หลายเป็นกี่เท่าอยู่ต่ำกว่า 1x ทุกระดับ · column จบขาดทุน 100% · CI (−0.343..−0.018) ต่างจาก CLI เล็กน้อยเพราะ bootstrap สุ่มคนละรอบ

ขั้นที่ 2 · จับคู่ trade ด้วย script อ่านที่ผู้สอนแจก

script นี้หักวันที่เลื่อนออกจากเวลาก่อน แล้วจับคู่ด้วยทิศเดียวกันและเวลาคลาดไม่เกิน 300 วินาที

ห้ามใช้ match_trades ตรง ๆ เพราะมันจับคู่ด้วยเวลาและไม่หักวันที่เลื่อน trade ทุกตัวในรายงานเลื่อนวันจะห่างจาก control 14 วันพอดี จึงจับคู่ไม่ได้เลย แล้วคุณจะสรุปผิดว่า "ต่างหมด" ทั้งที่ EA อาจเปิด trade ที่จุดราคาเดิมทุกตัว

ขั้นที่ 3 · แยกกลุ่ม

แยก trade ฝั่งเลื่อนวันเป็น "ตรงตัวคุม" (จับคู่ได้) กับ "เพิ่มมา" (จับคู่ไม่ได้) แล้วนับชนะแต่ละกลุ่ม

ขั้นที่ 4 · ตัดสิน

เห็น อ่านว่า
trade ตรงตัวคุมแทบทั้งหมด และผลออกทางเดียวกัน ตามราคา
win% ตก และตรงตัวคุมน้อย ตามปฏิทิน

ด่านผ่าน: ตัดสินถูกทั้งสองตัว พร้อมรายงาน "ตรงตัวคุม x จาก y" และ win% ของแต่ละกลุ่ม ตัดสินจาก win% รวมอย่างเดียวถือว่าไม่ผ่าน

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

ขั้นที่ 1 (mc บนรายงานที่แจก)

n win% E[R] bootstrap 95%
CyberVest control 273 97.1% +0.936 +0.895..+0.972
CyberVest เลื่อนวัน 108 38.0% −0.178 −0.350..−0.007
Phantom X control 110 68.2% +0.356 +0.184..+0.524
Phantom X เลื่อนวัน 106 38.7% −0.233 −0.416..−0.036

ขั้นที่ 2–3 (script อ่านของผู้สอน · ตรง = ทิศเดียวกัน เวลาคลาด ≤ 300 วินาทีหลังหักวันที่เลื่อน)

ตรงตัวคุม ชนะในกลุ่ม "ตรง" ชนะในกลุ่ม "เพิ่มมา"
CyberVest 25 จาก 273 (9.2%) 25/25 16/83
Phantom X 13 จาก 110 (11.8%) 7/13 34/93

ขั้นที่ 4

  • CyberVest — ตามปฏิทิน win% จาก 97.1% เหลือ 38.0% และ trade ที่ตรงตัวคุมมีแค่ 25 จาก 273 trade ส่วนใหญ่ฝั่งเลื่อนวันเป็นของ "เพิ่มมา" ที่ชนะแค่ 16 จาก 83 แปลว่ามันเปิด trade ตามวันที่ ไม่ใช่ตามราคา
  • Phantom X — ตามปฏิทิน win% จาก 68.2% เหลือ 38.7% ตรงตัวคุมแค่ 13 จาก 110 ใน clip ตัวนี้เป็นตัวอย่างว่าชนะ 70% กว่าก็ฝังข้อมูลได้ ไม่ต้องสูงถึง 97% แบบ CyberVest (control ปี 2026 ของ Phantom X ชนะ 82.9% และคู่เลื่อนวันปี 2026 ตรงตัวคุม 23.7% เหลือชนะ 53.2% จาก script เดียวกัน · ไม่อยู่ในชุดแจก)
  • ทั้งสองตัวไม่มีตัวไหนตามราคา ใน lab นี้ ถ้าคุณได้คำตอบว่าตัวใดตัวหนึ่งตามราคา ให้กลับไปดูว่าใช้ match_trades หรือลืมหักวันที่เลื่อน
  • ข้อมูลปี 2024 ชุดนี้เป็นช่วงข้อมูลที่ใช้ไปแล้ว และ CyberVest กับ Phantom X ปิด case แล้ว
  • รายงานทั้งสี่ใบ run บน custom symbol (XAUUSD_SH0 = control · XAUUSD_SH14 = เลื่อนวัน ดูบรรทัด Symbol ในรายงาน) · config ของคู่ CyberVest ใช้ model 1 (1 minute OHLC) เพราะ custom symbol ไม่มี tick จริง ชุดนี้จึงใช้ตอบคำถาม "ตามราคาหรือตามปฏิทิน" ไม่ใช่ตัวเลข E[R] ที่จะเกิดจริง

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

พลาด ผลที่ตามมา ทางกัน
เชื่อ .mq5 ที่ "ถอดมา" เป็นต้นฉบับ clone ตามสมมติฐานของคนอื่น พิสูจน์กับผล .ex5 ด้วย input ค่าเด่น ๆ
เชื่อตัวเลขใน .set ได้ค่าที่ผู้ขายตั้ง ไม่ใช่ค่าที่ EA ใช้ วัดจากใบสั่งจริง แบบ case SixtyNine
ไม่อ่าน tester log พลาดข้อความที่ EA ประกาศเอง (Mode = BACKTEST) อ่าน log ก่อนอย่างอื่น
clone EA ที่ชนะ ≥ 70% บนประตูสมมาตรโดยไม่เลื่อนวัน clone ตัวที่จำผลในอดีต เลื่อนวันก่อน clone
ใช้ match_trades กับรายงานเลื่อนวัน จับคู่ไม่ได้เลย สรุปผิดว่า "ต่างหมด" script ที่หักวันที่เลื่อนก่อน
ผ่านเลื่อนวันแล้วสรุปว่าอ่านราคา พลาดแบบ Iron Stops ที่จำรูปราคา ทำ PX1000 / AMP2 ด้วย
สรุปว่าผ่านเลื่อนวัน = ไม่ได้ tune กับปีนั้น เชื่อผล backtest เกินจริง ผ่านแค่ตัดเรื่องตารางเวลา
นับการทดสอบวินิจฉัยเข้า k เส้น t เข้มเกินจริง ไม่นับเข้า Šidák
decode จาก chart TF เดียว ผิดหน่วยแท่ง/นาที แบบ case Fortune ขอรายงานสอง TF
คูณ 10 ใน .set ทั้งที่ EA ปรับ digits เอง SL ผิด 10 เท่า ($240 / $320) check ว่า EA ปรับ digits เองหรือไม่ก่อน
ถอดต่อไปเรื่อย ๆ ไม่มีจุดเลิก สร้าง clone จากกฎที่ overfit ตั้ง criteria precision บนชุดทดสอบก่อนถอด
ตัดสิน clone ด้วย win% ใช้ clone ที่แพ้หนักกว่าเป้าสามเท่า ตัดสินด้วย loss เฉลี่ย

ทวนท้ายบท

A4-Q

  1. EA ชนะ 73% บนประตูสมมาตร ต้องเลื่อนวันก่อนเชื่อไหม
  2. ใช้ match_trades ตรง ๆ กับรายงานเลื่อนวันแล้วจับคู่ไม่ได้เลย สรุปอะไรได้
  3. clone ชนะ 84% แต่ loss เฉลี่ย −35.90 เทียบเป้า −11.67 ใช้ได้ไหม
เฉลย
  1. ต้องเลื่อนวัน ชนะ ≥ 70% บนประตูสมมาตรต้องทดสอบก่อน clone และ Phantom X ที่ชนะ 70% กว่าก็ฝังข้อมูลได้
  2. สรุปอะไรไม่ได้ เพราะ match_trades ไม่หักวันที่เลื่อน ต้องใช้ script อ่านต่อ EA ที่หักวันก่อน
  3. ใช้ไม่ได้ ตัวชี้ขาดของ clone คือ loss เฉลี่ย ไม่ใช่ win% และ −35.90 แพ้หนักกว่าเป้าเกินสามเท่า