บทที่ 07
● เปิด

การบันทึกและการย้ายการตั้งค่า (.set)

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


สารบัญ

7.1 ไฟล์ .set — อาร์ทิแฟกต์การตั้งค่าที่พกพาได้ 7.2 การบันทึก: ไฟล์ .set เกิดขึ้นอย่างไร 7.3 .set สองชนิด — แบบเต็มและแบบเฉพาะกลยุทธ์ 7.4 การโหลดในแผง (Load) และตัวจัดการไฟล์ 7.5 ไฟล์อยู่ที่ไหน: sets, history, สถานะการทำงาน 7.6 การโหลดเข้า EA (F7 → Load) 7.7 ภาคปฏิบัติ: การตั้งชื่อและการจัดการเวอร์ชันต่าง ๆ 7.8 License key กับไฟล์ .set 7.9 รีจิสทรีความเป็นเจ้าของโพซิชันและการรีสตาร์ท


7.1 ไฟล์ .set — อาร์ทิแฟกต์การตั้งค่าที่พกพาได้

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

ในทางเทคนิค .set คือ ไฟล์ข้อความธรรมดา ในรูปแบบไฟล์ตั้งค่ามาตรฐานของ MetaTrader 5: แต่ละบรรทัดคือ ParameterName=Value และบรรทัดที่ขึ้นต้นด้วยเซมิโคลอน (;) คือคอมเมนต์ แผงของ Okurra จะเติมส่วนหัวแบบคอมเมนต์สั้น ๆ ไว้ต้นไฟล์ พร้อมข้อมูลว่าไฟล์มาจาก ที่ไหน และ เมื่อใด (instrument, broker, timestamp และหมายเหตุว่าไฟล์มีส่วน global หรือไม่) EA อ่าน .set ได้โดยตรง — โรบอตไม่รู้และไม่สนใจว่าไฟล์นี้ถูกสร้างขึ้นในอินดิเคเตอร์ Okurra มันเห็นเพียง .set ที่ถูกต้องและโหลดได้

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


7.2 การบันทึก: ไฟล์ .set เกิดขึ้นอย่างไร

คุณสร้างไฟล์ .set ด้วยปุ่ม Save ในแผง (OkurraButton หรือ OkurraGlobal — บทที่ 4.8 และ 5.7)

หลังจากกด Save จะมี หน้าต่างบันทึกขนาดเล็ก เปิดขึ้นมา ซึ่งคุณ พิมพ์ชื่อไฟล์ได้ทันที แล้วยืนยันด้วย “V” (หรือยกเลิกด้วย “X”) สิ่งนี้สำคัญ: คุณตั้งชื่อ ระหว่าง การบันทึก — ไม่ต้องสร้างไฟล์ที่มีแต่ timestamp ไร้ตัวตนแล้วค่อยมาเปลี่ยนชื่อทีหลัง คุณพิมพ์อะไรที่อ่านเข้าใจได้ทันที เช่น XAUUSD_mean-rev_M1 (การเปลี่ยนชื่อภายหลังก็ทำได้ — ในไดอะล็อก Load หัวข้อ 7.4)

ไฟล์จะไปอยู่ในไดเรกทอรี MQL5/Files/OKU/sets/ ภายในแซนด์บ็อกซ์ของ MetaTrader ที่ต้นไฟล์ แผงจะเขียนส่วนหัวแบบคอมเมนต์ เช่น:

; --------------------------------------------
; F-ExportSet: Okurra .set written by OkurraButton
; --------------------------------------------
; symbol       : XAUUSD
; broker       : <broker name>
; timestamp    : 2026.06.13 14:22:05
; --------------------------------------------
; Note   : per-button sections only (B1..B5).
;          Global section: use OkurraGlobal [Save] for that.
; --------------------------------------------

ไฟล์ที่บันทึกจาก OkurraGlobal มีส่วนหัวในลักษณะเดียวกัน เพียงแต่มีคำอธิบาย “F-ExportSet: Okurra EA setup snapshot (.set)” และมีบรรทัดเพิ่มเติม source (ไฟล์มาจากไหน) กับ ea_revision (รีวิชันของ EA ที่การตั้งค่านี้เข้ากันได้) ด้วยเหตุนี้ เมื่อคุณเปิดไฟล์อีกครั้งหลังผ่านไปหลายสัปดาห์ คุณจะรู้ทันทีว่าไฟล์มาจากไหนและมีอะไรอยู่ข้างใน


7.3 .set สองชนิด — แบบเต็มและแบบเฉพาะกลยุทธ์

คุณกด Save ในแผงใด เป็นตัวกำหนดว่า อะไรจะอยู่ในไฟล์ (บทที่ 2.4):

