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

M0 · ติดตั้งระบบ EA Research

▶ clip: https://youtu.be/pgZRF3iRk-U

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

  • เตรียมเครื่องและบัญชีให้ครบก่อนติดตั้ง และรู้ว่าแต่ละข้อจำเป็นเพราะอะไร
  • อธิบายได้ว่า 1-ติดตั้ง.bat ทำอะไรให้บ้าง และผลแบบไหนแปลว่าติดตั้งสำเร็จ
  • เพิ่มบัญชี demo ผ่าน dashboard และรู้ว่ารหัสผ่านไปอยู่ที่ไหนบ้าง
  • check ว่า broker มี tick จริงในช่วงที่จะ test ก่อนตั้ง date_from

ต้องมีก่อน: จบ P0 · ของในตารางหัวข้อ 1

Standard ไม่ต้องใช้ Claude Code — ทุก lab ใน Standard พิมพ์คำสั่ง bt\ea-bt.exe เองตามจอ · Claude Code ใช้ใน course Advanced และต้องมี plan แบบเสียเงินตั้งแต่ Pro ขึ้นไป

บทนี้อธิบายว่าแต่ละขั้นทำอะไรและทำไม ขั้นตอนทีละขั้นให้ทำตามอยู่ใน M0-LAB


1 · สิ่งที่ต้องมีก่อนติดตั้ง

M0-0

ของ ขั้นต่ำ ทำไม
Windows 10 / 11 MT5 และเครื่องมือทั้งหมดผูกกับ Windows · Mac / Linux ใช้ไม่ได้
RAM 16 GB backtest หนึ่งงานใช้ราว 3.8 GB + ระบบกันไว้ 8 GB · run ได้ทีละงาน · เครื่อง 8 GB งานจะช้ามากหรือไม่จบ
disk ว่าง 60 GB (SSD) MT5 หนึ่งตัวต่อหนึ่งบัญชี + tick ของทองหลายปีใช้หลาย GB ต่อตัว
MT5 — download และติดตั้งเองจาก metatrader5.com · kit แจกให้ไม่ได้ (EULA ข้อ 2.2)
บัญชี demo RoboForex 1 บัญชี server RoboForex-ECN · ทอง XAUUSD · มี tick จริงช่วง IS 2026 ที่ทุก lab ใช้
starter kit — zip ที่ผู้สอนส่งให้ · ใช้เรียนส่วนตัว · ห้ามแจกต่อ
Claude Code ไม่ต้องใช้ใน Standard บังคับใน Advanced · ต้องมี plan Pro / Max / Team / Enterprise หรือบัญชี Console (plan ฟรีใช้ไม่ได้) · วิธีติดตั้งอยู่ใน README ของ kit หัวข้อ "ติดตั้ง Claude Code"

ต้องรู้สี่อย่างของบัญชี demo ก่อนเริ่ม: เลขบัญชี · รหัสผ่าน · ชื่อ server · ชื่อทองของ broker (broker อื่นอาจไม่ใช่ XAUUSD เช่น XAUUSDm) — ได้จาก email ที่ broker ส่งมาตอนเปิดบัญชี

ไม่ต้องติดตั้ง Python

2 · starter kit: แตก zip แล้ว run คำสั่งเดียว

M0-6

เครื่องมือทั้งหมดถูก compile รวมเป็น file เดียวชื่อ bt\ea-bt.exe เรียกใช้แบบ bt\ea-bt.exe <ชื่อเครื่องมือ> [argument] จึงไม่ต้องลง Python · ดูรายชื่อเครื่องมือด้วย bt\ea-bt.exe --list และทุกเครื่องมือมี --help

MT5 ต้อง download และติดตั้งเองก่อน เพราะ kit แจก MT5 ไม่ได้ตาม EULA ของ MetaQuotes ข้อ 2.2 · ติดตั้งไว้ที่เดิม (C:\Program Files\...) ได้เลย ตัวที่ติดตั้งนี้ใช้งานเองได้ตามปกติ ระบบไม่แตะ

