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 · สิ่งที่ต้องมีก่อนติดตั้ง

| ของ | ขั้นต่ำ | ทำไม |
|---|---|---|
| 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 คำสั่งเดียว

เครื่องมือทั้งหมดถูก 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 ตัว

หนึ่งบัญชีใช้ MT5 หนึ่งตัว เพราะ tester ของแต่ละตัวผูกกับ server และ tick ของ broker นั้น
ขั้น 0 · ต้นแบบต้องรู้จัก server ของ broker ก่อน — broker แรก 1-ติดตั้ง.bat ทำให้แล้วในหัวข้อ 2 · broker ถัดไปกดปุ่ม เปิด MT5 ต้นแบบ ในformเพิ่มบัญชี แล้วค้นชื่อ broker แบบเดิม → Cancel → ปิด MT5 · ข้ามขั้นนี้ login จะไม่ผ่าน เพราะ MT5 ไม่รู้ว่า server ชื่อนั้นอยู่ที่ไหน
ผู้เรียนทำสามขั้น
- เปิดform — dashboard → card "MT5 ต่อ broker" → เพิ่มบัญชี demo
- กรอก — ชื่อเรียก (ใช้ชื่อ broker นำหน้า) · เลขบัญชี · server · ชื่อสัญลักษณ์ทอง · รหัสผ่าน · ชื่อ server ต้องตรงตัวอักษรตามที่ broker ส่งมา
- กดตามลำดับ — ตรวจแผน ก่อน (ยังไม่ทำอะไรจริง แค่บอกว่าจะทำอะไร) แล้วค่อยกด เพิ่มบัญชี
ระบบทำต่อเอง
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 · รหัสผ่านไปทางไหน

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

บัญชีที่สองและสามเพิ่มด้วยขั้นตอนเดิม (อย่าลืมขั้น 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 คุยกันยังไง

ภาพนี้คือ 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" เอง |
ทวนท้ายบท

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