หน้าแรก ตัวชี้วัดทางเทคนิค โพสต์

ทำความรู้จักกับ ChartObjectsCopyPaste: เครื่องมือช่วยคัดลอกวัตถุใน MetaTrader 5

ไฟล์แนบ
52263.zip (7.43 KB, ดาวน์โหลด 0 ครั้ง)

คัดลอกและวางวัตถุในกราฟ: ทำไมต้องใช้ ChartObjectsCopyPaste?

เคยไหมที่คุณต้องการคัดลอกและวางวัตถุกราฟิกระหว่างกราฟที่เปิดอยู่? แน่นอนว่าหลายคนต้องเคยประสบปัญหานี้! แต่เอ๊ะ! ทำไม MetaTrader ถึงไม่มีฟีเจอร์ "Copy & Paste" สำหรับวัตถุเลย? ความจริงแล้ว ฟีเจอร์ที่มีอยู่เพียงอย่างเดียวคือเทมเพลต (tpl-files) แต่เทมเพลตนั้นจะเก็บสถานะกราฟทั้งหมด รวมถึงอินดิเคเตอร์ การตั้งค่า และข้อมูลอื่น ๆ ที่อาจไม่จำเป็นสำหรับการทำสำเนาที่คุณต้องการ

ทำไมต้องใช้ ChartObjectsCopyPaste?

ด้วยเหตุนี้ ผมจึงพัฒนาอินดิเคเตอร์ ChartObjectsCopyPaste.mq5 ขึ้นมาเพื่อช่วยให้คุณสามารถคัดลอกวัตถุที่เลือกไปยังคลิปบอร์ด และจากนั้นสามารถวางลงในกราฟอื่น ๆ ได้อย่างง่ายดาย

การทำงานของอินดิเคเตอร์

อินดิเคเตอร์นี้ไม่มีบัฟเฟอร์และต้องติดตั้งในกราฟอย่างน้อย 2 ตัว: ตัวแรกคือกราฟต้นทางที่คุณต้องการคัดลอกวัตถุ และตัวที่สองคือกราฟปลายทางที่คุณต้องการวางวัตถุ

ขณะทำงานบนกราฟ อินดิเคเตอร์จะติดตามวัตถุกราฟิกที่มีอยู่ และทำการบันทึกว่าวัตถุใดที่ถูกเลือกไว้

วิธีการใช้งาน

คำสั่ง "Copy & Paste" ต้องทำงานร่วมกัน:

  1. กดปุ่ม Ctrl+Q เพื่อคัดลอกวัตถุที่เลือกทั้งหมดไปยังคลิปบอร์ดของ Windows (คุณสามารถบันทึกและดูได้ในโปรแกรมแก้ไขข้อความใด ๆ เช่น Notepad)
  2. ในกราฟปลายทาง กด 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

และนี่คือวัตถุที่วางอยู่ในกราฟ:

วัตถุกราฟิก 2 ตัวที่วางลงในกราฟผ่านคลิปบอร์ด

โพสต์ที่เกี่ยวข้อง

ความคิดเห็น (0)