double-click 1-ติดตั้ง.bat แล้วมันทำสี่อย่าง

# ทำอะไร บรรทัดในหน้าต่าง (ภาพบนจอ)
1 ปลดป้าย "มาจาก internet" ของ file ใน kit kit files · internet mark removed from files
2 copy MT5 ที่ติดตั้งไว้ใต้ C:\Program Files มาเป็นต้นแบบ mt5\_template\ (ครั้งเดียว) · มีหลายตัวให้พิมพ์เลขเลือก · ไม่เจอจะถามที่อยู่ folder MT5 MT5 template · broker server list in the template (62 KB)
3 สร้าง folder ของงานวิจัย research folders — research\0-intake\inbox · research\0-intake\sources · research\1-screen\eas · research\1-screen\set · research\4-backtest\_lab · research\data
4 run checker สามตัว checks — is_oos (IS/OOS windows) · mc --selftest · add_account --selftest

ตอน run ครั้งแรก script จะเปิด MT5 ต้นแบบขึ้นมา ให้ค้นชื่อ broker (File → Open an Account → พิมพ์ชื่อ broker) รอจนชื่อบริษัทขึ้นแล้วกด Cancel · ห้าม login ในต้นแบบ · ขั้นนี้ทำให้ต้นแบบรู้จัก server ของ broker (file servers.dat โตจาก 25 KB เป็น 62 KB สำหรับ RoboForex)

สำเร็จเมื่อ: ทุกบรรทัดขึ้น [ok] และจบที่ ready · run ซ้ำได้ ไม่เสียหาย และไม่ทำอะไรซ้ำซ้อน

ข้อความในหน้าต่างเป็นภาษาอังกฤษ เพราะ console ของ Windows แสดงสระไทยแตก

ถ้า Windows เตือน

เตือน ทำ
SmartScreen กด More info แล้ว Run anyway (ea-bt.exe ยังไม่ได้เซ็นดิจิทัล)
Defender กัก file ยกเว้นเฉพาะ file นั้น ห้ามยกเว้นทั้ง folder — ใน PowerShell แบบ admin: Add-MpPreference -ExclusionPath "<folder kit>\bt\ea-bt.exe" แล้วแตก zip ใหม่ · ถ้ากัก file ใน %LOCALAPPDATA%\ea-bt\ (ที่ ea-bt.exe แตกตัวเองไปไว้ตอนเปิดครั้งแรก) ให้ยกเว้น "$env:LOCALAPPDATA\ea-bt" ด้วยคำสั่งเดียวกัน

ติดตั้งเสร็จแล้ว ใช้ทุกวันด้วย 2-เปิดหน้าคุม.bat file เดียว ซึ่งเปิด dashboard ใน browser

3 · เพิ่มบัญชี demo = MT5 ใหม่ 1 ตัว

M0-7

หนึ่งบัญชีใช้ MT5 หนึ่งตัว เพราะ tester ของแต่ละตัวผูกกับ server และ tick ของ broker นั้น

ขั้น 0 · ต้นแบบต้องรู้จัก server ของ broker ก่อน — broker แรก 1-ติดตั้ง.bat ทำให้แล้วในหัวข้อ 2 · broker ถัดไปกดปุ่ม เปิด MT5 ต้นแบบ ในformเพิ่มบัญชี แล้วค้นชื่อ broker แบบเดิม → Cancel → ปิด MT5 · ข้ามขั้นนี้ login จะไม่ผ่าน เพราะ MT5 ไม่รู้ว่า server ชื่อนั้นอยู่ที่ไหน

