คู่มือ config
หน้านี้ใช้เมื่อต้องสร้างหรือแก้ file config ของ backtest แล้วอยากรู้ว่า key แต่ละตัวทำอะไร · ค่าใน kit คือเท่าไร · และถ้าไม่ได้ตั้ง ระบบใช้ค่าอะไรแทน
ยังไม่เคยเห็นระบบนี้เลย → เริ่มที่ ภาพรวมระบบ backtest ก่อน · บทเรียนที่สอนเรื่องนี้คือ S3 · โครง file และ config
config คืออะไร
config คือ file ข้อความนามสกุล .yaml ใน folder bt\ ของ kit (เช่น bt\config.yaml) ที่บอกระบบ backtest สี่เรื่อง:
| คำถาม | key หลัก |
|---|---|
| run บน broker ไหน (บริษัทที่เปิดบัญชี demo ให้ · หนึ่ง broker = MT5 หนึ่งตัว) | brokers |
run EA (program trade อัตโนมัติ) ตัวไหน ด้วย .set (file ค่า input ของ EA) ไหน |
set_dir · only_presets · ea_dir · period |
| ให้ tester (Strategy Tester ของ MT5) จำลองยังไง: ช่วงวันที่ · ทุน · leverage | model · date_from · date_to · deposit · leverage |
เก็บรายงาน (file .htm ผล backtest) ไว้ไหน |
backtest_root · skip_existing |
YAML คือรูปแบบ key: ค่า หนึ่งบรรทัดต่อหนึ่ง key · บรรทัดที่ขึ้นต้นด้วย # คือ comment ระบบไม่อ่าน · รายการเขียนเป็น ['a', 'b'] หรือขึ้นบรรทัดใหม่ด้วย -
แก้ config ได้สองทาง: card การตั้งค่า ใน dashboard (13 key ที่มีใน form) หรือ แก้ YAML ดิบ / เปิด file ด้วย text editor (ทุก key) · ดู คู่มือ dashboard
config ใน kit (bt\config.yaml)
ค่าจริงจาก file (ตัด comment ออก):
brokers: []
set_dir: set/LAB_MACROSS
only_presets: ['V1.00/default']
ea_dir: eas
ea_subdir: starter-kit
period: H1
model: 4
delay: 500
date_from: '2026-01-01'
date_to: '2026-04-30'
deposit: 10000
currency: USD
leverage: 500
run_timeout_sec: 7200
skip_existing: true
backtest_root: research/4-backtest/_lab/LAB_MACROSS_IS2026
brokers: [] ว่างตอนแตก kit ใหม่ — ระบบเติมให้เองเมื่อเพิ่มบัญชี demo (คู่มือติดตั้ง)

