MetaTrader 5 के लिए ChartObjectsCopyPaste: अपने चार्ट्स में ग्राफिकल ऑब्जेक्ट्स को कॉपी करें

Mike 2024.09.21 02:59 111 0 0
संलग्नक

क्या आपने कभी अपने चार्ट्स के बीच ग्राफिकल ऑब्जेक्ट्स को कॉपी और पेस्ट करने की जरूरत महसूस की है? यकीनन आपने। लेकिन, चौंकाने वाली बात है कि MetaTrader में ऑब्जेक्ट्स के लिए "कॉपी & पेस्ट" की सुविधा नहीं है। इसके लिए जो एकमात्र विकल्प है, वह है टेम्पलेट्स (tpl-files)। लेकिन टेम्पलेट्स चार्ट की पूरी स्थिति को स्टोर करते हैं, जिसमें इंडिकेटर्स, सेटिंग्स और बहुत सारी सहायक चीजें होती हैं, जो कि आवश्यक कॉपी करने की प्रक्रिया के लिए अप्रासंगिक हो सकती हैं।

इसीलिए मैंने यह इंडिकेटर ChartObjectsCopyPaste.mq5 विकसित किया। यह चयनित ऑब्जेक्ट्स को क्लिपबोर्ड में कॉपी करता है, जिससे उन्हें अन्य चार्ट्स पर पेस्ट किया जा सकता है। बिना किसी शर्त के।

यह इंडिकेटर एक अन्य इंडिकेटर पर आधारित है, जो अल्गोट्रेडिंग किताब में प्रकाशित है - ObjectGroupEdit.mq5

कृपया सभी अंतर्निहित क्लासेस के बारे में और जानने के लिए लिंक का अनुसरण करें (ObjectMonitor, MapArray और अन्य)।

यह इंडिकेटर बिना बफर्स के होता है। इसे कम से कम 2 चार्ट्स पर लगाना चाहिए: एक स्रोत चार्ट, जिससे आप ऑब्जेक्ट्स कॉपी करना चाहते हैं, और एक लक्ष्य चार्ट, जहाँ आप उन्हें पेस्ट करना चाहते हैं।

जब यह चार्ट पर चल रहा होता है, तो इंडिकेटर मौजूदा ग्राफिकल ऑब्जेक्ट्स को ट्रैक करता है और नोट करता है कि कौन से ऑब्जेक्ट्स चयनित हैं।

जैसा कि हमेशा होता है, "कॉपी & पेस्ट" कमांड्स जोड़ी में कार्य करते हैं:

  1. सभी चयनित ऑब्जेक्ट्स को विंडोज क्लिपबोर्ड में टेक्स्ट के रूप में कॉपी करने के लिए Ctrl+Q हॉटकी दबाएँ (आप इसे किसी भी टेक्स्ट एडिटर में सहेज और देख सकते हैं, नीचे एक उदाहरण है)।
  2. लक्ष्य चार्ट पर सभी ऑब्जेक्ट्स को क्लिपबोर्ड से पेस्ट करने के लिए Ctrl+J दबाएँ।

क्यों Ctrl+Q/Ctrl+J? ये बस 2 खाली कुंजी संयोजन हैं जो बहुत कम में से स्वेच्छा से चुने गए हैं। इसका कारण यह है कि MetaTrader कई हॉटकीज़ को इंटरसेप्ट करता है और MQL प्रोग्रामों तक नहीं पहुँचाता। खासकर, यह सामान्य Ctrl+C/Ctrl+V/Ctrl+Ins/Shift+Ins के लिए है, जो इस संदर्भ में काम नहीं करते।

चूंकि स्रोत कोड उपलब्ध है, आप हॉटकीज़ को अन्य संयोजनों में बदल सकते हैं।

चूंकि इंडिकेटर विंडोज क्लिपबोर्ड तक पहुंचने के लिए सिस्टम DLLs का उपयोग करता है, आपको Properties संवाद में DLL आयात करने की अनुमति देनी चाहिए, Dependencies टैब पर।