ผู้เรียนทำสามขั้น

  1. เปิดform — dashboard → card "MT5 ต่อ broker" → เพิ่มบัญชี demo
  2. กรอก — ชื่อเรียก (ใช้ชื่อ broker นำหน้า) · เลขบัญชี · server · ชื่อสัญลักษณ์ทอง · รหัสผ่าน · ชื่อ server ต้องตรงตัวอักษรตามที่ broker ส่งมา
  3. กดตามลำดับ — ตรวจแผน ก่อน (ยังไม่ทำอะไรจริง แค่บอกว่าจะทำอะไร) แล้วค่อยกด เพิ่มบัญชี

ระบบทำต่อเอง

copy ต้นแบบ → login (start.ini) → ลบ start.ini + ปิด MT5 → ใส่บัญชีเข้า config.yaml

สำเร็จ: กล่องเขียว ✓ ครบหกบรรทัด (จากภาพformจริงบนจอ)

✓ copy terminal
✓ logged in
✓ start.ini deleted (had the password)
✓ MT5 closed
✓ MT5 saved the password (accounts.dat)
✓ added to the broker list

ได้ folder ใหม่ mt5\MT5_<ชื่อ>\ และแถวใหม่ในตาราง broker

ไม่สำเร็จ: กล่องแดงบอกสาเหตุ · ระบบลบ folder mt5\MT5_<ชื่อ>\ ที่เพิ่ง copy ให้เอง แก้ข้อมูลแล้วกดเพิ่มบัญชีใหม่ได้เลย

ข้อควรระวัง: MT5 ต้นแบบต้องไม่เคยถูก login · ถ้ามี file accounts.dat ในต้นแบบ ระบบจะปฏิเสธ เพราะต้นแบบที่เคย login จะพารหัสบัญชีติดไปทุกบัญชีที่ copy ออกไป

คำสั่งเดียวกันแบบ command line (รหัสผ่านยังพิมพ์ในหน้าต่าง ไม่ใส่ในคำสั่ง):

bt\ea-bt.exe add_account --name <ชื่อ> --login <เลขบัญชี> --server RoboForex-ECN --symbol XAUUSD

4 · รหัสผ่านไปทางไหน

M0-8

form (ผู้เรียนพิมพ์เอง) → stdin (ส่งเข้าโปรแกรมตรง ๆ) → start.ini → MT5 (จำรหัสเองใน accounts.dat)
ที่ รหัสผ่านอยู่ไหม
start.ini อยู่ชั่วคราว · ถูกลบทุกครั้ง แม้ login ไม่ผ่าน
argv (ตัวแปรในบรรทัดคำสั่ง) ไม่ผ่าน
log ไม่ลง
config ไม่อยู่
accounts.dat ของ MT5 บัญชีนั้น MT5 จำรหัสเองตามปกติ

หลักที่ใช้: file ที่มีรหัสเป็นข้อความเปล่าต้องมีอายุสั้นที่สุด หลักเดียวกันนี้ใช้ตอน deploy ขึ้น VPS ใน course Advanced

ถ้า login ไม่ผ่าน ระบบลบ folder ของบัญชีนั้นให้เอง ไม่มีรหัสค้างที่ไหน แก้ข้อมูลแล้วกดเพิ่มบัญชีใหม่ได้

5 · หลายบัญชี = ทดสอบข้าม broker

M0-9

บัญชีที่สองและสามเพิ่มด้วยขั้นตอนเดิม (อย่าลืมขั้น 0 ในหัวข้อ 3)

ตาราง broker          queue เดียว            รายงาน 3 ฉบับ
บัญชี A · ใช้    →    งาน 1 · บัญชี A    →    ผลของ broker A
บัญชี B · ใช้    →    งาน 2 · บัญชี B    →    ผลของ broker B
บัญชี C · ใช้    →    งาน 3 · บัญชี C    →    ผลของ broker C

สั่ง run หนึ่งครั้ง ระบบสร้างหนึ่งงานต่อหนึ่งบัญชีใน queue เดียว ได้รายงานแยกต่อ broker · อยากพักบัญชีไหน เอาเครื่องหมาย "ใช้" ออก

