สาธิตการคำนวณมัลติเธรดด้วย Pseudo-Indicator สำหรับ MetaTrader 5

Mike 2020.01.17 05:13 23 0 0
ไฟล์แนบ

สวัสดีครับเพื่อนๆ นักเทรด! วันนี้เราจะมาพูดถึง Pseudo-Indicator ตัวหนึ่งที่ไม่ใช้บัฟเฟอร์ ซึ่งมีจุดประสงค์หลักคือการสาธิตเทคนิคการคำนวณแบบมัลติเธรด

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

ตัวอย่างนี้สำหรับผู้ใช้ที่มีพื้นฐานด้านการเขียนโปรแกรม

แนวคิดนี้มาจากบทความเกี่ยวกับ Multi-Threaded Asynchronous WebRequests ซึ่งคุณสามารถหาข้อมูลเชิงเทคนิคเพิ่มเติมเกี่ยวกับวิธีการส่งข้อความ (เหตุการณ์) และวิธีการใช้ทรัพยากรในการส่งข้อมูลระหว่างกราฟได้ในบทความนั้น

ตัวอินดิเคเตอร์นี้ใช้การนำเสนอที่ "กระชับ" กว่าบทความที่กล่าวถึง โดยใช้วัตถุกราฟแทนหน้าต่างกราฟจริง ๆ รายละเอียดเพิ่มเติมสามารถดูได้จาก ฟอรัม

อย่าลืมว่าต้องทำการคอมไพล์ EA - MultiThreadedObjectWorker ก่อนที่จะคอมไพล์และรันตัวอินดิเคเตอร์เอง - MultiThreadedIndicator

พารามิเตอร์นำเข้า

  • sinput int _Cores = 1; - จำนวนเธรดที่ใช้ (ไม่ควรใช้มากกว่าจำนวนคอร์ที่มีอยู่)
  • sinput int _Tasks = 1; - จำนวนของพาเรลลอล-ทาสก์ที่จะดำเนินการในเวลาเดียวกัน (ใช้จำนวนที่มากกว่าจำนวนคอร์เพื่อดูประสิทธิภาพแบบขนาน)
  • input string MultiThreadedScriptPath = "Experts\MultiThreadedObjectWorker.ex5"; - ต้องระบุเส้นทางของ EA ที่ทำงาน

แต่ละพาเรลลอล-ทาสก์จะคำนวณฟังก์ชัน sqrt จำนวนมาก (เพื่อการสาธิตเท่านั้น) ซึ่งสามารถเปลี่ยนแปลงในโปรเจกต์ MQL ของคุณให้เป็นอัลกอริธึมที่ใช้เวลานานอื่น ๆ ได้

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

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

โดยใช้ไฟล์ส่วนหัว MultiThreadedObjectWorker.mqh คุณควรนำเสนอวิธีการจัดการข้อมูลระหว่าง MQL5-ลูกค้าและ EA ของคุณเอง

นี่คือตัวอย่างของบันทึกการทำงาน

การทำงานของ 4 ทาสก์บน 2 คอร์ (2 เธรดทำงานพร้อมกัน)

การทำงานของ 4 ทาสก์บน 2 คอร์ (2 เธรดทำงานพร้อมกัน)

เมื่อรัน 4 ทาสก์บน 2 คอร์ จะมี 2 เธรดทำงานพร้อมกัน ทำให้การประมวลผลรวดเร็วกว่าการทำงานบน 1 คอร์ถึงสองเท่า (เปรียบเทียบ 3354ms กับ 6240ms)

การทำงานของ 4 ทาสก์บน 1 คอร์ (เธรดเดียว - โปรแกรม MQL แบบมาตรฐาน)

การทำงานของ 4 ทาสก์บน 1 คอร์ (เธรดเดียว - โปรแกรม MQL แบบมาตรฐาน)

ยิ่งมีคอร์มาก ยิ่งทำให้เร็วขึ้น!

รายการ
ความคิดเห็น 0