क्या आपने कभी अपने चार्ट्स के बीच ग्राफिकल ऑब्जेक्ट्स को कॉपी और पेस्ट करने की जरूरत महसूस की है? यकीनन आपने। लेकिन, चौंकाने वाली बात है कि MetaTrader में ऑब्जेक्ट्स के लिए "कॉपी & पेस्ट" की सुविधा नहीं है। इसके लिए जो एकमात्र विकल्प है, वह है टेम्पलेट्स (tpl-files)। लेकिन टेम्पलेट्स चार्ट की पूरी स्थिति को स्टोर करते हैं, जिसमें इंडिकेटर्स, सेटिंग्स और बहुत सारी सहायक चीजें होती हैं, जो कि आवश्यक कॉपी करने की प्रक्रिया के लिए अप्रासंगिक हो सकती हैं।
इसीलिए मैंने यह इंडिकेटर ChartObjectsCopyPaste.mq5 विकसित किया। यह चयनित ऑब्जेक्ट्स को क्लिपबोर्ड में कॉपी करता है, जिससे उन्हें अन्य चार्ट्स पर पेस्ट किया जा सकता है। बिना किसी शर्त के।
यह इंडिकेटर एक अन्य इंडिकेटर पर आधारित है, जो अल्गोट्रेडिंग किताब में प्रकाशित है - ObjectGroupEdit.mq5।
कृपया सभी अंतर्निहित क्लासेस के बारे में और जानने के लिए लिंक का अनुसरण करें (ObjectMonitor, MapArray और अन्य)।
यह इंडिकेटर बिना बफर्स के होता है। इसे कम से कम 2 चार्ट्स पर लगाना चाहिए: एक स्रोत चार्ट, जिससे आप ऑब्जेक्ट्स कॉपी करना चाहते हैं, और एक लक्ष्य चार्ट, जहाँ आप उन्हें पेस्ट करना चाहते हैं।
जब यह चार्ट पर चल रहा होता है, तो इंडिकेटर मौजूदा ग्राफिकल ऑब्जेक्ट्स को ट्रैक करता है और नोट करता है कि कौन से ऑब्जेक्ट्स चयनित हैं।
जैसा कि हमेशा होता है, "कॉपी & पेस्ट" कमांड्स जोड़ी में कार्य करते हैं:
- सभी चयनित ऑब्जेक्ट्स को विंडोज क्लिपबोर्ड में टेक्स्ट के रूप में कॉपी करने के लिए Ctrl+Q हॉटकी दबाएँ (आप इसे किसी भी टेक्स्ट एडिटर में सहेज और देख सकते हैं, नीचे एक उदाहरण है)।
- लक्ष्य चार्ट पर सभी ऑब्जेक्ट्स को क्लिपबोर्ड से पेस्ट करने के लिए 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 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 7 OBJPROP_TYPE 0 8 OBJPROP_TIME 1726739940 10 OBJPROP_SELECTABLE 1 11 OBJPROP_CREATETIME 1726847009 12 OBJPROP_TIMEFRAMES 2097151 200 OBJPROP_LEVELS 0 207 OBJPROP_ZORDER 0 208 OBJPROP_HIDDEN 0 1032 OBJPROP_RAY 1 enum ENUM_OBJECT_PROPERTY_DOUBLE 9 OBJPROP_PRICE 1.11449 enum ENUM_OBJECT_PROPERTY_STRING 5 OBJPROP_NAME H1 वर्टिकल लाइन 5578 6 OBJPROP_TEXT 206 OBJPROP_TOOLTIP OBJ_CHANNEL H1 इक्वीडिस्टेंट चैनल 40885 5 1 enum ENUM_OBJECT_PROPERTY_INTEGER 0 OBJPROP_COLOR 255 1 OBJPROP_STYLE 0 2 OBJPROP_WIDTH 1 3 OBJPROP_BACK 0 4 OBJPROP_SELECTED 1 7 OBJPROP_TYPE 5 8 OBJPROP_TIME 1726758000 8 OBJPROP_TIME.1 1726797600 8 OBJPROP_TIME.2 1726758000 10 OBJPROP_SELECTABLE 1 11 OBJPROP_CREATETIME 1726847883 12 OBJPROP_TIMEFRAMES 2097151 200 OBJPROP_LEVELS 0 207 OBJPROP_ZORDER 0 208 OBJPROP_HIDDEN 0 1003 OBJPROP_RAY_LEFT 0 1004 OBJPROP_RAY_RIGHT 0 1031 OBJPROP_FILL 0 enum ENUM_OBJECT_PROPERTY_DOUBLE 9 OBJPROP_PRICE -28.113879003558715 9 OBJPROP_PRICE.1 -21.708185053380777 9 OBJPROP_PRICE.2 -48.04270462633452 enum ENUM_OBJECT_PROPERTY_STRING 5 OBJPROP_NAME H1 इक्वीडिस्टेंट चैनल 40885 6 OBJPROP_TEXT 206 OBJPROP_TOOLTIP
और यहाँ चार्ट पर पेस्ट किए गए ये ऑब्जेक्ट्स हैं:
