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

P0 · ปูพื้น

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

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

  • ตั้ง Strategy Tester ให้ใช้ tick จริง กด backtest เองหนึ่งครั้ง แล้วหาบรรทัด History Quality ในรายงานได้
  • คำนวณกำไรต่อ trade ด้วยมือ และรู้ว่า contract size ของทองไม่ได้เป็น 100 เสมอ
  • สงสัยหน่วยก่อนสงสัยกลยุทธ์ เมื่อเห็นตัวเลขที่ดีเกินจริง (บัญชี cent · tick value · digits)
  • อธิบายได้ว่าทำไม mean ตัวเดียวไม่พอ และทำไมผลรวม R เท่ากันแต่เงินไม่เท่ากัน
  • เขียนเกณฑ์ก่อนเห็นผล (prereg) และรู้ว่าทำไมห้ามแก้หลังเห็นผล

ต้องมีก่อน: ดู C0 · ติดตั้ง MT5 แล้ว (download เองจาก metatrader5.com) และมีบัญชี demo หนึ่งบัญชี — บทนี้ยังไม่ใช้ starter kit


1 · course นี้สอนอะไร และไม่สอนอะไร

P0-1

สอน ไม่สอน
วิธีพิสูจน์ว่า EA มี edge จริงไหม ก่อนเอาเงินจริงไปเสี่ยง หา signal trade
ทุก lab ใช้บัญชี demo แจก EA ทำกำไร
คำแนะนำการลงทุน

ถ้ามาเพื่อหาสูตรทำเงิน คอร์สนี้ไม่มีให้

ตัวนับสถานะงานวิจัยจริงของผู้สอน (Research Board ณ 21 ต.ค. 2026 · ทะเบียน 81 case ไม่ได้แสดงครบทุกหมวด):

สถานะ จำนวน
ปิด case แล้ว 30
เดินอยู่ (ผ่าน · เปิด) 16
ยังตัดสินไม่ได้ 17
ค้างรอของ 7

ผลส่วนใหญ่ของงานแบบนี้คือ "ตัดทิ้ง" นั่นคือประโยชน์ของมัน: เงินจริงไม่ต้องไปเสียกับ EA ที่ backtest สวยแต่ไม่มี edge

2 · MT5 สามหน้าจอที่ต้องใช้

P0-2

ใน MT5 ใช้อยู่แค่สามหน้าจอ

หน้าจอ ใช้ทำอะไร
Market Watch —
Navigator —
Strategy Tester ตั้งและ run backtest — ใช้มากที่สุด

ช่องใน Strategy Tester: EA (Expert) · symbol · period · modelling · ช่วงวัน (Date) · deposit · leverage

สองอย่างที่ต้องตั้งตั้งแต่ตอนนี้

  1. Modelling = "Every tick based on real ticks" เสมอ (ช่องที่วงไว้ในภาพ) ใน config ของระบบเขียนค่านี้ว่า model: 4 ถ้าเลือกแบบอื่น tester จะไม่ใช้ tick จริงตั้งแต่ต้น
  2. ภาษาของ terminal เป็นภาษาอังกฤษ ตัวอ่านรายงานของระบบหาป้ายข้อความภาษาอังกฤษ เช่น History Quality ถ้า terminal เป็นภาษาอื่น ป้ายในรายงานจะเป็นภาษานั้น และระบบจะอ่านรายงานไม่ออก

ค่า deposit และ leverage ในภาพไม่ใช่ประเด็นของหัวข้อนี้ ค่าที่ใช้จริงในแต่ละ run ให้ดูจากรายงาน

3 · Lab: กด backtest เองหนึ่งครั้ง

P0-3

ทำใน MT5 ที่คุณติดตั้งเองตามปกติ ตัวนี้ระบบไม่แตะ · ห้ามใช้ mt5\_template\ ของ starter kit ทำ lab นี้ — ต้นแบบนั้นต้องไม่เคยถูก login (ดู M0)

