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 หลายชุดที่จะทดสอบบนมัน)
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) |
สี่สิ่งที่ควรจดจำ:
- เฉพาะ
.setจากsets/เท่านั้นที่ไปถึง EA ไฟล์.iniในhistory/และapplied/เป็นหน่วยความจำภายในของแผง — โรบอทไม่เคยอ่านไฟล์เหล่านั้น (บทที่ 2.6) มีรายละเอียดหนึ่งข้อ: EA เขียนไฟล์พรีวิวของตัวเองลงในโฟลเดอร์ย่อยapplied/viz/— companion indicators บนกราฟของ EA จะอ่านไฟล์เหล่านั้น (เพื่อแสดงสิ่งที่โรบอทเห็นจริง ๆ) นี่คือการไหลของข้อมูลในทิศทางตรงกันข้าม EA ยังคงไม่โหลดอะไรจากapplied/มาเป็นคอนฟิกูเรชัน - ชื่อไฟล์ของสถานะทำงานมีคำต่อท้ายบอกกราฟ ไฟล์ใน
applied/ตั้งชื่อว่าB<N>_c<id>_applied.ini/Global_c<id>_applied.iniโดยที่<id>คือตัวระบุกราฟแบบย่อ — ด้วยเหตุนี้ กราฟสองกราฟของ instrument เดียวกันจึงไม่ปนสถานะการออกแบบของกันและกัน ควรจำไว้เมื่อคุณค้นหาไฟล์ด้วยมือ - ประวัติ (
history/) คือตาข่ายนิรภัย ทุกครั้งที่กด Apply แผงจะเพิ่มสำเนาไว้ที่นั่น ระบบไม่ล้างให้อัตโนมัติ — ไฟล์จะสะสมขึ้นเรื่อย ๆ และคุณลบเองด้วยมือเมื่อเห็นว่าเหมาะสม ด้วยเหตุนี้คุณจึงย้อนกลับไปยังสถานะการออกแบบก่อนหน้าได้ แม้คุณจะไม่ได้บันทึกมันไว้เป็น.set - Reset (
R) ในแผงไม่แตะประวัติ Reset ล้างสถานะทำงาน (applied/) แต่history/ยังอยู่ — ดังนั้นแม้หลังรีเซ็ต คุณก็ยังมีที่ให้กู้คอนฟิกูเรชันกลับมา (บทที่ 4.8)
7.6 การโหลดเข้า EA (F7 → Load)
นี่คือขั้นตอนสุดท้ายของสะพาน: การย้ายคอนฟิกูเรชันที่ออกแบบไว้เข้าไปในโรบอทที่กำลังทำงาน มันเกิดขึ้นใน EA เอง ผ่านกลไกมาตรฐานของ MetaTrader — ที่นี่ไม่มีอะไรเฉพาะของ Okurra นอกจากว่าคุณชี้ไปที่ไฟล์ .set ที่บันทึกไว้ก่อนหน้านี้
ทีละขั้นตอน:
- เปิดหน้าต่างคอนฟิกูเรชันของ EA บนกราฟที่มี EA กำลังทำงาน (หรือเพิ่งลากวางลงไป) ให้กด F7 — หรือคลิกขวาบนกราฟ → Expert Advisors → Properties หน้าต่างจะเปิดขึ้นพร้อมแท็บ Inputs
- คลิก
Load(ปุ่มที่ด้านล่างของหน้าต่างคอนฟิกูเรชัน MT5) - ชี้ไปที่ไฟล์
.setจากOKU/sets/— ไฟล์ที่คุณบันทึกไว้ในแผง (ควรเป็นไฟล์แบบเต็มจาก OkurraGlobal) - ยืนยันด้วย
OKEA จะเริ่มทำงาน (หรือรีสตาร์ต) ด้วยคอนฟิกูเรชันที่โหลดเข้ามา — ทั้งการตั้งค่าส่วนกลางทั้งหมดและ 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 และการรีสตาร์ท
โรบอทที่ทำงานในโหมด “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_Reconcile | Alert | สแกนตอนเริ่มทำงานและทุกนาที: 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: สิ่งที่คุณเห็นบนชาร์ตหลังจากโหลดคอนฟิกและเริ่มเดินโรบอท และวิธีบังคับทิศทางมันเชิงยุทธวิธีในระหว่างที่มันทำงาน