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

A9 · check บัญชีก่อนลาก EA ขึ้น chart

▶ clip: https://youtu.be/73F5vxHqDJw

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

  • run symbol_check บนบัญชีที่จะใช้จริง และอ่านค่าที่ต้องใช้ออกมาได้ครบ
  • ตอบ checklist 9 ข้อของขั้น onboarding และรู้ว่าแต่ละข้อกันความเสียหายแบบไหน
  • คำนวณ lot ที่คาดว่าจะได้ด้วยมือ แล้วเทียบกับ lot ของ trade แรกที่ EA เปิดจริง
  • เขียน file <login>.md ของบัญชี demo หนึ่งบัญชี

ต้องมีก่อน: จบ A8 · มีบัญชี demo ของตัวเองหนึ่งบัญชีที่ login ใน terminal ของ kit แล้ว · ขั้นนี้คือขั้น 7 (research\7-onboarding\) ในโครง folder ของ kit


1 · ทุกข้อวัดจากบัญชีนั้นจริง

A9-1

ก่อนลาก EA ขึ้น chart บัญชีไหน ค่าทุกตัวที่ใช้คิด lot และความเสี่ยงต้องวัดจากบัญชีนั้นจริง ไม่ใช่ยืมจากบัญชีอื่น และไม่ใช่ยืมจาก broker อื่น แม้จะเป็นทองเหมือนกันก็ตาม

bt\ea-bt.exe symbol_check --terminal <path> --symbol <sym>

<path> คือ folder ของ terminal บัญชีนั้น (ใน kit อยู่ใต้ mt5\ เช่น mt5\MT5_<ชื่อ>) · <sym> คือชื่อ symbol ทองของบัญชีนั้นตามที่ broker ตั้ง

ค่าบนจอที่ต้องดู และเหตุผลที่ยืมกันไม่ได้:

ค่า ปัญหาถ้ายืมมา
contract_size ทองมีอย่างน้อย 3 ค่า: 1 · 10 · 100 ผิดตัวเดียว lot ผิดได้ 10–100 เท่า
tick_value บางบัญชี cent ส่งค่าเป็นคนละหน่วย (0.001 แทน 0.1) · บาง broker ส่ง tick_value=0
volume_max ตัด lot เงียบ ๆ ถ้า lot ที่คำนวณได้เกินเพดาน ผลของ risk 1% กับ 7% จะออกมาเท่ากันโดยไม่มีอะไรเตือน
GMT offset นาฬิกา server ของแต่ละ broker ต่างกัน EA ที่ดูเวลาทำงาน (เช่นเปิด/ปิดตามชั่วโมง) จะทำงานผิดชั่วโมง

อ่าน output ตรงไหน — บรรทัดที่เครื่องมือพิมพ์ออกมา (ตัวเลขจริงจะเป็นของบัญชีคุณ):

offset     : GMT+x.xx  <- use for ServerGMTOffset ...
account  : <login> <server> <currency> balance=... leverage=1:...

=== <sym>  (...)
    contract_size=...  tick_size=...  tick_value=...
    lot min/max/step = .../.../...
    currency base/profit/margin = .../.../...
  • บรรทัด account ให้ข้อ 2 ของ checklist (สกุลเงินที่บัญชีคืนมาจริง เช่น USD หรือ USC)
  • บรรทัด contract_size และ lot min/max/step ให้ข้อ 3
  • บรรทัด offset คำนวณจากราคาล่าสุดเทียบกับเวลา UTC จึงคำนวณไม่ได้ตอนตลาดปิด เครื่องมือจะพิมพ์ว่า cannot compute while the market is closed — rerun Mon–Fri ให้ run ใหม่วันจันทร์ถึงศุกร์
  • ถ้า terminal ยังไม่ login เครื่องมือจะหยุดและบอกให้ login ก่อน (symbol_check ต้องต่อบัญชีจึงจะอ่านค่าได้)

