EA職人のEA講座【004】意外と大変?EAはどうやって開発されているのか? translated to Thai: EA ช่าง EA หลักสูตร【004】ไม่ยากอย่างที่คิด? EA ถูกพัฒนาขึ้นมาอย่างไร?
กระบวนการพัฒนา EA
นักพัฒนา EA เมื่อแนวคิดหรือวิธีการในการเทรดใดๆ ประดิษฐ์ขึ้นมา พวกเขาจะถอดความคิดนั้นเป็นภาษา เชิงตรรกะ ลงลึกถึงระดับตรรกะ ทำให้เป็นโปรแกรม และแปลให้คอมพิวเตอร์เข้าใจเป็นภาษาของเครื่องเมื่อจะสร้างสิ่งใดก็ตาม แน่นอนว่าวงการพัฒนา EA ก็เริ่มจากเฟสของการวางระบบ แนวคิด ความต้องการ และการนิยามข้อกำหนด เช่นเดียวกับการวางแผนระบบ
สิ่งที่ถูกสร้างขึ้นในเวลานั้นคือนิยามสเปค
ในกรณีของ EA ก็เป็นคำสั่งหรือข้อกำหนดเกี่ยวกับพฤติกรรม เช่น “เข้าออเดอร์ภายใต้เงื่อนไขนี้ และออกเมื่อเงื่อนไหดนี้เกิดขึ้น”
บนสมาร์ทโฟน จะมีลักษณะคล้ายว่า “หากเปิดเครื่องอยู่แล้ว กดปุ่ม Power ค้างเกิน 1 วินาทีให้เริ่มทำงาน แต่ถ้าระดับแบตเตอรี่ต่ำกว่า 4% ให้ไม่เริ่มทำงานและโชว์คำเตือน”
หากทำตรงนี้ผิดพลาด ความงานทั้งหมดที่ทำไว้ภายหลังจะต้องทำใหม่ทั้งหมด จึงเป็นเฟสที่ต้องใช้แรงงานมากที่สุด เอาไว้ว่าแรงงานหมายถึงต้นทุนด้านบุคลากรและเวลา
เมื่อสเปคกำหนดแล้ว ก็จะถูกร่างลงในระดับตรรกะ นั่นคือเฟสการออกแบบ
เป็นเรื่องที่ใช้ได้กับทุกเฟส คือเพื่อให้ใครเห็นก็จะตีความได้เหมือนกันให้มากที่สุด โดยการใช้แผนภูมิและตาราง
เอกสารการออกแบบที่ไม่ดีจะมีคำอธิบายด้วยคำพูดมาก เพราะภาษาญี่ปุ่นมีความคลุมเครือสูง หากถูก outsource ไปต่างประเทศแล้วจะมีบั๊กมากมายกลับมาแน่นอน
เพื่อป้องกันไม่ให้เป็นเช่นนั้น จึงใช้แผนภาพ (แผนภาพความสัมพันธ์หรือผังงาน) และตาราง (ตารางสถานะการเปลี่ยน สหสัมพันธ์) เพื่อให้ใครเห็นก็ตีความตรงกัน
แนวคิดการออกแบบพื้นฐานคือสร้างกรอบการทำงานของฟังก์ชันทั้งหมด และในรายละเอียดออกแบบจะเติมรายละเอียดภายในแต่ละฟังก์ชัน
เมื่อออกแบบเสร็จ ก็เข้าสู่การเขียนโปรแกรม… จริงๆ แล้วพูดอย่างนี้ดูเป็นภาคจริง แต่เฟสนี้ง่ายที่สุด และไม่ต้องใช้งานมากในเวลาและค่าใช้จ่าย
เพราะสิ่งที่ต้องคิดได้จบในเฟสออกแบบแล้ว ที่เหลือคือการถอดความที่เขียนในเอกสารออกเป็นภาษาคอมพิวเตอร์
เนื่องจากเป็นงานที่ทำซ้ำง่าย จึงมีการทำเครื่องกลอัตโนมัติในเฟสนี้ บางครั้งปล่อยให้แอปพลิเคชันสร้างขึ้นเองอัตโนมัติ
ทีนี้ เมื่อการเขียนโปรแกรมเสร็จแล้ว ก็ถึงขั้นการแปลเป็นภาษาที่เครื่องเข้าใจ “ภาษาเครื่อง” โดยเรียกว่า compilation และให้เครื่องมือคอมไพล์ช่วยทำ
คอมพิวเตอร์ไม่มีสติปัญญา
เอ๊ะ ภาษาโปรแกรมอย่าง C หรือ MQL ทำไมคอมพิวเตอร์ถึงเข้าใจไม่ได้ล่ะ?ใช่ ไม่ได้หรอก คอมพิวเตอร์ทำงานด้วย 0 และ 1 หรือที่เรียกว่า on และ off และสถานะของแรงดันไฟฟ้า
ใช่เลย เพราะมันไม่ใช่สิ่งมีชีวิต ไม่สามารถเข้าใจคำพูดจริงๆ ได้เพียงแค่ภาษาเครื่อง
ดังนั้นจึงแปลงภาษาโปรแกรมเป็นข้อมูล 0 และ 1 แล้วคอมพิวเตอร์ก็อ่านข้อมูลนั้นและปรับแรงดันไฟฟ้าขึ้นลง เพื่อกำหนดว่าไหนควรถือ on หรือ off การตีความ 0 หรือ 1 ว่าคือ on ก็ขึ้นกับการออกแบบ
ด้วยวิธีนี้ นักพัฒนา EA จะนำแนวคิดและเทคนิคการเทรดลงไปในโปรแกรม และเข้าสู่เฟสด้านล่างของโมเดล V ในส่วนของ “ทดสอบ”
ตรวจสอบว่าโปรแกรมที่สร้างขึ้นเข้าออเดอร์และออกจากออเดอร์ตามเงื่อนไขที่คาดไว้หรือไม่ และจะทำงานต่อไปได้โดยไม่หยุดชะงักหรือไม่ด้วย
เส้นทางที่ยาวนาน
เมื่อพบการทำงานที่ไม่คาดคิด หรือบั๊ก ให้แก้ไขและทดสอบใหม่ กระบวนการนี้เรียกว่า debuggingเมื่อมีแมลงอยู่ในคอมพิวเตอร์ ทำให้วงจรขัดข้องและแสดงพฤติกรรมที่ไม่คาดคิด จึงเรียกความผิดพลาดว่าบั๊ก
การลดบั๊กให้เหลือศูนย์เป็นเป้าหมาย แต่หากใช้งานจริงอาจเกิดเหตุการณ์ที่ไม่คาดคิดได้
หากเกิดขึ้น ระบบจะต้องมีมาตรการความปลอดภัย เช่น ไม่ให้ทำรายการในล็อตที่ไม่คาดคิด นี่เรียกว่าเฟิลเซฟ (fail-safe) แปลตรงตัวว่า “ปลอดภัยเมื่อเกิดความล้มเหลว”
เป็นระบบคล้ายการหยุดทำงานอัตโนมัติของรถยนต์หรือเครื่องลิฟต์ ที่เมื่อเกิดความผิดปกติ ก็ให้ทำงานในโหมดความปลอดภัยเพื่อไม่ให้เกิดสถานการณ์อันตราย
อีกแนวหนึ่งที่คล้ายกันคือ foolproof หมายถึง ปลอดภัยแม้ผู้ใช้งานที่คิดไม่ดีก็ยังไม่ทำให้เกิดเหตุร้าย
เมื่อเสร็จกระบวนการเหล่านี้ ก็ถึงเวลาของ Backtest ที่ทุกคนคุ้นเคย มาแล้วนะ ซึ่งเป็นช่วงสำคัญและยาวนาน
หากผล backtest ไม่พอใจ ก็ต้องเริ่มจากแนวคิดใหม่
ด้วยการวนลูปจากแนวคิดถึง backtest ซ้ำๆ EA ที่ไม่ผ่านจะถูกคัดเลือกออก เผยแพร่เฉพาะ EA ที่ให้ผลลัพธ์ที่พอใจให้ผู้ใช้งานเห็น
■ แนวคิดและนโยบายการใช้งาน EA ที่ฉันพัฒนา
EA Craftsman's EA (สามพ RNG) คลิกที่นี่× ![]()