Save ใน OkurraGlobal → setup แบบเต็ม ไฟล์จะมีส่วน global (การตั้งค่าทั้งหมดที่ใช้ร่วมกันทั้ง EA) และ พารามิเตอร์ของ button ทั้งห้าตัว (B1…B5) นี่คือการตั้งค่าที่สมบูรณ์ของโรบอตทั้งตัว — คุณโหลดเข้า EA ครั้งเดียวก็ได้ครบทุกอย่าง นี่คือไฟล์ที่คุณใช้ตามปกติในการย้าย setup ที่ทำเสร็จแล้วไปยัง EA

การตั้งค่า global ที่ใหม่กว่าก็เดินทางไปใน .set ด้วย ไฟล์แบบเต็มจาก OkurraGlobal นำพาสิ่งต่อไปนี้ไปด้วย เช่น สวิตช์โหมด “own only” (Global_MonitorOwnOnly, บทที่ 5.5), ฟิลเตอร์ trade marker แบบ “own only” (Global_TradeMarkers_OwnOnly), close model (Global_CloseModel) และ cooldown ของมัน (Global_CloseAdaptive_CooldownMin) — เมื่อย้าย setup ไปยังเทอร์มินัลอื่น คุณก็ย้ายพฤติกรรมเหล่านี้ไปด้วย มีข้อยกเว้นหนึ่งข้อที่ตั้งใจไว้: Global_OwnOnly_AdoptExisting (การ adopt โพซิชันที่มีอยู่เข้าสู่รีจิสทรี “own only” แบบครั้งเดียว) มีอยู่ เฉพาะในหน้าต่าง Inputs ของ EA (F7) เท่านั้น และไม่เดินทางไปใน .set — มันคือฟิวส์นิรภัยเชิงปฏิบัติการที่คุณไม่อยากพาติดไปพร้อมการตั้งค่าโดยไม่ตั้งใจ

Save ใน OkurraButton → เฉพาะกลยุทธ์ ไฟล์จะมี เฉพาะ พารามิเตอร์ของ button B1…B5 โดยไม่มีส่วน global (ส่วนหัวของไฟล์ระบุเรื่องนี้ไว้ชัดเจน: “per-button sections only”) มีประโยชน์เมื่อคุณต้องการย้ายเฉพาะกลยุทธ์ โดยคงการตั้งค่า global ที่คุณมีอยู่แล้วใน EA ไว้

ควรใช้แบบไหน? ถ้าคุณกำลังออกแบบ setup ที่สมบูรณ์และต้องการไฟล์เดียวสำหรับโหลดเข้าโรบอต — ให้บันทึกจาก OkurraGlobal (แบบเต็ม) ไฟล์จาก OkurraButton จะสมเหตุสมผลเมื่อคุณตั้งใจแยกกลยุทธ์ออกจากการตั้งค่า global (เช่น คุณมีชุด global ชุดเดียว และมีชุด button หลายชุดที่จะทดสอบบนมัน)

