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

คู่มือ 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

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 เป็นเซนต์

ดูต่อ