ทำไมต้องหลาย broker: ผลที่ผ่าน broker เดียวยังไม่พอ ต้องผ่านหลาย broker ที่ feed อิสระกัน (รายละเอียดใน S7)

check tick ทุกครั้งที่เพิ่มบัญชี

แต่ละ broker มี tick ย้อนหลังไม่เท่ากัน ทุกครั้งที่เพิ่มบัญชี ต้อง run สองคำสั่งตามลำดับนี้

bt\ea-bt.exe tick_depth --terminal mt5\MT5_<ชื่อ> --from 2026-01
bt\ea-bt.exe tick_years --own
ขั้น ทำอะไร ทำไมลำดับนี้
ปิด MT5 ของบัญชีนั้นก่อน — MT5 ที่เปิดค้างอาจหยุดดึง tick เก่ากลางทาง แล้วตอบเดือนที่ใหม่เกินจริง
tick_depth --from <YYYY-MM> เปิด MT5 ไล่ดึง tick ย้อนทีละเดือนจนถึงเดือนที่ใส่ แล้วตอบว่ามี tick จริงไหม · ปิด MT5 เอง ต้องดึง tick ลงเครื่องก่อน
tick_years --own อ่าน tick ที่อยู่ในเครื่องแล้ว บอกว่ามีเดือนไหนบ้าง อ่านเฉพาะของในเครื่อง run ก่อนดึงจะไม่ขึ้นอะไรเลย

--from ใส่เดือนแรกของช่วงที่จะ test

อ่านผล

เห็น แปลว่า
ticks yes (exit 0) มี tick จริงตั้งแต่เดือนที่ถาม
NO — only M1 bars ช่วงนั้นไม่มี tick จริง tester จะสร้างจาก M1 ให้เงียบ ๆ → ใช้ช่วงนั้นกับบัญชีนี้ไม่ได้
* ต่อท้ายเดือนแรกใน tick_years --own file เล็กกว่า 60% ของเดือนอื่น อาจดึงไม่ครบเดือน → run tick_depth --from ซ้ำ

ค่าที่วัดแล้วของ lab: RoboForex demo (RoboForex-ECN · XAUUSD) วัดเมื่อ 30 ต.ค. 2026 ได้ ticks yes · มี tick เต็มช่วง IS 2026 (2026-01-01 → 2026-04-30) · บัญชีใหม่ดึงถึง ม.ค. 2026 ใช้ 67 วินาที

ห้ามตัด --from ทิ้ง: ไม่ใส่ --from เครื่องมือจะหาขอบล่างสุดของ broker ซึ่งบนบัญชีใหม่ยังไม่นิ่ง เพราะ MT5 ยังดึงไม่จบ (sandbox 30 ต.ค. 2026: RoboForex-ECN demo ดึง 25 นาทีได้ถึง 2022-05 แล้วยังไปต่อ ขึ้น unstable) อย่าใช้ค่านั้นตั้ง date_from

6 · ผู้เรียน · Claude · ระบบ backtest คุยกันยังไง

M0-10

ภาพนี้คือ course Advanced · ใน Standard ยังไม่ต้องใช้ Claude Code ทุก lab พิมพ์ bt\ea-bt.exe เอง

ใคร ทำอะไร
ผู้เรียน สั่งงานเป็นภาษาคน ไม่ต้องจำคำสั่ง
Claude Code อ่าน CLAUDE.md + skill · เรียกเครื่องมือใน ea-bt.exe (is_oos · tick_years) · เขียน config · เพิ่มงานเข้า queue · อ่านรายงาน (mc · verdict) · เขียน analysis.md + status.yaml
ระบบ backtest ea-bt.exe + MT5 + file งาน + dashboard · MT5 run tester เอง รายงาน .htm ลง backtest_root