แผนผังของไดเรกทอรี MQL5/Files/OKU/: สามโฟลเดอร์ย่อย (sets/ ที่มีไฟล์ .set พร้อมคำบรรยาย "โหลดเข้า EA ได้ด้วย F7", history/ ที่มี auto_*.ini พร้อมคำบรรยาย "backup แบบหมุนเวียน คุณลบเอง", applied/ ที่มี B<N>_applied.ini พร้อมคำบรรยาย "สถานะการทำงานของแผง — EA ไม่อ่าน"); ลูกศรจาก sets/ ไปยังไอคอน EA (F7 Load); จุดเน้น: มีเพียง .set จาก sets/ เท่านั้นที่ไปถึง EA
รูปที่ 7.1 — แผนผังของไดเรกทอรี MQL5/Files/OKU/: สามโฟลเดอร์ย่อย (sets/ ที่มีไฟล์ .set พร้อมค

7.4 การโหลดในแผง (Load) และตัวจัดการไฟล์

ปุ่ม Load ในแผงจะเปิด ตัวเรียกดูไฟล์ .set จากไดเรกทอรี OKU/sets/ นี่ไม่ใช่แค่ “ตัวเลือกไฟล์” — ไดอะล็อกทำงานเหมือนตัวจัดการไฟล์ขนาดเล็ก:

  • การโหลด — คุณเลือกไฟล์ แล้วแผงจะ รับไฟล์นั้นเป็นการตั้งค่าปัจจุบัน ทันที ไม่ต้องกด Apply หลังจากนั้น — .set ที่โหลดมาจะกลายเป็นสถานะที่ applied แล้ว และอินดิเคเตอร์ประกอบ (companion indicators) จะวาดใหม่ให้ตรงกับมัน (ในทางปฏิบัติ: ช่องต่าง ๆ จะไม่เรืองสีทอง เพราะ “working” กับ “applied” เหมือนกันหลังการโหลด — บทที่ 4.7)
  • การเปลี่ยนชื่อ — ในไดอะล็อกคุณสามารถ เปลี่ยนชื่อ ไฟล์ได้ (เช่น จาก Button_<timestamp>.set ที่ไร้ตัวตน เป็น XAUUSD_scalp_M1.set) เป็นวิธีที่สะดวกในการจัดระเบียบคลังไฟล์โดยไม่ต้องออกจากแผง
  • การลบ — คุณยัง ลบ ไฟล์ .set ที่ไม่ต้องการแล้วได้ด้วย การลบเป็นแบบ สองขั้นตอน (เป็นการป้องกันการคลิกโดยไม่ตั้งใจ): คลิกแรกเพียงแค่ arm ปุ่ม (ขอการยืนยัน) และ คลิกที่สองเท่านั้นจึงลบ ไฟล์ คลิกเดียวไม่ลบอะไรทั้งสิ้น — ถ้าคุณไม่คลิกครั้งที่สองภายใน 5 วินาที ระบบป้องกันจะ disarm ตัวเอง และไฟล์ยังคงอยู่ครบถ้วน

Cross-sync เมื่อโหลด ถ้าคุณมีแผงทั้งสองอยู่บนชาร์ต การโหลด .set ในแผงหนึ่งจะ รีเฟรชอีกแผงหนึ่งโดยอัตโนมัติ (กลไกจากบทที่ 2.5): คุณโหลด .set แบบเต็มใน OkurraGlobal → Global รับส่วน global ไป ส่วน OkurraButton รับ B1…B5 จากไฟล์เดียวกัน (และในทางกลับกันเช่นกัน) โหลดครั้งเดียวก็พอ — คุณไม่ต้องโหลดไฟล์เดียวกันสองครั้ง


7.5 ไฟล์อยู่ที่ไหน: sets, history, สถานะการทำงาน

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

โฟลเดอร์ย่อยมีอะไรอยู่ข้างในบทบาท
OKU/sets/ไฟล์ .set (การตั้งค่าที่คุณบันทึกไว้)สิ่งที่คุณโหลดเข้า EA (F7) และสิ่งที่ Load ในแผงโหลดขึ้นมา
OKU/history/สำเนา auto_B<N>_<TS>.ini, auto_Global_<TS>.ini, พรีเซ็ตที่ตั้งชื่อไว้ manual_B<N>_<label>.ini, และ offline_B<N>_<TS>.ini แบบเก่าbackup แบบหมุนเวียน + พรีเซ็ต — สำเนาอัตโนมัติถูกเพิ่มเข้ามาทุกครั้งที่กด Apply; manual_... เกิดขึ้นเมื่อคุณตั้งชื่อของคุณเองให้การบันทึกในไดอะล็อก P ของ OkurraButton (บทที่ 4.8)
OKU/applied/B<N>_c<id>_applied.ini, Global_c<id>_applied.ini, ไฟล์ทำงานสถานะการทำงานของแผง — หน่วยความจำระหว่างการรีเฟรชชาร์ต
OKU/ea_memory/รวมถึงรีจิสทรีโพซิชันของตัว EA เอง ownreg_acc<login>_<sym>_mb<base>_ch<id>.csvหน่วยความจำของตัว EA เอง (โหมด “own only”, บทที่ 5.5) — อยู่รอดหลังการรีสตาร์ทเทอร์มินัล; อย่าไปแก้ไขด้วยตนเอง
OKU/diag/ea_activity.log (และไฟล์วินิจฉัยต่าง ๆ)บันทึกกิจกรรมของ EA — บันทึกการเข้าออเดอร์ การเทรด และเหตุการณ์ด้านการป้องกัน (บทที่ 21)

สี่สิ่งที่ควรจดจำ:

  1. เฉพาะ .set จาก sets/ เท่านั้นที่ไปถึง EA ไฟล์ .ini ใน history/ และ applied/ เป็นหน่วยความจำภายในของแผง — โรบอทไม่เคยอ่านไฟล์เหล่านั้น (บทที่ 2.6) มีรายละเอียดหนึ่งข้อ: EA เขียนไฟล์พรีวิวของตัวเองลงในโฟลเดอร์ย่อย applied/viz/ — companion indicators บนกราฟของ EA จะอ่านไฟล์เหล่านั้น (เพื่อแสดงสิ่งที่โรบอทเห็นจริง ๆ) นี่คือการไหลของข้อมูลในทิศทางตรงกันข้าม EA ยังคงไม่โหลดอะไรจาก applied/ มาเป็นคอนฟิกูเรชัน
  2. ชื่อไฟล์ของสถานะทำงานมีคำต่อท้ายบอกกราฟ ไฟล์ใน applied/ ตั้งชื่อว่า B<N>_c<id>_applied.ini / Global_c<id>_applied.ini โดยที่ <id> คือตัวระบุกราฟแบบย่อ — ด้วยเหตุนี้ กราฟสองกราฟของ instrument เดียวกันจึงไม่ปนสถานะการออกแบบของกันและกัน ควรจำไว้เมื่อคุณค้นหาไฟล์ด้วยมือ
  3. ประวัติ (history/) คือตาข่ายนิรภัย ทุกครั้งที่กด Apply แผงจะเพิ่มสำเนาไว้ที่นั่น ระบบไม่ล้างให้อัตโนมัติ — ไฟล์จะสะสมขึ้นเรื่อย ๆ และคุณลบเองด้วยมือเมื่อเห็นว่าเหมาะสม ด้วยเหตุนี้คุณจึงย้อนกลับไปยังสถานะการออกแบบก่อนหน้าได้ แม้คุณจะไม่ได้บันทึกมันไว้เป็น .set
  4. Reset (R) ในแผงไม่แตะประวัติ Reset ล้างสถานะทำงาน (applied/) แต่ history/ ยังอยู่ — ดังนั้นแม้หลังรีเซ็ต คุณก็ยังมีที่ให้กู้คอนฟิกูเรชันกลับมา (บทที่ 4.8)

7.6 การโหลดเข้า EA (F7 → Load)

นี่คือขั้นตอนสุดท้ายของสะพาน: การย้ายคอนฟิกูเรชันที่ออกแบบไว้เข้าไปในโรบอทที่กำลังทำงาน มันเกิดขึ้นใน EA เอง ผ่านกลไกมาตรฐานของ MetaTrader — ที่นี่ไม่มีอะไรเฉพาะของ Okurra นอกจากว่าคุณชี้ไปที่ไฟล์ .set ที่บันทึกไว้ก่อนหน้านี้

ทีละขั้นตอน:

  1. เปิดหน้าต่างคอนฟิกูเรชันของ EA บนกราฟที่มี EA กำลังทำงาน (หรือเพิ่งลากวางลงไป) ให้กด F7 — หรือคลิกขวาบนกราฟ → Expert Advisors → Properties หน้าต่างจะเปิดขึ้นพร้อมแท็บ Inputs
  2. คลิก Load (ปุ่มที่ด้านล่างของหน้าต่างคอนฟิกูเรชัน MT5)
  3. ชี้ไปที่ไฟล์ .set จาก OKU/sets/ — ไฟล์ที่คุณบันทึกไว้ในแผง (ควรเป็นไฟล์แบบเต็มจาก OkurraGlobal)
  4. ยืนยันด้วย OK EA จะเริ่มทำงาน (หรือรีสตาร์ต) ด้วยคอนฟิกูเรชันที่โหลดเข้ามา — ทั้งการตั้งค่าส่วนกลางทั้งหมดและ button ทั้งห้าตัวในคราวเดียว

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

.set ทำงานได้ทั้งสองทาง EA ไม่เพียง โหลด .set ได้ แต่ยัง บันทึก การตั้งค่าปัจจุบันของมันลงเป็น .set ได้ด้วย — ด้วยปุ่ม Save ดั้งเดิมในหน้าต่าง F7 เดียวกัน (มาตรฐานของ MetaTrader) ไฟล์แบบนี้มีชื่อพารามิเตอร์เหมือนกันทุกตัวกับ .set จากแผง ดังนั้นคุณจึง โหลดมันกลับเข้า OkurraButton/OkurraGlobal ได้ (Load) แก้ไขมันบนกราฟออกแบบ และบันทึกเป็น .set ใหม่ ด้วยเหตุนี้ .set จึงเป็นรูปแบบการแลกเปลี่ยนสองทางอย่างสมบูรณ์ระหว่างแผงกับโรบอท — ไม่ใช่เพียง “panel → EA” (มันยังคงเป็นการถ่ายโอนด้วยไฟล์ ไม่ใช่การเชื่อมต่อแบบสด ๆ — บทที่ 2.7)

เซ็ตจากก่อน release 1.28 — ย้ายมาอย่างไร ฟิลด์ใหม่ (Extreme Mode, Filters Mode, แถว OKUR bounce) จะรับค่าเริ่มต้นของตัวเองเมื่อโหลดไฟล์เก่า กล่าวคือ พฤติกรรมเหมือนก่อน 1.28 ทุกประการ — โดยมีข้อยกเว้นหนึ่งข้อ: ถ้าเซ็ตเก่าเปิด “Keep Extreme Across Zone Exits” ไว้ (ฟิลด์ที่ถูกลบออกใน 1.28) การตั้งค่านั้น ย้ายผ่านแผงเท่านั้น โหลดไฟล์แบบนั้นเข้า OkurraButton (Load) — แผงจะแปลคีย์เก่าเป็น Extreme Mode = Keep Across Exits — จากนั้น Apply และ Save จะให้ไฟล์ในรูปแบบใหม่ การโหลดไฟล์เก่า เข้า EA โดยตรงผ่าน F7 จะข้ามคีย์นั้นไปอย่างเงียบ ๆ และ button จะกลับไปเป็น Classic (MetaTrader เพิกเฉยต่อชื่อที่ไม่รู้จักโดยไม่มีคำเตือน) บทที่ 9.6

เซ็ตแบบ 7 button (จากก่อน release 2.00) — ย้ายมาอย่างไร คีย์ B6_*/B7_* จะ ถูกข้ามไปอย่างเงียบ ๆ เมื่อโหลด (เหมือนชื่อที่ไม่รู้จักทั้งหมด) และกลยุทธ์ B1–B5 จากไฟล์ทำงานได้โดยไม่เปลี่ยนแปลง มีสิ่งหนึ่งที่ถูกจัดระเบียบอย่างจริงจังในกระบวนการนี้: เป้าหมายของ trigger ที่ชี้ไปยัง B6/B7 เดิม — EA จะเพิกเฉยต่อมันและเขียนข้อความเกี่ยวกับเป้าหมายที่ไม่มีอยู่ลงใน Journal ส่วนแผง Button จะล้างเป้าหมายแบบนั้นตั้งแต่ตอนที่โหลดไฟล์ ดังนั้นมันจึงไม่ติดไปกับการบันทึกใหม่ ค่าเริ่มต้นจากโรงงานที่เปลี่ยนไปสองอย่าง (EA เริ่มทำงานโดยสวิตช์เป็น OFF; sensor ของ Price Movement ถูกปิดมาจากโรงงาน) มีผลกับเซ็ตที่ไม่มีคีย์เหล่านั้น — เช็กลิสต์ฉบับเต็มสำหรับการอัปเดต: บทที่ 3.5

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


7.7 ภาคปฏิบัติ: การตั้งชื่อและการจัดการวาเรียนต์

.set คือคลังงานวิจัยของคุณ — นิสัยไม่กี่อย่างจะทำให้อีกสองสัปดาห์ข้างหน้าคุณยังรู้ว่าอะไรคืออะไร:

  • ตั้งชื่อที่บรรยายเนื้อหาตั้งแต่ตอนบันทึก แทนที่จะเป็น Button_20260613_142205.set ให้พิมพ์อะไรที่บรรยายเนื้อหาลงในกล่องบันทึก เช่น XAUUSD_meanrev_M1_v1, NAS100_momentum_3butt, hedge_symetryczny_test ชื่อคือสิ่งแรกที่คุณจะเห็นในกล่อง Load
  • ทำเวอร์ชันด้วยมือโดยใช้คำต่อท้าย เมื่อคุณทำซ้ำกับไอเดียเดิม ให้ต่อท้ายด้วย _v1, _v2, _v3 อย่าเขียนทับเวอร์ชันก่อนหน้า — ปล่อยให้มันอยู่เป็นจุดอ้างอิง นี่คือ “ประวัติแบบทำมือ” ของวาเรียนต์ ซึ่งอ่านง่ายกว่าสำเนาอัตโนมัติใน history/
  • เก็บไฟล์ “แบบเต็ม” หนึ่งไฟล์ต่อหนึ่ง setup สะดวกที่สุดคือทำงานกับไฟล์แบบเต็มจาก OkurraGlobal (Global + B1…B5) — หนึ่งไฟล์ = คอนฟิกูเรชันทั้งหมดของโรบอท ปล่อยไฟล์ “เฉพาะกลยุทธ์” จาก OkurraButton ไว้สำหรับกรณีที่คุณตั้งใจ (ชุด global หนึ่งชุด กับชุด button หลายชุด)
  • ล้าง history/ เมื่อมันโตขึ้น สำเนาอัตโนมัติจากทุกครั้งที่ Apply ไม่ลบตัวเอง เมื่อโฟลเดอร์บวมขึ้น ให้ลบของเก่าด้วยมือ — เพราะวาเรียนต์ที่สำคัญของคุณถูกบันทึกไว้เป็นไฟล์ .set ที่ตั้งชื่อแล้วอยู่ดี
  • จดไว้ว่า .set นั้นมีเจตนาจะแสดงอะไร ไฟล์บอกว่าคุณตั้งค่าอย่างไร แต่ไม่บอกทำไม บันทึกสั้น ๆ (“v3 — threshold ลึกกว่า สัญญาณน้อยลง ทดสอบกับเทรนด์”) ควบคู่กับข้อสังเกตจาก demo จะทำให้ภาพครบถ้วน คุณยังเพิ่มคำอธิบายของตัวเองลงในหัวข้อคอมเมนต์ของไฟล์ด้วยโปรแกรมแก้ไขข้อความธรรมดาก็ได้ — มันเป็นข้อความเปล่าอยู่แล้ว

ทั้งหมดนี้ประกอบกันเป็นจังหวะการทำงานกับ O!kurra: ออกแบบใน indicators → บันทึก .set → โหลดเข้า EA → สังเกตบน demo → กลับไปออกแบบ ไฟล์ .set คือแกนของวงจรนี้ — และเป็นคลังเก็บสิ่งที่คุณได้เรียนรู้


7.8 คีย์ลิขสิทธิ์และไฟล์ .set

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

ไฟล์ไหนมีบรรทัด LicenseKey:

  • .set แบบเต็มจาก OkurraGlobalมีบรรทัด LicenseKey= เสมอ แผง Global ไม่ตรวจสอบคีย์ (indicators เป็นของฟรี) — ช่องคีย์ของมันเป็นเพียงการแสดงค่าจากไฟล์ที่โหลดล่าสุด ดังนั้นในทางปฏิบัติบรรทัดที่ถูกบันทึกจึงมักจะ ว่าง
  • ไฟล์ “เฉพาะกลยุทธ์” จาก OkurraButtonไม่มีคีย์เลย (ส่วนกลางไม่ถูกบันทึก)
  • เซ็ตจากโรงงานของแต่ละ release (Okurra-Defaults-<version>.set) และ เซ็ตจาก Creatorตั้งใจไม่ให้มี บรรทัด LicenseKey เลย

เกิดอะไรขึ้นเมื่อโหลดผ่าน F7 → Load:

  • ถ้าไฟล์ มี บรรทัด LicenseKey= (แม้จะว่างเปล่า) ค่าของมันจะ เขียนทับ ช่องคีย์ในหน้าต่างของ EA บรรทัดว่าง = คีย์ถูกล้าง — ตอนเริ่มทำงาน EA จะแสดงการแจ้งเตือน “Enter your License key in EA inputs” และจะไม่ได้รับลิขสิทธิ์ที่ใช้งานได้
  • ถ้าไฟล์ ไม่มี บรรทัดนั้น ช่องคีย์จะ ไม่ถูกแตะต้อง — คีย์ที่คุณวางไว้ก่อนหน้านี้จะรอดพ้นการโหลด นี่คือเหตุผลที่เซ็ตจากโรงงานและจาก Creator ละบรรทัดนี้ไป

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

กฎสุขอนามัยเมื่อแบ่งปันเซ็ต: ก่อนที่คุณจะแบ่งปันไฟล์ที่บันทึกจาก OkurraGlobal ให้เปิดมันในโปรแกรมแก้ไขข้อความและลบบรรทัด LicenseKey=... (หรืออย่างน้อยก็ลบค่าของมัน) คุณไม่แบ่งปันคีย์ของคุณ — และคุณช่วยผู้รับให้ไม่ต้องเจอความประหลาดใจที่คีย์ของเขาเองถูกล้างหลังจากโหลดไฟล์ของคุณ


7.9 ทะเบียนความเป็นเจ้าของ position และการรีสตาร์ท

การ์ดสามใบ: การทำงานปกติ (เขียนบันทึกลงสมุด, รีสตาร์ท, การดูแลกลับคืนมา), orphan มาจากไหน (pending ที่ถูกเติมขณะออฟไลน์ / VPS / netting), การตรวจจับและการซ่อมใน EA 1.26 (Alert จากโรงงาน → Adopt พร้อมหลักฐาน)
รูปที่ 7.2 — การ์ดสามใบ: การทำงานปกติ (เขียนบันทึกลงสมุด, รีสตาร์ท, การดูแลกลับคืนมา), orphan

โรบอทที่ทำงานในโหมด “own only” (Global_MonitorOwnOnly, บทที่ 5.5 — เป็นพฤติกรรมจากโรงงาน) จะเก็บ สมุดบันทึกส่วนตัว ของ position ของมัน: ทุกครั้งที่เปิด position มันจะเขียนหมายเลข position ลงในไฟล์เล็ก ๆ บนดิสก์ของเทอร์มินัล หลังจากรีสตาร์ทแพลตฟอร์ม โหลดค่าใหม่ด้วย F7 หรือคอมไพล์ใหม่ EA จะอ่านสมุดบันทึกนั้นกลับมา และ ดูแลเฉพาะ position ที่มันเปิดขึ้นมาเองเท่านั้น — อินสแตนซ์พี่น้องบนสัญลักษณ์เดียวกันจะไม่ถูกแตะต้องเลย สมุดบันทึกแยกกันสำหรับแต่ละชุดของ บัญชี + instrument + ฐาน Magic Number + ชาร์ต

สิ่งนี้หมายถึงอะไรในทางปฏิบัติ:

  • การรีสตาร์ทแพลตฟอร์มแบบธรรมดานั้นปลอดภัย สมุดบันทึกอยู่รอด; position กลับมาอยู่ใต้การดูแลอย่างเต็มรูปแบบ (BE/TS, virtual SL/TP, basket, Close All)
  • Pending order ไม่รอดจากการรีสตาร์ท — โดยการออกแบบ รายการ pending ที่ถูกเฝ้าดูอยู่มีชีวิตอยู่เฉพาะในหน่วยความจำของโรบอท หลังการรีสตาร์ททุกครั้ง EA จะ กวาด pending ของตัวเองที่ค้างอยู่ที่โบรกเกอร์ออกไป เพื่อไม่ให้ setup เก่าที่ไม่มีใครกำกับดูแลแล้วไปทำงานอีกหลายวันต่อมา ตั้งแต่ EA 1.26 คุณจะได้รับการแจ้งเตือนเรื่องนี้ (ก่อนหน้านี้มันเกิดขึ้นอย่างเงียบ ๆ — จึงมีรายงานว่า “โรบอทตัดออเดอร์ของผมทิ้งหลังรีสตาร์ท”)
  • position กำพร้า (orphan position) ถ้า position ที่ถือ Magic Number ของโรบอทอยู่ ไม่ปรากฏในสมุดบันทึก โรบอทในโหมด own only จะ ไม่ จัดการมัน: ไม่มี Break Even หรือ Trailing, ไม่มี virtual SL/TP (เมื่อเปิด Virtual SL อยู่ position เช่นนี้จะ เปลือย — stop ไม่มีอยู่ที่โบรกเกอร์ด้วย!), ถูกกันออกจาก basket ของ BEa และจากตัวเฝ้าระวังบัญชี และ Close All จะไม่ปิดมัน orphan มาจากไหน:
    • pending order ที่ ถูกเติมขณะที่แพลตฟอร์มปิดอยู่ (เช่น gap หลังสุดสัปดาห์) — การเขียนบันทึกลงสมุดไม่มีโอกาสเกิดขึ้น;
    • position ที่เปิด ในสภาพแวดล้อมอื่นMetaTrader VPS ที่ติดมากับแพลตฟอร์มไม่ย้ายไฟล์ของโรบอท (โฟลเดอร์ไฟล์ยังอยู่บนคอมพิวเตอร์ของคุณ) ดังนั้น VPS และเครื่องภายในจึงเก็บ สมุดบันทึกแยกกัน;
    • พบน้อยกว่า: บัญชีแบบ netting หรือการยืนยันของโบรกเกอร์ที่ล่าช้าได้บันทึกหมายเลขผิดลงในสมุด

ใหม่ใน EA 1.26 — การตรวจจับและการซ่อม:

Input (F7)ค่าจากโรงงานการทำงาน
Global_OwnOnly_ReconcileAlertสแกนตอนเริ่มทำงานและทุกนาที: orphan ทุกตัวจะถูกบันทึกลง journal popup แยกเฉพาะถูกสงวนไว้สำหรับ orphan ที่มีหลักฐานความเป็นเจ้าของ (มันเป็น position ที่คุณทำหายไปจริง ๆ — เกิดน้อยและสำคัญมาก); กรณีที่เหลือ — ส่วนใหญ่เป็น EA ต่างถิ่นที่ใช้ magic ในช่วงของโรบอท — จะรวมอยู่ใน popup สรุปหนึ่งครั้งต่อเซสชัน ดังนั้นการแจ้งเตือนจึงไม่ท่วมหน้าจอ Alert = ข้อมูลเท่านั้น การเทรดไม่เปลี่ยนแปลง โหมด Adopt จะรับ orphan กลับมาอยู่ใต้การดูแลเพิ่มเติมด้วย — เฉพาะเมื่อมี หลักฐานความเป็นเจ้าของ (หมายเลข ticket ของออเดอร์ที่ถูกบันทึกไว้ หรือคอมเมนต์ของทรานแซกชัน Okurra_btn ในขณะที่ไม่มีอินสแตนซ์ที่สองซึ่งยังทำงานอยู่อ้างสิทธิ์ฐาน MN เดียวกัน) กรณีคลุมเครือจะไม่ถูกเดาเลย — คุณจะได้รับ alert พร้อมคำอธิบายแทน
Global_OwnReg_TrackPendingOrdersปิดบันทึก หมายเลข ticket ของ pending order ที่วางไว้ ลงในสมุดด้วย position ที่เกิดจาก pending แบบ “ถูกเติมขณะที่ไม่อยู่” จึงมีหลักฐานความเป็นเจ้าของที่หนักแน่น และ Adopt จะรับมันคืนได้อย่างเชื่อถือได้
Global_StalePendings_OwnListOnlyปิดการกวาดหลังรีสตาร์ทจะยกเลิก เฉพาะ pending ที่ปรากฏอยู่ในสมุด (ป้องกันอินสแตนซ์พี่น้องเมื่อช่วง MN ทับซ้อนกัน) ต้องเปิดการบันทึก ticket ข้างต้น
Global_OwnReg_ConfirmTicketOnDealปิดสำหรับบัญชีแบบ netting / การเติมออเดอร์ที่ล่าช้า: บันทึกในสมุดจะถูกปิดให้สมบูรณ์จากการยืนยันดีลของโบรกเกอร์ (ซ่อมบันทึกที่ผิด และย้ายจุดอ้างอิงของ virtual SL/TP ด้วย)
Global_AlertOwnRegistryเปิดpopup (และ push หากเปิดใช้) สำหรับเหตุการณ์ของทะเบียน: ตรวจพบ orphan, pending ถูกกวาดหลังรีสตาร์ท, คำเตือน MagicBase ≤ 0 เป็น alert เดียวที่เปิดมาจากโรงงาน — เพื่อให้ข้อมูลล้วน ๆ

VPS และเทอร์มินัลที่สอง — กฎเหล็กหนึ่งข้อ ในบัญชีเดียว ฐาน Magic Number หนึ่งฐานควรมี โรบอทที่ทำงานอยู่หนึ่งตัวในเวลาเดียวกัน MetaTrader VPS ที่ติดมากับแพลตฟอร์มบังคับเรื่องนี้ด้วยตัวเอง (ชาร์ตที่ถูก “ย้าย” ไปที่ VPS จะหยุดทำงานในเครื่องภายใน) แต่จำไว้ว่า: ไฟล์ของโรบอทไม่ย้ายตามไป — หลังการย้ายทุกครั้ง สมุดบันทึกบน VPS จะเริ่มใหม่หมด (การเริ่มครั้งแรกจะรับ position เข้าดูแลอัตโนมัติตาม MN) และสมุดบันทึกในเครื่องภายในไม่รู้อะไรเลยเกี่ยวกับ position ที่เปิดบน VPS หลังกลับมาจาก VPS คุณจะเห็น alert เรื่อง orphan — นั่นคือกลไกนี้ทำงานอยู่พอดี; สลับ reconcile ไปเป็น Adopt (หรือใช้ Global_OwnOnly_AdoptExisting แบบครั้งเดียว) แล้วโรบอทจะรับมันกลับมา

Magic Number 0 การตั้ง Global_MagicBase=0 ทำให้ button แรกเทรดด้วย MN = 0 — ค่าเดียวกับที่ position ที่เปิดด้วยมือ ถืออยู่ (รายงานจะแสดงคอลัมน์ magic ว่างเปล่า) โรบอทและมนุษย์กลายเป็นสิ่งที่แยกจากกันไม่ได้ ตั้งแต่ 1.26 EA เตือนเรื่องนี้อย่างชัดเจน; ให้เก็บฐานไว้ที่ ≥ 1 และเว้นระยะระหว่างอินสแตนซ์อย่างน้อย 5


นี่เป็นการปิด ส่วนที่ว่าด้วยการออกแบบ (บทที่ 4–7) ในบทถัดไปเราจะไปสู่ การทำงานจริง (execution) — เริ่มจากกายวิภาคทั้งหมดของ พาเนลควบคุม EA: สิ่งที่คุณเห็นบนชาร์ตหลังจากโหลดคอนฟิกและเริ่มเดินโรบอท และวิธีบังคับทิศทางมันเชิงยุทธวิธีในระหว่างที่มันทำงาน