चूंकि कोडबेस DLL आयात की अनुमति नहीं देता है, इसलिए क्लिपबोर्ड से संबंधित कोड को शर्तीय प्रीप्रोसेसर निदेशिका #ifdef DLL_LINK में लपेटा गया है, इसलिए कृपया लाइनों को अनकमेंट करें:

#define DLL_LINK

संकलन से पहले। अन्यथा, आप देखेंगे कि क्लिपबोर्ड फ़ंक्शन स्टब्स हॉटकीज़ दबाने पर आपको अलर्ट दिखाएंगे, और कोई वास्तविक कार्रवाई नहीं की जाएगी!

इनपुट्स हैं:

  • MakeAllSelectable - सभी ऑब्जेक्ट्स को चयन योग्य बनाने का फ़्लैग (जो सामान्यतः उन ऑब्जेक्ट्स के लिए झूठा होता है जो प्रोग्रामेटिक रूप से बनाए गए हैं);
  • LogDetails - ट्रांसफर किए गए ऑब्जेक्ट्स के सभी गुणों को लॉग में आउटपुट करने का फ़्लैग;

इंडिकेटर यह जांच नहीं करता है कि पेस्ट किए गए ऑब्जेक्ट्स लक्षित चार्ट से मेल खाते हैं या नहीं, जैसे प्रतीक, मूल्य सीमा, उपविंडो की संख्या, आदि - आपको यह स्वयं करना होगा।


यहाँ 2 ऑब्जेक्ट्स के साथ क्लिपबोर्ड टेक्स्ट का एक उदाहरण है:

OBJ_VLINE       H1 वर्टिकल लाइन 5578   0       0enumENUM_OBJECT_PROPERTY_INTEGER0       OBJPROP_COLOR   552951       OBJPROP_STYLE   22       OBJPROP_WIDTH   13       OBJPROP_BACK    04       OBJPROP_SELECTED        17       OBJPROP_TYPE    08       OBJPROP_TIME    172673994010      OBJPROP_SELECTABLE      111      OBJPROP_CREATETIME      172684700912      OBJPROP_TIMEFRAMES      2097151200     OBJPROP_LEVELS  0207     OBJPROP_ZORDER  0208     OBJPROP_HIDDEN  01032    OBJPROP_RAY     1enumENUM_OBJECT_PROPERTY_DOUBLE9       OBJPROP_PRICE   1.11449enumENUM_OBJECT_PROPERTY_STRING5       OBJPROP_NAME    H1 वर्टिकल लाइन 55786       OBJPROP_TEXT    
206     OBJPROP_TOOLTIPOBJ_CHANNEL     H1 इक्वीडिस्टेंट चैनल 40885    5       1enumENUM_OBJECT_PROPERTY_INTEGER0       OBJPROP_COLOR   2551       OBJPROP_STYLE   02       OBJPROP_WIDTH   13       OBJPROP_BACK    04       OBJPROP_SELECTED        17       OBJPROP_TYPE    58       OBJPROP_TIME    17267580008       OBJPROP_TIME.1  17267976008       OBJPROP_TIME.2  172675800010      OBJPROP_SELECTABLE      111      OBJPROP_CREATETIME      172684788312      OBJPROP_TIMEFRAMES      2097151200     OBJPROP_LEVELS  0207     OBJPROP_ZORDER  0208     OBJPROP_HIDDEN  01003    OBJPROP_RAY_LEFT        01004    OBJPROP_RAY_RIGHT       01031    OBJPROP_FILL    0enumENUM_OBJECT_PROPERTY_DOUBLE9       OBJPROP_PRICE   -28.1138790035587159       OBJPROP_PRICE.1 -21.7081850533807779       OBJPROP_PRICE.2 -48.04270462633452enumENUM_OBJECT_PROPERTY_STRING5       OBJPROP_NAME    H1 इक्वीडिस्टेंट चैनल 408856       OBJPROP_TEXT    
206     OBJPROP_TOOLTIP

और यहाँ चार्ट पर पेस्ट किए गए ये ऑब्जेक्ट्स हैं:

चार्ट पर क्लिपबोर्ड के माध्यम से पेस्ट किए गए 2 ग्राफिकल ऑब्जेक्ट्स


सूची
टिप्पणी 0