ขั้นที่ 1 ใน Strategy Tester เลือก EA ตัวอย่างชื่อ Moving Average ที่มากับ MT5

ขั้นที่ 2 ตั้งให้ run บน XAUUSD · H1 ช่วงสั้น ๆ เริ่มที่หนึ่งเดือน · Modelling = "Every tick based on real ticks" แล้วกด Start

ครั้งแรกต้องรอโหลด history: MT5 ต้อง download tick ของช่วงที่ตั้งก่อน ดูตัวเลข "Download history: xx%" ที่มุมขวาล่างของ Strategy Tester ระหว่างนั้นเส้นทุนยังไม่ขยับ ไม่ได้ค้าง ถ้าเปอร์เซ็นต์ไม่ขยับนานหลายนาที ให้ check network · ช่วงยาวรอนาน จึงเริ่มที่ 1 เดือน · run ครั้งต่อไปใช้ tick ที่ download ไว้แล้ว

ขั้นที่ 3 run เสร็จแล้ว save รายงานเป็น file .htm

ขั้นที่ 4 เปิดรายงานแล้วหาบรรทัด History Quality ให้เจอ

ด่านของ lab นี้: ชี้บรรทัด History Quality ได้ และอ่านค่าออก

ทำไมต้องจำชื่อ Moving Average: ถ้าวันหนึ่งพิมพ์ชื่อ file EA ผิดตัวพิมพ์เล็กใหญ่ tester จะ run Moving Average แทนเงียบ ๆ จบภายในราว 15 วินาที (case #1 ใน C0) ถ้าเห็นรายงานที่ EA ชื่อ Moving Average ทั้งที่ตั้งใจ run ตัวอื่น แปลว่าชื่อ file ผิด

ภาพรายงานบนจอ คือรายงานตัวอย่างใน lab ของ kit (lab\reports\tick-quality\Inter\A1-base.htm) ที่ History Quality แค่ 17% real ticks แปลว่า tick ส่วนใหญ่ MT5 สร้างขึ้นเอง ลองถามตัวเองว่าจะเชื่อตัวเลขข้างล่าง (Profit Factor 15.12 · Total Trades 253) ได้ไหม คำตอบอยู่ใน S2 และ S5

4 · lot และ contract size

P0-4

กำไรต่อ trade คิดด้วยมือได้:

กำไร = ระยะราคาที่ขยับ × lot × contract size
ตัวอย่าง: $2 × 0.10 × 100 = $20

ห้ามจำเลข 100 ทองมี contract size อย่างน้อยสามค่า

symbol contract size ราคาขยับ $1 ที่ 1 lot
XAUUSD 100 $100
XAUUSDc (บัญชี USC) 1 $1 (= 100 USC)
XAUUSD.min (Axi) 10 $10

แถว XAUUSDc ได้ $1 แต่บัญชีเป็น cent จึงเห็นเป็น 100 USC เลข 100 ที่ตรงกันในสองแถวแรกจึงเป็นเรื่องบังเอิญ ต้องอ่าน contract size จาก symbol ของทุก broker

ทำไมเรื่องนี้สำคัญ: ความผิดพลาดสองทางไม่เท่ากัน

ประเมิน contract size lot ที่ได้ ผล case จริง
สูงเกินจริง เล็กเกิน กำไรน้อยลง ตั้ง risk 1% ได้จริง 0.4%
ต่ำเกินจริง ใหญ่เกิน portfolio แตกได้ ตั้ง risk 7% เสี่ยงจริง 135.82%

ภาพขวาบนจอคือผลของ bt\ea-bt.exe lot_check --bug ที่จำลอง case บนบัญชี Exness cent (case เดียวกับ C0 หัวข้อ 1) ที่ EA เชื่อตัวคูณผิด 100 เท่า

ก่อนแก้ หลังแก้
lot จากสูตร 116.88 1.16
หลังตัดด้วย margin 22.68 —
risk จริง 135.82% ของทุน (ตั้ง 7%) 6.95% ของทุน (ตั้ง 7%)

สังเกตว่าด่าน margin ตัด lot จาก 116.88 เหลือ 22.68 แต่ไม่ได้ถามว่า risk ที่เหลือเป็นเท่าไร (135.82%) · บรรทัด final gate (x1.5) ในภาพคือด่านที่เพิ่มหลังเหตุการณ์จริง ในการจำลองนี้มันขึ้น NO FIRE (ไม่ยิง) ส่วน code เดิมไม่มีด่านนี้ จึงเปิด 22.7 lot จริง (C0 หัวข้อ 1) · การตัด lot ลงไม่ได้แปลว่าปลอดภัย ต้องคิด risk% ที่เหลือจริงทุกครั้ง

5 · cent account · tick value · digits

P0-5

ก่อน — ลืมหาร 100 หลัง — cent ÷ 100
+568R ในสัปดาห์เดียว +5.68R

ตัวเลขเดียวกัน แค่หน่วยถูก บนบัญชี USC ทุกตัวเลขเป็น cent ต้องหาร 100 ก่อนคิดอย่างอื่น

หลัก: ตัวเลขที่ดีเกินจริง ให้สงสัยหน่วยก่อนสงสัยกลยุทธ์

กับดักเรื่องหน่วยอีกสามข้อ

กับดัก รายละเอียด ทางกัน
tick value แต่ละ broker รายงานคนละหน่วย เช่น Exness ส่ง 0.001 เป็น USD บนบัญชี cent ทั้งที่ค่าที่ถูกคือ 0.1 cent ห้ามเชื่อ tick value ตรง ๆ
ชื่อบัญชี บัญชีชื่อ "Robo-Cen" จริง ๆ มี contract 100 เป็นบัญชี USD ไม่ใช่ cent · ใน backtest 283 ชุดของ repo ผู้สอนไม่มีชุดไหนใช้สกุลเงิน cent ดู contract size และสกุลเงินบัญชีจริง ไม่ใช่ชื่อ
digits ทองที่ราคามีทศนิยม 2 หลักกับ 3 หลัก ค่า "points" ต่างกัน 10 เท่า · EA จาก Market บางตัวปรับ digits ให้เองแต่ไม่ครบทุกช่อง ห้ามคูณ points ด้วย 10 ใน file .set เอง

6 · สถิติ 1: mean · median · sd

P0-6

ตัวเลขสามตัว 2, 3, 100:

ค่า ผล บอกอะไร
mean 35 ถูก tail ลากได้
median 3 trade ทั่วไปหน้าตาเป็นยังไง
sd — ผลแกว่งแค่ไหน

E[R] (expected value ของ R) คือ mean ของกำไรต่อ trade นับเป็นจำนวนเท่าของเงินที่เสี่ยง ไม่ใช่ median

histogram สองชุดบนจอ (ข้อมูลสมมติเพื่อสอน) mean เท่ากันทั้งสองชุด สมมติว่า +0.15R

ชุด รูปทรง ถ้าไม่มี trade กำไรก้อนใหญ่อีก
A trade ส่วนใหญ่บวกนิด ๆ กระจายทุก trade ยังบวก
B trade ส่วนใหญ่ขาดทุน มี tail บนไม่กี่ trade ติดลบทันที

ตัวเลขเดียวปิดบังรูปทรงที่ใช้ตัดสินใจจริง จึงต้องดู distribution ทุกครั้ง และลองตัด trade ที่กำไรสูงสุดออก ถ้ากำไรหาย แปลว่าเป็นแบบ B

median ของข้อมูลจำนวนคู่ ต้องเอาสองค่ากลางมาเฉลี่ย เช่น 1, 2, 3, 4 ได้ 2.5 เคยมี code ที่หยิบแค่ค่ากลางฝั่งขวา ทำให้ตัวเลข "ทุนโตกี่เท่า" ที่ publish ไปแล้วเป็น 24.70 เท่า ทั้งที่ค่าจริงคือ 16.91 เท่า

7 · สถิติ 2: compounding

P0-7

ได้ +10% แล้วเสีย −10% กลับมาเท่าทุนไหม — ไม่ เหลือ 99% ของทุนต้น (1.10 × 0.90 = 0.99)

เหตุผล: ผลรวมกำไรเป็นการบวก แต่เงินจริงเป็นการคูณ ผลที่ตามมาคือสองชุดที่ผลรวม R เท่ากันเป๊ะ ชุดที่แกว่งมากกว่าได้เงินน้อยกว่าเสมอ ชื่อเรียกคือ volatility drag

กราฟบนจอ (ข้อมูลสมมติเพื่อสอน) ผลรวม % เท่ากัน (0) ทั้งสองเส้น

เส้น แกว่ง ตัวคูณทุนตอนจบ
เขียว ±2% สลับ 20 ครั้ง ×0.996
ส้ม ±10% สลับ 20 ครั้ง ×0.904

case จริง — portfolio ผสม EA-A กับ EA-C (case #5 ใน C0)

วัดด้วย broker 1 broker 2 broker 3
ผลรวม R ÷ drawdown +1% +12% +63%
เงิน compounding จริง −25% −40% +39%

สาเหตุ: EA-C แกว่งรายวัน 2.4–3.7 เทียบกับ EA-A ที่ 0.6–0.9 อัตราส่วนมองไม่เห็นเรื่องนี้ ต้องคิดเป็นตัวคูณทุนเสมอ

8 · เครื่องมือบน Windows

P0-8

เรื่อง กฎ ตัวอย่างบนจอ (ตัวอย่างประกอบ)
PowerShell path ที่มีเว้นวรรคต้องครอบด้วย "..." เสมอ ไม่ครอบจะได้ error cd "D:\MT5 demo\MQL5"
YAML ย่อหน้าคือโครงสร้าง ย่อหน้าผิดความหมายเปลี่ยน · วันที่ใส่ quote date_from: "2025.01.01"
ค้นแล้วไม่เจอ ≠ ไม่มี file ของ MT5 หลายชนิด (.set · .htm · log) เป็น UTF-16 เครื่องมือค้นทั่วไปมองไม่เห็นข้อความข้างใน —

ข้อสามสำคัญที่สุด case จริง: ค้นคำว่า OnlyUp ใน preset ได้ 0 จาก 28 file ทั้งที่มีจริง 6 file

ผลค้นที่ว่างเปล่า ให้ถือว่าคำสั่งผิด จนกว่าจะพิสูจน์ได้ว่าไม่มีจริง

9 · prereg = เขียน criteria ก่อนเห็นผล

P0-9

prereg ย่อมาจาก pre-registration คือเขียน คำถาม · test period · criteria เป็นตัวเลข แล้ว lock ไว้ก่อนกด run

ลำดับ
ที่ถูก เขียน criteria → run → อ่านผล
ที่ผิด run → ดูผล → เขียน criteria ให้ผ่าน

ห้ามแก้ criteria หลังเห็นผล แก้เมื่อไร ผลรอบนั้นใช้ตัดสินไม่ได้

ทำไมต้องเข้มขนาดนี้: backtest run ใหม่ได้ไม่จำกัด ลอง 20 preset ยังไงก็เจอตัวที่ "ผ่าน" แม้ EA จะไม่มี edge เลย ทุกการทดสอบจึงต้องลงบรรทัดใน file sidak-ledger (ใน kit คือ research\3-prereg\sidak-ledger.md · แม่แบบ prereg คือ research\3-prereg\prereg-template.md) ยิ่งลองมาก เส้น t ที่ต้องผ่านยิ่งสูงขึ้น

คำนี้มาจากการทดลองยา ที่ผู้วิจัยต้องลงทะเบียนแผนก่อนเก็บผล เพราะเคยมีการตีพิมพ์เฉพาะแบบที่ได้ผลดี ปัญหาที่มันกัน:

ชื่อ คืออะไร
p-hacking ลองหลายแบบแล้วรายงานแบบที่ผ่าน
HARKing ตั้งสมมติฐานหลังเห็นผล
garden of forking paths การตัดสินใจเล็ก ๆ ที่เอนตามผลที่เห็นแล้ว

ข้อจำกัด: prereg กันการโกงตัวเองได้ แต่ไม่ได้ทำให้คำถามหรือ criteria ถูกต้องขึ้นมาเอง criteria ที่ตั้งไว้ผิดก็ยังผิดอยู่ แม้จะเขียนไว้ก่อน run


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

พลาด ผลที่ตามมา ทางกัน
Modelling ไม่ใช่ "Every tick based on real ticks" tester ไม่ใช้ tick จริง ตั้งทุกครั้ง · ใน config คือ model: 4
terminal ไม่ใช่ภาษาอังกฤษ ระบบอ่านรายงานไม่ออก ตั้งภาษา terminal เป็นภาษาอังกฤษ
พิมพ์ชื่อ file EA ผิดตัวพิมพ์เล็กใหญ่ tester run Moving Average แทนเงียบ ๆ เห็นรายงานชื่อ Moving Average หรือจบใน ~15 วินาที = ชื่อ file ผิด
คิดว่า Download history ค้าง ปิด tester กลางทาง ดู % มุมขวาล่าง ไม่ขยับนานหลายนาทีค่อย check network
จำ contract size เป็น 100 lot ผิด 10 หรือ 100 เท่า อ่านจาก symbol ของทุก broker
ลืมหาร 100 บนบัญชี cent ตัวเลขพอง 100 เท่า ดีเกินจริง = สงสัยหน่วยก่อน
เชื่อชื่อบัญชี บัญชีชื่อ cent อาจเป็น USD ดู contract size และสกุลเงินจริง
คูณ points ×10 ใน .set เอง ค่าเพี้ยนบน EA ที่ปรับ digits ให้แล้ว ห้ามคูณเอง
ดูแค่ mean พลาดแบบชุด B ที่อยู่ได้ด้วย tail ดู distribution และตัด trade สูงสุดออก
ตัดสินด้วยผลรวม R หรืออัตราส่วน พลาด volatility drag คิดเป็นตัวคูณทุน
ค้นแล้วได้ 0 แล้วสรุปว่าไม่มี สรุปผิดเพราะ file เป็น UTF-16 ถือว่าคำสั่งผิดจนพิสูจน์ได้
แก้ criteria หลังเห็นผล ผลรอบนั้นใช้ตัดสินไม่ได้ เขียนและ lock ก่อน run · ลง sidak-ledger

ทวนท้ายบท

P0-Q

  1. EA เปิด 0.10 lot บน Axi XAUUSD.min ราคาขยับ $2 ได้กำไรเท่าไร
  2. รายงานบัญชี USC ขึ้นว่า "+568R ในสัปดาห์เดียว" ต้องสงสัยอะไรก่อน
  3. ค้น OnlyUp ใน preset ได้ 0 file สรุปว่าไม่มี preset ไหนใช้ค่านี้ได้ไหม
เฉลย
  1. $2 — $2 × 0.10 lot × contract size 10 = $2 เพราะ contract ของ XAUUSD.min คือ 10 ถ้าจำเลข 100 จะได้ $20 ผิดไป 10 เท่า
  2. สงสัยหน่วยก่อน บัญชี USC ตัวเลขเป็น cent ต้องหาร 100 ได้ +5.68R ตัวเลขที่ดีเกินจริงให้สงสัยหน่วยก่อนสงสัยกลยุทธ์
  3. สรุปไม่ได้ file ของ MT5 เป็น UTF-16 case จริงค้นได้ 0 จาก 28 file ทั้งที่มีจริง 6 file ผลว่างให้ถือว่าคำสั่งผิดจนกว่าจะพิสูจน์ได้