dashboard อ่านจาก file ชุดเดียวกับที่ Claude เขียน จึงเห็นของใหม่หลังเปิดหรือ refresh หน้า

สองอย่างที่ผู้เรียนทำเองโดยตั้งใจ

ทำเอง เหตุผล
กด "เริ่ม queue" บน dashboard backtest กินเวลาเครื่องเป็นชั่วโมง
พิมพ์รหัสบัญชีในform รหัสผ่านต้องไม่ผ่าน chat

ถ้า Claude บอกว่า "run ให้แล้ว" ให้เข้าใจว่าเตรียมไว้ให้แล้ว แต่ยังไม่ได้ run จนกว่าคุณจะกดเริ่ม queue เอง

Claude ไม่ทำเองแม้ผู้เรียนสั่ง: กด start backtest · ขอหรือรับรหัสผ่าน · login ใน mt5\_template


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

พลาด ผลที่ตามมา ทางกัน
ใช้เครื่อง RAM 8 GB backtest ช้ามากหรือไม่จบ RAM 16 GB ขึ้นไป
ยกเว้น Defender ทั้ง folder เปิดช่องให้ทั้ง folder ยกเว้นเฉพาะ file ที่ถูกกัก
login ใน mt5\_template ระบบปฏิเสธการเพิ่มบัญชี (accounts.dat) · รหัสติดไปทุกบัญชีที่ copy ในต้นแบบค้นชื่อ broker แล้วกด Cancel เท่านั้น
ข้ามขั้นให้ต้นแบบรู้จัก server ของ broker ใหม่ login ไม่ผ่าน กด "เปิด MT5 ต้นแบบ" ค้นชื่อ broker ก่อนเพิ่มบัญชี
กด "เพิ่มบัญชี" โดยไม่กด "ตรวจแผน" ไม่รู้ว่าระบบจะทำอะไร ตรวจแผนก่อนเสมอ
เปิด MT5 ของบัญชีค้างไว้ตอน tick_depth ตอบเดือนที่ใหม่เกินจริง ปิด MT5 ของบัญชีนั้นก่อน
run tick_years --own ก่อน tick_depth ไม่ขึ้นอะไรเลย tick_depth ก่อน แล้วค่อย tick_years --own
ไม่ใส่ --from แล้วเอาขอบล่างไปตั้ง date_from ตั้งช่วงที่ MT5 ยังดึงไม่จบ ใส่ --from เป็นเดือนแรกของช่วงที่จะ test เสมอ
เชื่อว่า "Claude run ให้แล้ว" (Advanced) รอผลที่ยังไม่ได้ run กด "เริ่ม queue" เอง

ทวนท้ายบท

M0-K-Q

  1. mt5\_template\ เคยถูก login ไปแล้ว (มี accounts.dat) จะเพิ่มบัญชี demo ได้ไหม
  2. login ไม่ผ่าน รหัสผ่านค้างอยู่ที่ไหนบ้าง และต้องทำอะไรต่อ
  3. เพิ่มบัญชี broker ที่ 2 เสร็จ ตั้ง date_from: '2023-01-01' ได้เลยไหม
เฉลย
  1. ไม่ได้ ระบบจะปฏิเสธ เพราะต้นแบบต้องไม่เคยถูก login
  2. ไม่ค้างที่ไหน start.ini ถูกลบทุกครั้งแม้ login ไม่ผ่าน รหัสไม่ผ่าน argv ไม่ลง log และไม่อยู่ใน config · ระบบลบ folder ของบัญชีนั้นให้เอง แก้ข้อมูลแล้วกดเพิ่มบัญชีใหม่ได้เลย
  3. ยังไม่ได้ ต้องปิด MT5 ของบัญชีนั้น run tick_depth --from 2023-01 ดึง tick ก่อน แล้ว run tick_years --own ดูว่า broker นั้นมี tick จริงถึงปีไหน เพราะแต่ละ broker มี tick ย้อนหลังไม่เท่ากัน