ผลทั้งหมดจดลง file ชื่อตามเลข login ของบัญชี (<login>.md) ตอบให้ครบ 9 ข้อในหัวข้อถัดไป

ข้อแรกคือ login ได้จริง ฟังดูเป็นเรื่องที่ไม่ต้อง check แต่ในระบบของผู้สอนเคยมี terminal บน VPS ขึ้น Invalid account อยู่ 38 ชั่วโมง โดยไม่มีใครรู้ ถ้า login ไม่ได้ ทุกข้อหลังจากนั้นก็ไม่มีความหมาย

2 · เก้าข้อที่ต้องตอบ

A9-2

ทุกข้อมาจากความเสียหายที่เกิดขึ้นจริง (บรรทัดสีส้มบน slide) ไม่ใช่ checklist ที่คิดขึ้นลอย ๆ

# ต้องรู้ ดูจากไหน ความเสียหายจริงที่เป็นที่มา
1 terminal login ได้จริง Journal ของ terminal ไม่มี authorization failed · บรรทัด account ของ symbol_check terminal บน VPS ขึ้น Invalid account 38 ชม. โดยไม่มีใครรู้
2 สกุลเงินจริงของบัญชี (USD · USC · …) บรรทัด account cent multiplier ตัดสินจาก string นี้ ผิดแล้ว lot ผิด 100 เท่า
3 contract_size · tick_value · volume (min/step/max) symbol_check ทองมี contract 1 / 10 / 100 · tick_value=0 บาง broker
4 ชั้น auto tier ที่ EA จะได้ตามขนาดทุน ยอดเงินแปลงเป็น USD เทียบกับเกณฑ์ของ EA EA-B บนทุนต่ำกว่า 2,700 USD ได้ชุดกลยุทธ์คนละชุดกับที่ backtest ไว้
5 risk ขั้นต่ำต่อ trade ที่เกิดจากพื้นของ lot lot ขั้นต่ำ × ระยะ SL × contract ÷ ทุน บัญชีเล็ก พื้น lot ดัน risk เกินที่ตั้ง หรือถูกด่านปัดทิ้งจนไม่ trade
6 magic ที่ EA จะใช้บนเลขบัญชีนี้ ล้น int32 ไหม คำนวณจากวิธีตั้ง magic ของ EA magic = เลขบัญชี × 100 ล้น int32 บน 5 จาก 6 บัญชี
7 preset ที่ load บน chart ตรงกับที่ตั้งใจ log ของ OnInit ไม่ใช่ชื่อ file .set .set ที่ load พลาด ค่า bool ตกกลับไปใช้ default เงียบ ๆ
8 ไม่มี trade หรือ pending order ค้างจาก magic เดิม tab Trade ของ terminal EA มองไม่เห็นของเดิม
9 บัญชีอยู่ใน registry และ risk% ที่จดตรงกับที่ใช้จริง research\8-forward\accounts.yaml เทียบกับ input บน chart และ lot ของ trade แรก registry จด 1% แต่ใช้จริง 9–130%

ขยายความบางข้อ:

  • ข้อ 4 auto tier — EA บางตัวเลือกชุดกลยุทธ์ตามขนาดทุนเอง ถ้าทุนของบัญชีต่ำกว่าเกณฑ์ EA จะ run ชุดที่ไม่เคยผ่าน backtest ของคุณเลย ผล forward ที่ได้จึงเอาไปเทียบกับ backtest ไม่ได้ตั้งแต่วันแรก ต้องรู้ว่า EA ที่ใช้มีเกณฑ์นี้ไหม และบัญชีนี้ตกชั้นไหน
  • ข้อ 5 พื้นของ lot — lot เล็กที่สุดที่ส่งได้คือ volume_min ถ้าทุนเล็กและ SL กว้าง lot ที่คำนวณจาก risk% อาจต่ำกว่าพื้น EA จะทำได้สองแบบ คือปัดขึ้นเป็นพื้น (เสี่ยงเกินที่ตั้ง) หรือไม่ยิง (ไม่ trade) ทั้งสองแบบทำให้ผลไม่ตรงกับ backtest ที่ใช้ทุนอีกขนาด
  • ข้อ 6 int32 — int32 (จำนวนเต็ม 32 bit แบบมีเครื่องหมาย) รับค่าได้สูงสุด 2,147,483,647 เลขบัญชีหลักร้อยล้านคูณ 100 เกินค่านี้ ค่าที่ได้จะไม่ใช่ magic ที่ตั้งใจ แล้ว EA ก็จะแยก trade ของตัวเองไม่ออก
  • ข้อ 9 registry — ค่าที่จดไว้คือสิ่งที่ "ตั้งใจ" ไม่ใช่สิ่งที่ "เกิดขึ้น" ตรวจด้วย risk% ที่คำนวณย้อนจาก lot ของ trade จริงเท่านั้น