bt\config.yaml หลังเพิ่มบัญชี demo หนึ่งบัญชี (Notepad++): brokers มีหนึ่งรายการ (name · terminal_path · symbol · portable · enabled) ที่ระบบเติมให้ · ในภาพ deposit: 1000 เพราะ clip อัดก่อน kit เปลี่ยนเป็น 10000
กฎที่ใช้กับทุก key (จาก code bt/core/config.py)
| กฎ | ผล |
|---|---|
key ที่ต้องมีเสมอ: brokers · set_dir · backtest_root |
ไม่มี key ใดในสามตัวนี้ = ระบบ load config ไม่ได้ · brokers: [] ว่างได้แต่บรรทัดต้องมี |
| key ที่ไม่รู้จักถูกทิ้งเงียบ ๆ | พิมพ์ชื่อ key ผิด (เช่น deposite) จะไม่มี error — ระบบใช้ค่าตั้งต้นของ key ที่ถูกแทน · ผลออกมาแต่ run ด้วยค่าที่ไม่ได้ตั้งใจ |
| ค่าที่ไม่ได้ตั้ง ใช้ค่าตั้งต้นของ code | ค่าตั้งต้นหลายตัวต่างจากค่าใน kit มาก (ดู column "ถ้าไม่ได้ตั้ง") · ลบ key ออกโดยไม่ตั้งใจ = run ด้วยค่าอื่นโดยไม่มีอะไรเตือน |
| path สัมพัทธ์เทียบกับ folder kit | ใช้กับ set_dir · backtest_root · ea_dir · ไม่ขึ้นกับว่า run คำสั่งจาก folder ไหน · ใช้ / หรือ \ ได้ |
| วันที่ใส่หรือไม่ใส่เครื่องหมายคำพูดก็ได้ | date_from: '2026-01-01' กับ date_from: 2026-01-01 ได้ค่าเดียวกัน |
★ ตรวจทุกครั้งหลังแก้: bt\ea-bt.exe run --config bt\<file>.yaml --dry-run พิมพ์ช่วงวันที่ · TF · model · broker · จำนวนงานที่ระบบอ่านได้จริง (คู่มือคำสั่ง)
key ที่แก้ได้ใน form dashboard
| key | ความหมาย | ค่าใน kit | ถ้าไม่ได้ตั้ง |
|---|---|---|---|
period |
TF (timeframe) ของ chart ที่ tester ใช้ เช่น M1 M5 H1 · ต้องตรงกับที่ EA ออกแบบมา |
H1 |
M1 |
model |
วิธีสร้างราคาใน tester · 4 = every tick based on real ticks (tick จริงจาก broker) · 1 = 1-min OHLC · 0 = every tick · 2 = open prices · ใช้ 4 เสมอ |
4 |
4 |
delay |
หน่วงเวลาส่งคำสั่งจำลอง หน่วย ms | 500 |
0 |
date_from |
วันแรกของช่วงทดสอบ · ห้ามพิมพ์เอง เอาจาก bt\ea-bt.exe is_oos --year <ปี> --yaml |
2026-01-01 |
2024-01-01 |
date_to |
วันสิ้นสุด · tester หยุดที่ 00:00 ของวันนี้ = วันนี้ไม่ถูก run | 2026-04-30 |
2026-12-31 |
deposit |
ทุนเริ่มของบัญชีจำลอง ในสกุลของ currency |
10000 |
1000 |
currency |
สกุลของบัญชีจำลอง · บัญชี cent (บัญชีที่นับเป็นเซนต์) ใช้ USC และ deposit เป็นเซนต์ (100000 USC = 1,000 USD) |
USD |
USD |
leverage |
อัตราทด เลขเดียว เช่น 500 = 1:500 |
500 |
2000 |
run_timeout_sec |
หนึ่งงานเกินกี่วินาทีระบบปิด MT5 แล้วนับว่าล้มเหลว · รวมเวลาที่ MT5 โหลด tick ครั้งแรก | 7200 |
36000 |
skip_existing |
true = งานที่มีรายงานแล้วและค่าใน .ini เดิมตรงกับ config ปัจจุบันจะไม่ run ซ้ำ · เปลี่ยนวันที่ ทุน หรือ leverage = run ใหม่เอง (S4 หัวข้อ 3) |
true |
true |
ea_dir |
folder ที่เก็บ .mq5 / .ex5 · ระบบหา .ex5 ที่นี่ compile .mq5 ที่ยังไม่มี .ex5 ให้เอง แล้ว copy เข้า MT5 |
eas |
ไม่ตั้ง = ระบบไม่ copy .ex5 ให้ · tester ใช้ EA ที่อยู่ใน MT5 อยู่แล้วตามชื่อ (ดู expert) |
ea_subdir |
ชื่อ folder ย่อยใน MT5 ที่ .ex5 ถูก copy ไป: <MT5>\MQL5\Experts\<ค่านี้>\ |
starter-kit |
ea-rev-en |
backtest_root |
folder รายงาน · ผลลง <backtest_root>\<EA>\<version>\<broker>\<preset>.htm · ต้องมี |
research/4-backtest/_lab/LAB_MACROSS_IS2026 |
— (ไม่มี = error) |
ตัวอย่างผลกระทบของค่าตั้งต้น: ลบบรรทัด deposit กับ leverage ออก = run ด้วยทุน 1000 และ leverage 2000 · comment ใน bt\config.yaml ของ kit เตือนว่า LAB_MACROSS ที่ทุน 1,000 ได้ lot ขั้นต่ำพอดี ขาดทุนไม้แรกแล้ว lot ปัดลงเหลือ 0 และ EA หยุดยิงทั้งรอบ
key ที่แก้ได้ใน YAML เท่านั้น
brokers — รายชื่อ MT5 ที่ใช้ run
หนึ่งรายการ = หนึ่งบัญชี demo = MT5 หนึ่งตัว · ปกติไม่ต้องพิมพ์เอง: ฟอร์ม "เพิ่มบัญชี demo" หรือ bt\ea-bt.exe add_account เขียนให้ในรูปนี้
brokers:
- name: RoboForex-Demo
terminal_path: <folder kit>/mt5/MT5_RoboForex-Demo/terminal64.exe
symbol: XAUUSD
portable: true
enabled: true
| key ย่อย | ความหมาย | ถ้าไม่ได้ตั้ง |
|---|---|---|
name |
ชื่อ broker ในระบบ · กลายเป็นชื่อ folder ผล · ตั้งแล้วอย่าเปลี่ยน | ต้องมี |
terminal_path |
path ของ terminal64.exe ของ MT5 ตัวนั้น |
ต้องมี |
symbol |
ชื่อทองของ broker นั้น ตรงตัวอักษรกับ Market Watch (เช่น XAUUSD · XAUUSDm) |
ว่าง |
portable |
เปิด MT5 แบบ /portable (ข้อมูลอยู่ใน folder ของ MT5 ตัวนั้นเอง) · ใช้ true เสมอ |
true |
enabled |
false = ข้าม broker นี้ชั่วคราว เช่น บัญชีที่ tick_depth --from ไม่ตอบ ticks yes · แถวยังอยู่ |
true |
เลือก EA และ .set
ชื่อ file .set ต้องเป็นรูป {EA}_v{version}_{preset}.set เช่น LAB_MACROSS_v1.00_default.set (EA = LAB_MACROSS · version = V1.00 · preset = default) · ชื่อไม่ตรงรูป = ระบบนับเป็น version unversioned (S3 หัวข้อ 1)
| key | ความหมาย | ค่าใน kit | ถ้าไม่ได้ตั้ง |
|---|---|---|---|
set_dir |
folder ของ .set ของ EA หนึ่งตัว · ระบบค้นลง folder ย่อย (V1.00\) ให้เอง · ต้องมี |
set/LAB_MACROSS |
— (ไม่มี = error) |
only_presets |
เลือก .set ราย file ในรูป 'V<version>/<preset>' · ตัวพิมพ์เล็ก/ใหญ่ไม่มีผล |
['V1.00/default'] |
ว่าง = ไม่กรองราย file (ทุก .set ใน version ที่เลือก) |
only_versions |
เลือกเฉพาะบาง version เช่น ['V1.00'] |
— | ว่าง = ทุก version |
set_glob |
pattern ของชื่อ file .set · ไม่มี / = ค้นทุก folder ย่อย · มี / เช่น V0.30/*.set = ตามนั้นตรง ๆ |
— | *.set |
expert |
ชื่อ EA ที่ใส่ให้ tester · ปกติไม่ต้องตั้ง | — | ว่าง = เดาจากชื่อ .set เป็น {EA}_v{version} ซึ่งต้องตรงกับชื่อ .ex5 |
strategy · version |
บังคับชื่อ EA / version แทนค่าที่อ่านจากชื่อ .set · ปกติไม่ต้องตั้ง |
— | ว่าง = อ่านจากชื่อ .set |
★ เลือก EA ใหม่จากรายการ EA ใน dashboard = ระบบเขียน set_dir เป็น set\<ชื่อ> แล้วล้าง only_presets · only_versions · expert · strategy · version · EA ที่รับเข้าด้วย intake (research\1-screen\set\<ชื่อ>) ไม่อยู่ในรายการนั้น ให้ตั้ง set_dir ด้วยมือ
walk-forward
walk-forward = run .set เดียวซ้ำหลายช่วงเวลาที่เลื่อนไปเรื่อย ๆ (แต่ละช่วงคือ test period) เพื่อดูว่าผลนิ่งข้ามเวลาไหม · card walk-forward ใน dashboard เขียนสาม key นี้ลง config ให้เมื่อกดปุ่ม
| key | ความหมาย | ถ้าไม่ได้ตั้ง |
|---|---|---|
walk_set |
ชื่อ preset หรือชื่อ file .set ที่จะ walk |
ว่าง = เพิ่มงาน walk-forward เข้า queue ไม่ได้ |
window_days |
ความยาวของแต่ละ test period (วัน) | 30 |
step_days |
test period ถัดไปเริ่มห่างจากอันก่อนกี่วัน | 5 |
ผลลง <backtest_root>\_walk\<EA>\<version>\<broker>\<preset>\
อื่น ๆ
| key | ความหมาย | ถ้าไม่ได้ตั้ง |
|---|---|---|
visual |
true = run tester แบบ visual mode · ใช้กับ EA ที่ไม่ยอม trade ใน tester แบบปกติ · ช้ากว่าราว 1.6 เท่า (จาก comment ใน code) |
false |
ตัวอย่าง: config สำหรับ EA ของตัวเอง
copy bt\config.yaml เป็น bt\config_<ชื่อ>.yaml (รายการ broker ติดมาด้วย) แล้วแก้ตามตารางนี้ — มาจาก README ของ kit หัวข้อ "ทดสอบ EA ของตัวเอง" · ขั้นตอนเต็มอยู่ใน ทดสอบ EA ของตัวเอง
| key | EA ที่ download/ซื้อมา (ผ่าน intake) |
EA ที่เขียนเอง |
|---|---|---|
set_dir |
research/1-screen/set/<ชื่อ> |
set/<ชื่อ> |
only_presets |
['V0.01/default'] |
['V0.01/default'] |
ea_dir |
research/1-screen/eas |
eas |
period |
timeframe ที่ EA ออกแบบมา | timeframe ที่ EA ออกแบบมา |
date_from / date_to |
จาก bt\ea-bt.exe is_oos --year 2026 --yaml |
เหมือนกัน |
backtest_root |
research/4-backtest/<ชื่อ>_IS2026 |
research/4-backtest/<ชื่อ>_IS2026 |
IS 2026 = ช่วง in-sample ของปี 2026 (ช่วงที่ใช้คัดเลือก) จาก is_oos · ช่วง out-of-sample (OOS) เก็บไว้ยืนยันทีหลัง ห้ามใช้เลือกอะไร
เกณฑ์ผ่าน/ตกเขียนไว้ในหัว file config ก่อนกด run (comment #) — นับเป็น prereg คือเกณฑ์ที่เขียนก่อนเห็นผล · template อยู่ที่ research\3-prereg\prereg-template.md
จุดที่มักพลาด
| พลาด | ผล | กัน |
|---|---|---|
| แก้ config หลังเพิ่มงานเข้า queue แล้ว | งานที่รออยู่ยังใช้ค่าเดิม — queue copy config ทั้งก้อนไว้ตอนกดเพิ่ม | ลบงานแล้วเพิ่มใหม่ (S4 หัวข้อ 2) |
| พิมพ์ชื่อ key ผิด | ไม่มี error · ใช้ค่าตั้งต้นแทน | --dry-run แล้วอ่านบรรทัด period / broker |
พิมพ์ date_from เอง |
ช่วงไม่ตรง block IS/OOS · หรือช่วงไม่มี tick จริง | เอาจาก is_oos --yaml · check ด้วย is_oos --check <from> <to> |
| ย้ายรายงานหลัง run | ระบบหาไม่เจอแล้ว run ซ้ำ | ไม่ย้ายของใต้ backtest_root |
บัญชี cent ใส่ deposit เป็นดอลลาร์ |
ทุนเล็กลง 100 เท่า | currency: USC คู่กับ deposit เป็นเซนต์ |
ดูต่อ
- ภาพรวมระบบ backtest — เริ่มที่นี่ถ้ายังไม่รู้จักระบบ
- ทดสอบ EA ของตัวเอง — ใช้ config นี้ทีละขั้น
- คู่มือ dashboard — card การตั้งค่าและแก้ YAML ดิบ
- คู่มือคำสั่ง ea-bt.exe —
run --dry-run·is_oos - ปัญหาที่พบบ่อย
- S3 · โครง file และ config · S4 · run งานผ่าน dashboard และ queue