บทที่ 02
● เปิด

สถาปัตยกรรมสองโหมด: การออกแบบและการปฏิบัติการ

Tool versions: O!kurra Capital Defense EA 2.00 · OkurraButton 2.00 · OkurraGlobal 2.00


สารบัญ

2.1 ทำไมต้องสองโหมด ไม่ใช่โหมดเดียว 2.2 โหมดออกแบบ — อินดิเคเตอร์ 2.3 โหมดปฏิบัติการ — EA 2.4 สะพานเชื่อม: ไฟล์ .set 2.5 Cross-sync: OkurraButton ↔ OkurraGlobal บนกราฟเดียวกัน 2.6 สถานะการออกแบบ: applied, draft, การแยกอิสระต่อกราฟ 2.7 ทำไมจึงไม่มีการเชื่อมต่อแบบสด 2.8 เวิร์กโฟลว์เต็มรูปแบบทีละขั้นตอน


2.1 ทำไมต้องสองโหมด ไม่ใช่โหมดเดียว

Expert Advisor ส่วนใหญ่บน MetaTrader ทำสองอย่างในไฟล์เดียว คือให้คุณกรอกพารามิเตอร์แล้วเทรดด้วยพารามิเตอร์เหล่านั้นทันที คุณกรอกค่า กด OK แล้วโรบอตก็เริ่มทำงาน ง่าย — แต่มีข้อบกพร่องร้ายแรงอยู่ข้อหนึ่ง: คุณออกแบบแบบตาบอด ในหน้าต่าง Inputs คุณเห็นรายการตัวเลขและสวิตช์หลายร้อยรายการ ส่วนสิ่งที่ค่าเหล่านั้นหมายถึงอะไรบนกราฟ — ฟิลเตอร์ MMD จะไปตกอยู่ตรงไหน ออสซิลเลเตอร์ OKUR ให้สัญญาณถี่แค่ไหนที่ threshold ค่านั้น โซน SR อยู่ตรงที่คุณคิดจริงหรือไม่ — คุณจะเห็นก็ต่อเมื่อโรบอตเริ่มทำงานและเปิด (หรือไม่เปิด) โพซิชันแรกของมันแล้วเท่านั้น

O!kurra แยกกิจกรรมสองอย่างนี้ออกเป็นสองโหมดการทำงานที่แยกจากกัน ซึ่งรองรับด้วยเครื่องมือคนละตัว:

โหมดออกแบบ (design mode) — การทำงานกับอินดิเคเตอร์ OkurraButton และ OkurraGlobal (บวกกับอินดิเคเตอร์ประกอบ/companion indicators) ที่นี่คุณวางโครงกลยุทธ์: บนกราฟจริง พร้อมผลตอบกลับทางภาพทันที โดยไม่มีโรบอตทำงานและไม่มีความเสี่ยงใดๆ คุณเปลี่ยนค่า threshold — แล้วเห็นทันทีว่าตอนนี้มันไปตกตรงไหน คุณเปิดฟิลเตอร์ MMD — แล้วเห็นเมฆ (clouds) ของมันบนกราฟ ไม่มีอะไรเทรดทั้งสิ้น คุณบันทึกผลของงานลงไฟล์ .set

โหมดปฏิบัติการ (execution mode) — การทำงานกับ Okurra EA ที่นี่คุณดำเนินการกลยุทธ์ที่ออกแบบไว้: คุณโหลดไฟล์ .set ที่เสร็จแล้วเข้าไปในโรบอต แล้วมันจะเปิด ดูแล และปิดโพซิชันตามสิ่งที่คุณออกแบบไว้ ระหว่างที่มันทำงาน คุณสั่งการเชิงยุทธวิธีจากพาเนล (เปิด/ปิด buttons, วางโซน, arm BEa, เปลี่ยนลิมิตรายวัน) แต่รูปทรงเชิงกลยุทธ์ของคอนฟิกมาจากเฟสการออกแบบ