3 · Lab · เขียน onboarding บัญชี demo

A9-3

ใช้บัญชี demo ของคุณเอง หนึ่งบัญชี ห้ามทำบนบัญชีจริง

clip ไม่ได้ระบุว่าต้องใช้ EA ตัวไหน ถ้ายังไม่มี EA ของตัวเองที่ผ่าน A8 ใช้ eas\LAB_MACROSS\LAB_MACROSS_v1.00.mq5 ใน kit ได้ EA ตัวนี้คิด lot จาก risk% และพิมพ์ค่าที่ใช้ลง log ตอน OnInit ซึ่งเป็นสิ่งที่ข้อ 7 ต้องการพอดี

ขั้นที่ 1 run symbol_check บนบัญชีนั้น

bt\ea-bt.exe symbol_check --terminal mt5\MT5_<ชื่อ> --symbol <ทอง>

จดข้อ 1–3 จาก output · ถ้าตลาดปิดอยู่ บรรทัด offset จะคำนวณไม่ได้ ให้ run อีกรอบวันจันทร์ถึงศุกร์

ขั้นที่ 2 คำนวณ lot ที่คาดด้วยมือ จากทุน risk% และระยะ SL

เงินต่อ lot ต่อการขยับ 1.00 = contract_size × ตัวคูณสกุลบัญชี   (USD = 1 · บัญชี cent = 100)
lot                        = ทุน × risk% ÷ (ระยะ SL × เงินต่อ lot)

แล้วปัดลงให้เป็นทวีคูณของ volume step · ถ้าได้ต่ำกว่า volume min หรือสูงกว่า volume max ให้จดไว้ด้วยว่า EA ควรทำอะไร (LAB_MACROSS: ต่ำกว่า min = ไม่ยิง · เกิน max = ตัดลงเหลือ max และพิมพ์บอกใน log)

ขั้นที่ 3 ติด EA บน chart แล้วรอ trade แรก เอา lot ที่เปิดจริงมาเทียบกับที่คำนวณ ถ้าไม่ตรง ต้องหาให้เจอว่าต่างเพราะอะไรก่อนไปต่อ อย่าข้ามไปเพราะ "ต่างนิดเดียว"

ขั้นที่ 4 ส่ง <login>.md ที่ตอบครบ 9 ข้อตามแม่แบบนี้ (จาก slide) วางไว้ที่ research\7-onboarding\

# <login>.md
1 login ได้: ___
2 สกุลเงินจริง: ___
3 contract/tick_value/volume: ___
4 auto tier: ___
5 risk ขั้นต่ำ/trade: ___
6 magic · int32: ___
7 preset จาก OnInit: ___
8 trade ค้าง magic เดิม: ___
9 registry · risk% จริง: ___
lot คาด ___ · lot จริง ___
เฉลย — ทำเองก่อนแล้วค่อยเปิด

