होम तकनीकी संकेतक पोस्ट

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

संलग्नक
52263.zip (7.43 KB, डाउनलोड 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       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 

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

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


संबंधित पोस्ट

टिप्पणी (0)