แกนนอน: เฟสออกแบบ DESIGN (อินดิเคเตอร์บนกราฟ, ไอคอน "no risk") → ไฟล์ .set (สะพาน) → เฟสปฏิบัติการ EXECUTION (EA เทรดบนบัญชี); คำบรรยายด้านล่างระบุว่านี่คือการไหลของคอนฟิกแบบทางเดียว โดยมีไฟล์ .set เพียงไฟล์เดียวเป็นตัวเชื่อมเดียวเท่านั้น
รูปที่ 2.1 — แกนนอน: เฟสออกแบบ DESIGN (อินดิเคเตอร์บนกราฟ, ไอคอน "no risk") → ไฟล์ .set (สะพา

ประโยชน์ของการแบ่งแบบนี้มีสองด้าน อย่างแรก — คุณออกแบบโดยที่มองเห็น ก่อนที่โรบอตจะเริ่มทำงาน คุณมีภาพเต็มของสิ่งที่มันจะทำงานด้วยอยู่บนกราฟแล้ว อย่างที่สอง — คุณออกแบบอย่างปลอดภัย อินดิเคเตอร์ไม่เทรดอะไรเลย คุณจึงวนปรับคอนฟิกได้ตามใจ บนตลาดจริง โดยไม่ต้องเปิดโพซิชันแม้แต่รายการเดียว ต่อเมื่อแบบที่ออกไว้ถูกใจคุณแล้วเท่านั้น คุณจึงย้ายมันไปยัง EA

ยังมีประโยชน์ข้อที่สามซึ่งละเอียดกว่านั้น: คอนฟิกกลายเป็นสิ่งประดิษฐ์ที่คงทนและพกพาได้ ไฟล์ .set ไม่ใช่สถานะชั่วครู่ในหน่วยความจำของโรบอต — มันคือเอกสารที่คุณตั้งชื่อได้ เก็บถาวรได้ เปรียบเทียบกับเวอร์ชันก่อนหน้าได้ โหลดบนบัญชีอื่นได้ หรือส่งต่อได้ รายละเอียดอยู่ในหัวข้อ 2.4 และตลอดทั้งบทที่ 7

การวางตำแหน่งของเครื่องมือ โหมดออกแบบคือห้องปฏิบัติการ — ที่ซึ่งสมมติฐานของกลยุทธ์กลายเป็นสิ่งที่สังเกตได้ ก่อน ที่มันจะไปแตะบัญชี โหมดปฏิบัติการคือการสังเกตผลสืบเนื่องของสมมติฐานนั้นบนบัญชี demo การตัดสินใจย้ายคอนฟิกไปยังบัญชี live ยังคงอยู่ที่ฝั่งคุณ และกระทำภายใต้ความรับผิดชอบเต็มของคุณเอง


2.2 โหมดออกแบบ — อินดิเคเตอร์

ในโหมดออกแบบ คุณทำงานกับพาเนลออกแบบสองตัว ที่วางลงบนกราฟเหมือนอินดิเคเตอร์ MT5 ตัวอื่นๆ (โดยลากจากหน้าต่าง Navigator)

OkurraButton — ผู้ออกแบบกลยุทธ์ทั้งห้า เป็นพาเนลที่คุณใช้วางพารามิเตอร์ของแต่ละ button B1…B5 แยกทีละตัว: ทิศทาง, เอนจิน OKUR (Period, Sensitivity, Timeframe, Threshold), triggers, แถบความถูกต้องของสัญญาณ, pending orders, ลิมิตของโพซิชัน, Lot, SL/TP, Break Even, Trailing Stop, ฟิลเตอร์ท้องถิ่น และส่วน Activation & Exits คุณแก้ไขแต่ละพารามิเตอร์ได้โดยตรงบนพาเนล โดยไม่ต้องเข้าไปในหน้าต่าง Inputs คำอธิบายฉบับเต็ม — บทที่ 4

OkurraGlobal — ผู้ออกแบบการตั้งค่าที่ใช้ร่วมกันทั้ง EA: ฟิลเตอร์ระดับ global (SAR, MMD, SR, OKUR Filter), กลไกผู้พิทักษ์บัญชี (Daily P/L Limits, Equity Guard, Profit Target), Break Even Auto พร้อม triggers ของมัน, Stop on Opposite, Trading Hours และการตั้งค่าของตัวพาเนลเอง คำอธิบายฉบับเต็ม — บทที่ 5

อินดิเคเตอร์ประกอบ (companion indicators) — อินดิเคเตอร์แสดงผลแปดตัวที่อ่านคอนฟิกซึ่งออกแบบไว้ในพาเนล แล้ววาดสิ่งที่ฟิลเตอร์หรือออสซิลเลเตอร์ตัวนั้นมองเห็นลงบนกราฟ: OkurraSAR, OkurraMMD, OkurraSR, OkurraOscillator (per-button) และตัวเทียบเท่าระดับ global ของพวกมัน OkurraGlobal สามารถโหลดเวอร์ชัน global ของตัวเองขึ้นกราฟโดยอัตโนมัติ (พารามิเตอร์ Auto_Load_Global_SAR / MMD / SR / OKUR เปิดใช้งานเป็นค่าเริ่มต้น) และลบออกเมื่อพาเนลถูกถอดออกจากกราฟ ด้วยเหตุนี้คุณจึงออกแบบไปพร้อมกับมองเห็น — จุด SAR, เมฆ MMD, โซน SR และเส้นทางของ OKUR ปรากฏตรงจุดที่โรบอตจะมองพอดี คำอธิบายฉบับเต็ม — บทที่ 6

สิ่งสำคัญคือ: ไม่มีอินดิเคเตอร์ตัวใดในนี้เทรดอะไรทั้งสิ้น พวกมันไม่เปิดโพซิชัน ไม่ส่งคำสั่ง ไม่แตะต้องบัญชี พวกมันเป็นเครื่องมือสำหรับวาดและออกแบบ — คุณเก็บมันไว้บนกราฟตลอดเวลาได้ และจะไม่มีอะไรเกิดขึ้นนอกจากคุณเห็นคอนฟิกของตัวเองอยู่บนราคา สอดคล้องกับการวางตำแหน่งของชุดเครื่องมือทั้งหมดในฐานะเครื่องมือเพื่อการวิจัยและการศึกษา คุณทำงานกับ O!kurra บนบัญชี demo — เพื่อการวิเคราะห์และการเรียนรู้


2.3 โหมดปฏิบัติการ — EA

ในโหมดปฏิบัติการ คุณทำงานกับ Okurra EA (ชื่อเต็ม: O!kurra Capital Defense) — องค์ประกอบเดียวในระบบนิเวศที่เทรดจริง มันคือตัวที่เปิดโพซิชัน วาง pending orders ขยับ SL ปิดตะกร้า (basket) และเฝ้าลิมิตของบัญชี

EA ทำงานได้ด้วยตัวเอง มันไม่ต้องการอินดิเคเตอร์ใดๆ บนกราฟเพื่อให้ทำงาน — มันพกคอนฟิกทั้งหมดไว้ในตัวเอง (ใน Inputs ของมันเอง) และวาดพาเนลควบคุมของตัวเองขึ้นมาเอง คุณเปิด EA บนกราฟเปล่าโดยไม่มีอินดิเคเตอร์ Okurra สักตัวได้ และมันจะทำงานได้เต็มรูปแบบ

EA เอาคอนฟิกมาจากไหน? จากสองแหล่ง ตามลำดับนี้:

  1. จากพารามิเตอร์ Inputs ของตัวเอง — ที่กรอกด้วยมือในหน้าต่างคอนฟิกของ EA หรือ (สะดวกกว่ามาก) โหลดจากไฟล์ .set ด้วยปุ่ม Load ในหน้าต่างนั้น (ปุ่ม F7 บนกราฟที่มี EA) นี่คือเส้นทางหลักที่กลยุทธ์ซึ่งออกแบบไว้เดินทางไปถึงโรบอต
  2. จากพาเนล ระหว่างที่มันทำงาน — การปรับเชิงยุทธวิธีที่คุณทำแบบสด: เปิด/ปิด buttons, วางโซนและ Target Lines, arm BEa, เปลี่ยนลิมิต Daily Profit / Loss / EG / PT นี่ไม่ใช่การเปลี่ยนแปลง “เชิงกลยุทธ์” — เป็นการสั่งการต่อเนื่องกับสิ่งที่ออกแบบไว้แล้ว

เส้นแบ่งระหว่างสองอย่างนี้เป็นเรื่องตั้งใจ และจะกลับมาปรากฏตลอดทั้งคู่มือ: สิ่งที่เป็นเชิงกลยุทธ์เข้าสู่ EA ผ่าน .set (จากเฟสการออกแบบ) ส่วนสิ่งที่เป็นเชิงยุทธวิธีคุณปรับสดจากพาเนล พารามิเตอร์ Inputs ส่วนใหญ่ถูกโหลดครั้งเดียวตอน EA เริ่มทำงาน และไม่เปลี่ยนระหว่างที่มันรัน — หากจะเปลี่ยน คุณต้องหยุด EA โหลด .set ใหม่หรือแก้ไข Inputs แล้วเปิดใหม่อีกครั้ง ข้อยกเว้น (ลิมิตที่แก้ไขสดได้จากพาเนล) ระบุไว้อย่างชัดเจนในบทที่เกี่ยวข้อง

EA สามารถตั้งค่า “แบบเดิม” ได้ด้วยตัวเองทั้งหมด เนื่องจากโรบอตพกคอนฟิกทั้งหมดไว้ใน Inputs ของตัวเอง คุณจึงข้ามอินดิเคเตอร์และตั้งค่าทุกอย่างด้วยมือตรงในหน้าต่างคอนฟิกของ EA ได้ — นี่เป็นเส้นทางที่รองรับเต็มรูปแบบ แต่ในทางปฏิบัติมันอาจน่าเบื่อหน่าย: พารามิเตอร์มีจำนวนมาก (การตั้งค่า global บวกกับ button ห้าตัว) คุณต้องแก้ไขมันในรายการ Inputs ที่ยาวเหยียด โดยไม่มีพรีวิวบนกราฟและไม่มีการควบคุมด้วยสายตา ด้วยเหตุนี้เส้นทางที่แนะนำคือ การออกแบบในอินดิเคเตอร์แล้วส่งออกผ่านไฟล์ .set — เร็วกว่า ชัดเจนกว่า และเห็นพรีวิวของสิ่งที่คุณกำลังออกแบบทันที การตั้งค่าด้วยมือยังคงอยู่เป็นทางเลือกสำหรับผู้ที่ต้องการ


2.4 สะพานเชื่อม: ไฟล์ .set

ตัวเชื่อมเดียวระหว่างโหมดออกแบบกับโหมดปฏิบัติการคือ ไฟล์ .set — รูปแบบไฟล์การตั้งค่ามาตรฐานของ MetaTrader 5 มันเป็นไฟล์ข้อความธรรมดาที่แต่ละบรรทัดมีรูปแบบ ParameterName=Value EA อ่านมันได้โดยตรง (ปุ่ม Load ในหน้าต่าง Inputs) และอินดิเคเตอร์ Okurra ก็บันทึกมันในรูปแบบที่ EA เข้าใจได้

ในระบบนิเวศ O!kurra มีไฟล์ .set สองชนิด ที่บันทึกจากพาเนลสองตัวที่ต่างกัน:

.set จาก OkurraGlobal — ชุดค่าติดตั้งแบบเต็ม เมื่อคุณคลิก Save .set ในแผง OkurraGlobal ระบบจะบันทึกชุดที่สมบูรณ์: ส่วน global (การตั้งค่าที่ EA ใช้ร่วมกัน 290 ฟิลด์) และ พารามิเตอร์ของปุ่มทั้งห้า (B1…B5 ปุ่มละ 90 ฟิลด์ — รวม 450 ฟิลด์) ไฟล์แบบนี้คือคอนฟิกที่พร้อมและครบถ้วนของ EA ทั้งตัว — รวมทั้งหมด 740 คีย์ คุณโหลดเข้าโรบอตในครั้งเดียวแล้วได้ครบทุกอย่าง: ทั้งค่า global และทุกกลยุทธ์ ชื่อเริ่มต้น: Global_<timestamp>.set

.set จาก OkurraButton — เฉพาะปุ่มเท่านั้น เมื่อคุณคลิก Save .set ในแผง OkurraButton ระบบจะบันทึกเฉพาะพารามิเตอร์ของปุ่ม B1…B5 โดยไม่มีส่วน global ไฟล์แบบนี้มีประโยชน์เมื่อคุณต้องการย้ายเฉพาะกลยุทธ์ โดยคงการตั้งค่า global ที่คุณมีอยู่แล้วไว้ ชื่อเริ่มต้น: Button_<timestamp>.set

หลังบันทึกแล้ว คุณสามารถเปลี่ยนชื่อไฟล์เป็นชื่อที่คุณอ่านเข้าใจได้เอง (เช่น XAUUSD_mean-rev_M1.set) ได้โดยตรงในไดอะล็อก Load ในแผง — ซึ่งเปลี่ยน timestamp ที่ไร้ตัวตนให้กลายเป็นป้ายกำกับที่บรรยายคอนฟิกของคุณ

ไฟล์ .set สองไฟล์วางเคียงกัน: ด้านซ้าย "Global_<TS>.set" มีสองส่วน (บล็อก GLOBAL 290 ฟิลด์ + บล็อก B1–B5 450 ฟิลด์) ด้านขวา "Button_<TS>.set" มีบล็อกเดียว (B1–B5) ลูกศรจากทั้งสองไฟล์ไปยังหน้าต่าง Inputs ของ EA พร้อมคำบรรยาย "F7 → Load"; เน้นว่า Global .set = คอนฟิกที่สมบูรณ์ ส่วน Button .set = เฉพาะกลยุทธ์
รูปที่ 2.2 — ไฟล์ .set สองไฟล์วางเคียงกัน: ด้านซ้าย "Global_<TS>.set" มีสองส่วน (บล็อก GLOBAL

ไฟล์ .set ทั้งหมดจะไปอยู่ในไดเรกทอรี MQL5/Files/OKU/sets/ ภายในแซนด์บ็อกซ์ของ MetaTrader ในมุมมองของ EA ไฟล์เหล่านี้คือไฟล์การตั้งค่าธรรมดา — โรบอตไม่รู้และไม่สนใจว่าไฟล์ถูกสร้างขึ้นในอินดิเคเตอร์ Okurra มันเห็นเพียง .set ที่ถูกต้องซึ่งโหลดได้ผ่าน F7 คำอธิบายเต็มเรื่องการบันทึก การตั้งชื่อ และการย้ายคอนฟิก — บทที่ 7


2.5 Cross-sync: OkurraButton ↔ OkurraGlobal บนกราฟเดียวกัน

มีอยู่กรณีเดียว — และเพียงกรณีเดียวเท่านั้น — ที่เครื่องมือ Okurra สื่อสารกันเอง “แบบสด”: การซิงโครไนซ์ระหว่างแผงออกแบบสองแผงบนกราฟเดียวกัน นี่ไม่ใช่การเชื่อมต่อกับ EA (ซึ่งไม่มี — หัวข้อ 2.7) เป็นเพียงกลไกที่สะดวกระหว่างตัวอินดิเคเตอร์ด้วยกันเองในเฟสออกแบบ

มันทำงานแบบนี้: เมื่อคุณมีแผงทั้งสองอยู่บนกราฟ — OkurraButton และ OkurraGlobal — และคุณโหลดไฟล์ .set ในแผงใดแผงหนึ่ง (Load .set) แผงนั้นหลังจากโหลดเสร็จจะส่งข้อความสั้น ๆ ไปยังอีกแผงหนึ่งว่า “ฉันโหลดไฟล์นี้แล้ว ทำแบบเดียวกันในฝั่งของคุณด้วย” อีกแผงหนึ่งจะอ่านไฟล์ .set ไฟล์เดียวกันซ้ำและโหลดส่วนของตัวเอง:

  • คุณโหลด .set ใน OkurraGlobal → Global โหลดส่วน global ส่วน OkurraButton (ถ้าอยู่บนกราฟ) โหลดพารามิเตอร์ B1…B5 จากไฟล์เดียวกัน
  • คุณโหลด .set ใน OkurraButton → Button โหลด B1…B5 ส่วน OkurraGlobal (ถ้าอยู่บนกราฟ) โหลดส่วน global จากไฟล์เดียวกัน
แผงสองแผง (OkurraButton, OkurraGlobal) บนกราฟเดียวกัน โดยมีไฟล์ .set อยู่ตรงกลาง; Load .set ในแผงหนึ่ง → อีกแผงอ่านไฟล์เดียวกันซ้ำ (สองทิศทาง สีอำพัน); แถบล่าง: ซิงโครไนซ์เฉพาะแผงที่อยู่บนกราฟเดียวกัน ส่วน EA แยกต่างหาก (ไปยัง EA: บันทึก .set + F7)
รูปที่ 2.3 — แผงสองแผง (OkurraButton, OkurraGlobal) บนกราฟเดียวกัน โดยมีไฟล์ .set อยู่ตรงกลาง

ด้วยเหตุนี้ การโหลดไฟล์ครั้งเดียวก็เพียงพอ — มันรีเฟรชทั้งสองแผงพร้อมกัน คุณไม่ต้องโหลดคอนฟิกเดียวกันสองครั้ง (แยกเข้า OkurraButton และแยกเข้า OkurraGlobal) กลไกนี้เป็นเฉพาะที่ของกราฟ: ซิงโครไนซ์เฉพาะแผงที่อยู่บนกราฟเดียวกันเท่านั้น นี่เป็นความตั้งใจและสอดคล้องกับการแยกแบบ per-chart ที่อธิบายในหัวข้อถัดไป — กราฟสองกราฟของเครื่องมือเดียวกันมีสถานะการออกแบบแยกกันและไม่ปะปนกัน

Cross-sync ไม่แตะต้อง EA การโหลด .set ในแผงหนึ่งจะซิงโครไนซ์เฉพาะอีกแผงหนึ่งเท่านั้น — ไม่เคยซิงกับโรบอตที่กำลังทำงาน (อีกทั้ง EA และแผงต่าง ๆ ทำงานบนกราฟแยกกัน หัวข้อ 2.7) เพื่อให้การเปลี่ยนแปลงไปถึง EA คุณต้องบันทึก .set แล้วโหลดมันใน EA ผ่าน F7


2.6 สถานะการออกแบบ: applied, draft, การแยกแบบ per-chart

งานออกแบบในแผงต้องอยู่รอดที่ไหนสักแห่งระหว่างการรีเฟรชกราฟ การเปลี่ยน timeframe หรือการคอมไพล์ใหม่ แผงจะบันทึกสถานะของตัวเองลงในไฟล์ .ini ในไดเรกทอรี MQL5/Files/OKU/applied/ ในมุมมองของผู้ใช้ ไดเรกทอรีนี้มองไม่เห็น — คุณไม่ต้องเข้าไปเองด้วยมือ — แต่ก็ควรเข้าใจว่าเกิดอะไรขึ้นที่นั่น เพราะมันอธิบายพฤติกรรมหลายอย่างของแผง

สถานะสองประเภทต่อหนึ่ง button (และสำหรับ Global):

  • appliedสถานะที่ถูกใช้งานแล้ว คือสิ่งที่แผง “ยืนยัน” ไว้ล่าสุด ไฟล์ B<N>_applied.ini สำหรับแต่ละปุ่ม และ Global_applied.ini สำหรับการตั้งค่า global นี่คือจุดอ้างอิงที่ companion indicators อ่านค่า (เพื่อวาดฟิลเตอร์ให้ถูกต้อง)
  • draftการแก้ไขที่กำลังดำเนินอยู่ คือการเปลี่ยนแปลงที่คุณป้อนเข้าไปแต่ยังไม่ได้ยืนยัน (B<N>_draft.ini, Global_draft.ini) มันทำให้คุณแก้ไขคอนฟิกเป็นชุด ๆ ได้โดยไม่สูญหายก่อนที่คุณจะคลิก Apply

ประวัติ (history/) ทุกครั้งที่ยืนยัน (Apply) แผงจะเพิ่มสำเนาไปยัง MQL5/Files/OKU/history/ ด้วย (เช่น auto_B<N>_<timestamp>.ini, auto_Global_<timestamp>.ini) มันคือแบ็กอัพแบบหมุนเวียน ที่ไม่มีการล้างอัตโนมัติ — ไฟล์จะสะสมขึ้นเรื่อย ๆ และคุณลบเองด้วยมือเมื่อเห็นสมควร ด้วยเหตุนี้คุณจึงย้อนกลับไปยังสถานะการออกแบบก่อนหน้าได้ แม้ว่าคุณจะไม่ได้บันทึกมันเป็น .set

การแยกแบบ per-chart นี่เป็นรายละเอียดสำคัญถ้าคุณทำงานบนกราฟหลายกราฟของเครื่องมือเดียวกัน กราฟแต่ละกราฟมีสถานะการออกแบบของตัวเองที่แยกกัน — ไฟล์ applied/draft ถูกกำกับด้วยตัวระบุกราฟที่ไม่ซ้ำกัน (ChartID) ซึ่งคงที่เมื่อเปลี่ยน timeframe และเมื่อคอมไพล์ใหม่ หากไม่มีการแยกนี้ กราฟ XAUUSD สองกราฟจะใช้สถานะเดียวกันร่วมกัน และ companion indicators บนกราฟที่ 2 จะตามปุ่มที่ออกแบบไว้บนกราฟที่ 1 เมื่อมีการแยก — กราฟแต่ละกราฟก็เป็นห้องทำงานออกแบบที่แยกจากกัน

การแสดงผลของ companion indicators (applied/viz/) เมื่อ companion indicators ต้องแสดงคอนฟิกใดคอนฟิกหนึ่งโดยเฉพาะ พวกมันจะอ่านค่าจากพื้นที่เฉพาะ applied/viz/ ซึ่งแยกออกจากสถานะการออกแบบหลัก เรื่องนี้สำคัญเป็นพิเศษในโหมด execution: ตัว EA เอง สามารถเผยแพร่คอนฟิกของกลยุทธ์ที่กำลังทำงานไว้ที่นั่นและควบคุม companion indicators ได้ (แสดงบนกราฟถึงฟิลเตอร์ของปุ่มที่คุณกำลังสังเกตอยู่) — โดยไม่ปะปนกับสิ่งที่คุณกำลังออกแบบในแผง รายละเอียดของความร่วมมือนี้ — บทที่ 6 และ 18

หมายเหตุเชิงปฏิบัติ ไฟล์ .ini เหล่านี้คือสถานะภายในของเครื่องมือ และไม่ใช่สิ่งเดียวกันกับ .set ไฟล์ .ini ใน applied//draft//history/ คือหน่วยความจำใช้งานของแผง ส่วน .set ใน sets/ คืออาร์ทิแฟกต์คอนฟิกที่พกพาได้และโหลดผ่าน F7 ได้สำหรับ EA มีเพียง .set เท่านั้นที่ไปถึงโรบอต — ไฟล์ .ini ไม่เคยถูกอ่านโดย EA


2.7 ทำไมจึงไม่มีการเชื่อมต่อแบบสด

การแยกการออกแบบออกจากการทำงานจริงเป็นการตัดสินใจเชิงออกแบบที่ตั้งใจ ซึ่งกลั่นมาจากประสบการณ์ คอนฟิกไหลไปในทิศทางเดียวและเฉพาะเมื่อคุณสั่งอย่างชัดเจนเท่านั้น: แผง → .set → F7 → EA ไม่มีการ “ผลัก” การเปลี่ยนแปลงจากแผงเข้าสู่โรบอตที่กำลังทำงานโดยอัตโนมัติ การสื่อสารแบบสดอย่างเดียวคือ cross-sync ระหว่างตัวแผงด้วยกันเอง (หัวข้อ 2.5)

จากสมมติฐานนี้ยังเกิดกฎเชิงปฏิบัติที่สำคัญ: แผงออกแบบและ EA ทำงานบนกราฟแยกกัน (หัวข้อ 2.8) ถ้าทั้งคู่ไปอยู่บนกราฟเดียวกัน เครื่องมือสองตัวจะวาดแผงและวัตถุของตัวเองบนพื้นที่เดียวกัน และการแสดงผลของการออกแบบก็จะปะปนกับการแสดงผลของโรบอต ด้วยเหตุนี้ เมื่อ OkurraButton หรือ OkurraGlobal ตรวจพบ EA บนกราฟของตน แผงจะระงับการทำงานของตัวเอง — ซ่อนเนื้อหาและ companion indicators ที่มันดึงเข้ามา แล้วแสดงแบนเนอร์ขอให้คุณนำอินดิเคเตอร์ออกจากกราฟนี้แทน (“design charts only, no EA”) หลังจากนำ EA ออกแล้ว แผงจะกลับมาทำงานอีกครั้งโดยอัตโนมัติ นี่เป็นกำแพงง่าย ๆ ที่คอยรักษาการแบ่งให้ชัดเจน: ออกแบบบนกราฟหนึ่ง ทำงานจริงบนอีกกราฟหนึ่ง

เหตุผลที่การไหลเป็นทิศทางเดียวและทำด้วยมือ:

  • โรบอตที่กำลังเทรดไม่ควรเปลี่ยนกติกากลางเกมโดยบังเอิญ ถ้าทุกการแก้ไขที่คุณทำในแผงจะออกแบบ EA ที่กำลังทำงานใหม่ทันที การคลิกพลาดเพียงครั้งเดียวระหว่างออกแบบก็อาจเปลี่ยนพฤติกรรมของโรบอตที่กำลังดูแลตำแหน่งที่เปิดอยู่ได้ การแยกกันทำให้การเปลี่ยนแปลงไปถึงโรบอตเฉพาะตอนที่คุณโหลด .set อย่างมีสติเท่านั้น — มันคือการกระทำ ไม่ใช่อุบัติเหตุ
  • การออกแบบกับการทำงานจริงมีจังหวะต่างกัน คุณวนปรับแบบได้อย่างอิสระ เปลี่ยนพารามิเตอร์นับสิบ ดูผลลัพธ์ ย้อนกลับ ส่วนการทำงานจริงต้องนิ่ง — โรบอตทำตามคอนฟิกเดียวที่ยืนยันแล้ว จนกว่าคุณจะเปลี่ยนเป็นอันอื่นอย่างมีสติ ไฟล์ .set คือ “ภาพนิ่งหยุดเฟรม” ตามธรรมชาติระหว่างสองจังหวะนี้
  • คอนฟิกในฐานะเอกสาร เมื่อสะพานเดียวคือ .set ทุกคอนฟิกที่คุณเปิดใช้งานก็มีไฟล์ของตัวเอง — มีชื่อ เก็บถาวรได้ เปรียบเทียบได้ ไม่มี “สถานะชั่วครู่” ที่มีอยู่แค่ในหน่วยความจำแล้วหายไป นี่คือวินัยที่ให้ผลตอบแทนคุ้มค่าเมื่อคุณศึกษากลยุทธ์หลายรูปแบบ

ผลที่ตามมาสำหรับ workflow ของคุณนั้นเรียบง่ายและควรจำไว้ให้ขึ้นใจครั้งเดียวตลอดไป: การแก้ไขในพาเนลไม่เคยเปลี่ยนแปลง EA ที่กำลังทำงานอยู่ หากต้องการให้การเปลี่ยนแปลงไปถึงโรบอต คุณต้องบันทึก .set แล้วโหลดเข้า EA ผ่าน F7 หากคุณเคยจับได้ว่าตัวเองคิดว่า “ฉันเปลี่ยนพารามิเตอร์ในพาเนลแล้ว ทำไมโรบอตยังทำแบบเดิมอยู่” — นั่นไม่ใช่บั๊ก นั่นคือสถาปัตยกรรมนี้พอดี มีขั้นตอนหนึ่งที่ขาดไป: บันทึก .set + F7 (บนชาร์ตที่มี EA)

Claude (แชตบอตที่ okurra.com) และคู่มือฉบับนี้จะคอยเตือนคุณเรื่องนี้อยู่เสมอ เพราะเป็นความเข้าใจผิดที่พบบ่อยที่สุดในหมู่ผู้ใช้ใหม่ คุณออกแบบในอินดิเคเตอร์ คุณดำเนินการใน EA คุณถ่ายโอนด้วยไฟล์ .set — และการถ่ายโอนนั้นเป็นการกระทำที่รู้ตัวเสมอ


2.8 Workflow แบบเต็มทีละขั้นตอน

เมื่อประกอบทุกอย่างเข้าด้วยกัน — นี่คือเส้นทางที่สมบูรณ์ตั้งแต่ไอเดียจนถึงโรบอตที่ทำงานได้ พร้อมระบุว่าคุณอยู่ในโหมดใดในแต่ละขั้นตอน

เส้นทางทีละขั้นตอนที่มีหมายเลขกำกับ (1→8) พร้อมสีพื้นหลังสองสีที่แยกโหมดออกแบบกับโหมดดำเนินการ; ขั้นตอน "Save .set" และขั้นตอน "F7 Load" ถูกเน้นเป็นจุดเปลี่ยนผ่านระหว่างโหมด
รูปที่ 2.4 — เส้นทางทีละขั้นตอนที่มีหมายเลขกำกับ (1→8) พร้อมสีพื้นหลังสองสีที่แยกโหมดออกแบบกั

เฟสการออกแบบ (indicators):

  1. วางพาเนลลงบนชาร์ต ลากOkurraButton และ OkurraGlobal ลงบนชาร์ตของตราสารเป้าหมาย (เช่น XAUUSD M1) หาก OkurraGlobal เปิดใช้ Auto_Load_Global_* อยู่ อินดิเคเตอร์ประกอบ (companion indicators) ของมันจะปรากฏขึ้นโดยอัตโนมัติ

  2. ออกแบบส่วนกลาง (OkurraGlobal) ตั้งค่าฟิลเตอร์ระดับโกลบอล ตัวเฝ้าระวังบัญชี (guardians) Trading Hours และ BEa — สิ่งที่ใช้ร่วมกันทั้ง EA สังเกตบนชาร์ตว่าฟิลเตอร์โกลบอล (SAR, MMD, SR, OKUR) วางตัวบนราคาอย่างไร

  3. ออกแบบกลยุทธ์ (OkurraButton) กำหนดค่า button B1…B5 — ทิศทาง เอนจิน OKUR ทริกเกอร์ ฟิลเตอร์ท้องถิ่น SL/TP ดูออสซิลเลเตอร์และฟิลเตอร์ของแต่ละกลยุทธ์บนชาร์ต

  4. ทำซ้ำ (Iterate) เปลี่ยนพารามิเตอร์ ดูผลบนชาร์ต ปรับแก้ ไม่มีการเทรดใด ๆ — คุณมีอิสระเต็มที่ นี่คืองานออกแบบที่แท้จริง: ตราบใดที่ภาพบนชาร์ตยังไม่ถูกใจคุณ คุณก็อยู่ในเฟสนี้ต่อไป

การเปลี่ยนผ่านระหว่างโหมด — สะพาน .set:

  1. บันทึก .set เมื่อคอนฟิกถูกใจคุณแล้ว ในพาเนล OkurraGlobal คลิก Save .set — จะได้ไฟล์ที่สมบูรณ์ (Global + B1…B5) ใน OKU/sets/ (หรือ Save .set ใน OkurraButton หากคุณต้องการเฉพาะกลยุทธ์อย่างเดียว) คุณสามารถเปลี่ยนชื่อมันเป็นชื่อที่อ่านเข้าใจได้ทันที

เฟสการทำงาน (EA):

  1. วาง EA ลงบนชาร์ตแยกต่างหาก (ไม่ใช่ชาร์ตที่คุณมีพาเนลออกแบบอยู่ — ส่วน 2.7) ในหน้าต่างการตั้งค่าของ EA ที่แท็บ Common ให้ติ๊ก Allow Algo Trading นอกจากนี้ สำหรับการตรวจสอบไลเซนส์ ให้ไปที่ Tools → Options → Expert Advisors แล้วเพิ่ม https://okurra.com เข้าไปในรายการ Allow WebRequest for listed URL (เท่านี้เพียงพอสำหรับการตรวจสอบคีย์ไลเซนส์ — รายละเอียดในบทที่ 3)

  2. โหลด .set (F7 → Load) ในหน้าต่างการตั้งค่าของ EA ที่แท็บ Inputs คลิก Load แล้วชี้ไปยังไฟล์ .set ที่บันทึกไว้ คอนฟิกที่ออกแบบไว้ทั้งหมดจะโหลดเข้าโรบอตในครั้งเดียว คลิก OK

  3. ควบคุมเชิงยุทธวิธีจากพาเนล EA เริ่มทำงานด้วยคอนฟิกที่โหลดเข้ามา นับจากนี้คุณเปิด/ปิด button วางโซนและ Target Lines อาร์ม BEa และปรับลิมิต — ทั้งหมดจากพาเนล EA แบบสด ๆ คุณสังเกตว่าโรบอตดำเนินการตามการออกแบบของคุณอย่างไรบนบัญชี Demo

หมายเหตุเรื่องชาร์ตแยกกัน พาเนลออกแบบและ EA ต้องอยู่บนชาร์ตแยกกัน — นี่ไม่ใช่ความชอบส่วนตัว แต่เป็นข้อกำหนดที่มาจากสถาปัตยกรรม (ส่วน 2.7) หากคุณวาง OkurraButton หรือ OkurraGlobal ลงบนชาร์ตที่มี EA ทำงานอยู่ พาเนลจะตรวจพบโรบอตและระงับตัวเอง โดยแสดงแบนเนอร์ขอให้คุณนำอินดิเคเตอร์ออก (“design charts only, no EA”) เลย์เอาต์ทั่วไปคือ: ชาร์ตหนึ่งของตราสารพร้อมพาเนลออกแบบ (เฟสออกแบบ) และชาร์ตที่สองของตราสารเดียวกันพร้อม EA ที่กำลังทำงาน (เฟสดำเนินการ) สะพานระหว่างทั้งสองคือไฟล์ .set

การทำซ้ำคอนฟิกระหว่างการทดสอบ เมื่อคุณสังเกตบน Demo แล้วต้องการเปลี่ยนกลยุทธ์: คุณกลับไปที่พาเนล (เฟสออกแบบ) ปรับแก้ บันทึก .set ใหม่ แล้วโหลดเข้า EA (F7) ไฟล์ .set เก่ายังคงอยู่ใน sets/ ในฐานะไฟล์เก็บถาวร — คุณกลับไปดูและเปรียบเทียบได้ นี่คือวงจรการทำงานตามธรรมชาติกับ O!kurra: ออกแบบ → บันทึก → ดำเนินการ → สังเกต → กลับไปออกแบบ ความอดทนและความเป็นระเบียบในไฟล์ .set ของคุณคือเครื่องมือหลักในที่นี้


ในบทถัดไปเราจะไปสู่การติดตั้งแพ็กเกจทั้งชุด — ทั้ง EA และอินดิเคเตอร์ — รวมถึงการเปิดใช้งานครั้งแรกและการตรวจสอบไลเซนส์ด้วยคีย์ที่ okurra.com