ไม่มีเฉลยเป็นตัวเลข เพราะทุกค่าเป็นของบัญชี demo ของคุณเอง สิ่งที่ใช้ตรวจว่าทำครบคือ:

  • ข้อ 1–3 มาจาก output จริง ของ symbol_check บนบัญชีนี้ ไม่ใช่ค่าที่จำมาหรือยืมจากบัญชีอื่น
  • ข้อ 2 กับข้อ 3 สอดคล้องกัน ถ้าสกุลเงินเป็น USC ตัวคูณในขั้นที่ 2 ต้องเป็น 100
  • ข้อ 4–6 ถ้าไม่เกี่ยวกับ EA ที่ใช้ ให้เขียนว่าไม่เกี่ยวเพราะอะไร (เช่น EA ไม่มี auto tier) ไม่ใช่เว้นว่าง
  • ข้อ 7 อ้างบรรทัดจาก log ของ OnInit ถ้าใช้ LAB_MACROSS จะเป็นบรรทัดรูปแบบ LAB_MACROSS v... | <PresetTag> | <sym> | EMA .../... | SL ... | TP ...R | risk ...% | contract ... ค่า risk และ contract ในบรรทัดนี้ต้องตรงกับที่ตั้งใจและตรงกับข้อ 3
  • ข้อ 9 คำนวณ risk% ย้อนจาก lot จริง ของ trade แรก ไม่ใช่ลอกค่าจาก input
  • บรรทัดสุดท้าย lot คาดกับ lot จริงตรงกัน หรือถ้าไม่ตรง มีคำอธิบายที่หาเจอแล้ว เช่นปัดตาม volume step · ชน volume max · ใช้ contract ผิดค่า · ลืมตัวคูณ cent

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

พลาด ผลที่ตามมา ทางกัน
ยืม contract / tick_value จากบัญชีอื่นหรือ broker อื่น lot ผิด 10–100 เท่า run symbol_check บนบัญชีนั้นทุกครั้ง
ข้ามข้อ login เพราะคิดว่าไม่ต้อง check terminal ไม่ทำงานโดยไม่มีใครรู้ (เคยเกิด 38 ชม.) ตอบข้อ 1 จาก Journal และบรรทัด account
ไม่ดูชั้น auto tier forward run ชุดกลยุทธ์ที่ไม่เคย backtest ตอบข้อ 4 ก่อนติด EA
ตั้ง magic เป็นเลขบัญชี × 100 ล้น int32 (เกิดจริง 5 จาก 6 บัญชี) คำนวณ magic ของบัญชีนี้ก่อน ข้อ 6
ตรวจ preset จากชื่อ file .set ค่าที่ load พลาดตกกลับไปเป็น default โดยไม่มี error อ่านค่าจาก log ของ OnInit
เชื่อ risk% ใน registry จด 1% ใช้จริง 9–130% คำนวณ risk% ย้อนจาก lot ของ trade แรก
lot ของ trade แรกไม่ตรงแต่ไปต่อ ความเสี่ยงจริงต่างจากที่ตั้งไปทุก trade หาสาเหตุให้เจอก่อนไปต่อ

ทวนท้ายบท

A9-Q

  1. บัญชีใหม่อยู่ broker เดิม เอา contract / tick_value จากบัญชีเก่ามาใช้ได้ไหม และทำไมข้อแรกคือ login ได้จริง
  2. ตั้ง magic เป็นเลขบัญชี × 100 เสี่ยงอะไร
  3. registry จด risk_pct 1% เชื่อได้ไหม ตรวจด้วยอะไร
เฉลย
  1. ไม่ได้ ห้ามยืมค่าจากบัญชีอื่นหรือ broker อื่น ต้อง run symbol_check บนบัญชีนั้น · ข้อแรกคือ login เพราะ terminal บน VPS เคยขึ้น Invalid account อยู่ 38 ชั่วโมงโดยไม่มีใครรู้
  2. เสี่ยงล้น int32 ซึ่งเกิดจริงบน 5 จาก 6 บัญชี
  3. เชื่อไม่ได้ เคยจด 1% แต่ใช้จริง 9–130% · ตรวจ risk% ที่ใช้จริง และเทียบ lot ของ trade แรกกับที่คำนวณด้วยมือ