คัดลอกและวางวัตถุในกราฟ: ทำไมต้องใช้ ChartObjectsCopyPaste?
เคยไหมที่คุณต้องการคัดลอกและวางวัตถุกราฟิกระหว่างกราฟที่เปิดอยู่? แน่นอนว่าหลายคนต้องเคยประสบปัญหานี้! แต่เอ๊ะ! ทำไม MetaTrader ถึงไม่มีฟีเจอร์ "Copy & Paste" สำหรับวัตถุเลย? ความจริงแล้ว ฟีเจอร์ที่มีอยู่เพียงอย่างเดียวคือเทมเพลต (tpl-files) แต่เทมเพลตนั้นจะเก็บสถานะกราฟทั้งหมด รวมถึงอินดิเคเตอร์ การตั้งค่า และข้อมูลอื่น ๆ ที่อาจไม่จำเป็นสำหรับการทำสำเนาที่คุณต้องการ
ทำไมต้องใช้ ChartObjectsCopyPaste?
ด้วยเหตุนี้ ผมจึงพัฒนาอินดิเคเตอร์ ChartObjectsCopyPaste.mq5 ขึ้นมาเพื่อช่วยให้คุณสามารถคัดลอกวัตถุที่เลือกไปยังคลิปบอร์ด และจากนั้นสามารถวางลงในกราฟอื่น ๆ ได้อย่างง่ายดาย
การทำงานของอินดิเคเตอร์
อินดิเคเตอร์นี้ไม่มีบัฟเฟอร์และต้องติดตั้งในกราฟอย่างน้อย 2 ตัว: ตัวแรกคือกราฟต้นทางที่คุณต้องการคัดลอกวัตถุ และตัวที่สองคือกราฟปลายทางที่คุณต้องการวางวัตถุ
ขณะทำงานบนกราฟ อินดิเคเตอร์จะติดตามวัตถุกราฟิกที่มีอยู่ และทำการบันทึกว่าวัตถุใดที่ถูกเลือกไว้
วิธีการใช้งาน
คำสั่ง "Copy & Paste" ต้องทำงานร่วมกัน:
- กดปุ่ม Ctrl+Q เพื่อคัดลอกวัตถุที่เลือกทั้งหมดไปยังคลิปบอร์ดของ Windows (คุณสามารถบันทึกและดูได้ในโปรแกรมแก้ไขข้อความใด ๆ เช่น Notepad)
- ในกราฟปลายทาง กด Ctrl+J เพื่อวางวัตถุจากคลิปบอร์ด
ทำไมใช้ Ctrl+Q/Ctrl+J? นี่เป็นแค่การเลือกปุ่มที่ว่างจากจำนวนที่มีน้อยมาก เนื่องจาก MetaTrader จะดักจับปุ่มลัดหลาย ๆ คีย์และไม่ส่งต่อไปยังโปรแกรม MQL โดยเฉพาะ Ctrl+C/Ctrl+V/Ctrl+Ins/Shift+Ins ซึ่งใช้ไม่ได้ในบริบทนี้
การตั้งค่าต่าง ๆ
คุณสามารถเปลี่ยนปุ่มลัดได้ตามต้องการ เนื่องจากโค้ดต้นฉบับสามารถเข้าถึงได้
เนื่องจากอินดิเคเตอร์ใช้ DLL ของระบบเพื่อเข้าถึงคลิปบอร์ด Windows คุณจะต้องอนุญาตการนำเข้า DLL ในหน้าต่าง Properties ที่แท็บ Dependencies
เพราะ Codebase ไม่อนุญาตให้มีการนำเข้า DLL โค้ดที่เกี่ยวข้องกับคลิปบอร์ดจึงถูกห่อหุ้มด้วยคำสั่ง preprocessor เงื่อนไข #ifdef DLL_LINK ดังนั้นโปรดลบการคอมเมนต์บรรทัดนี้
#define DLL_LINK
ก่อนการคอมไพล์ มิฉะนั้น คุณจะเห็นว่าฟังก์ชันคลิปบอร์ดแสดงการแจ้งเตือนเมื่อกดปุ่มลัด แต่จะไม่มีการทำงานจริง!
การตั้งค่าที่สำคัญ
- MakeAllSelectable - สัญลักษณ์เพื่อทำให้วัตถุทั้งหมดสามารถเลือกได้ (โดยปกติจะเป็น false สำหรับวัตถุที่สร้างขึ้นในโปรแกรม)
- LogDetails - สัญลักษณ์เพื่อส่งออกคุณสมบัติของวัตถุที่ถูกโอนไปยัง log
อินดิเคเตอร์นี้จะไม่ตรวจสอบว่าวัตถุที่วางตรงกับกราฟปลายทางหรือไม่ เช่น สัญลักษณ์ ขอบเขตราคา จำนวนหน้าต่างย่อย ฯลฯ - คุณต้องตรวจสอบด้วยตัวเอง
ตัวอย่างการใช้งาน
นี่คือตัวอย่างข้อความในคลิปบอร์ดที่มีวัตถุ 2 ตัว:
OBJ_VLINE H1 Vertical Line 5578 0 0 enum ENUM_OBJECT_PROPERTY_INTEGER 0 OBJPROP_COLOR 55295 1 OBJPROP_STYLE 2 2 OBJPROP_WIDTH 1 3 OBJPROP_BACK 0 4 OBJPROP_SELECTED 1
และนี่คือวัตถุที่วางอยู่ในกราฟ:

โพสต์ที่เกี่ยวข้อง
- เครื่องมือ Open Range Breakout สำหรับ MetaTrader 5
- เครื่องมือ Master Tools - อินดิเคเตอร์สำหรับ MetaTrader 4
- Condition Scanner: เครื่องมือวิเคราะห์อัตโนมัติสำหรับ MetaTrader 4
- สัญญาณข้ามค่าเฉลี่ยเคลื่อนที่ครั้งเดียว - เครื่องมือช่วยเทรดใน MetaTrader 4
- FX Multi-Meter II: เครื่องมือช่วยเทรดที่ครบครันสำหรับนักลงทุน