हेलो सब लोग,
मैं सोच रहा हूं कि क्या कोई कोड गुरु मुझे इस पर सही दिशा में इंगित करने में मदद कर सकता है। मैं एक प्रोग्रामिंग पेशेवर के विपरीत हूं, लेकिन मैंने एक ट्रेडिंग पैनल पर अनगिनत घंटे बिताए हैं जो बहुत अच्छी तरह से आ रहा है, और मैं कुछ बग मार रहा हूं जिन्हें मैं समझ नहीं पा रहा हूं कि कैसे प्राप्त किया जाए। यह पोस्ट पहली बग को संबोधित करता है। लंबाई के लिए अग्रिम खेद है।
मैंने मांग पर अपने स्वयं के कस्टम UI से संकेतक जोड़ने में सक्षम करने के लिए इस थ्रेड से कोड ब्लॉक पाया और उसका उपयोग किया:
https://www.mql5.com/en/forum/73391/page3(क्रे द्वारा #27 पोस्ट करें)। स्लीप और कीबड कमांड का उपयोग करने के मामले में मुझे मामूली बदलाव करने पड़े, और आम तौर पर, यह काम कर रहा है। (ध्यान दें जैसा कि मैंने नीचे स्वीकार किया है, मैं एक हैक हूं, इसलिए यदि आपको लगता है कि इन आदेशों का मेरा उपयोग प्रकृति और गूंगा में डुप्लिकेट है, तो मुझे यकीन है कि आप सही हैं - लेकिन जब मुझे एक कॉम्बो मिला जो काम करता था तो मैं नहीं चाहता था इसके साथ खिलवाड़ करने के लिए, क्योंकि यह मेरे लिए भंगुर रहा है।)
मेरा नीचे:
डाला गया कोड #import user32.dll int GetAncestor(int, int); int RegisterWindowMessageW (स्ट्रिंग MessageName);/स्टार्ट कस्टम इंडिकेटर के लिए int PostMessageW (int hwnd, int msg, int wparam, uchar Name#91;#93;);/स्टार्ट कस्टम इंडिकेटर int FindWindowW (स्ट्रिंग lpszClass, string lpszWindow) के लिए;/स्टार्ट कस्टम इंडिकेटर के लिए/int keybd_event (int bVk, int bScan, int dwFlags, int dwExtraInfo);/स्टार्ट कस्टम इंडिकेटर के लिए #import #define VK_RETURN 13/ENTER key#import/स्टार्ट कस्टम इंडिकेटर शून्य StartCustomIndicator (int hWnd, string IndicatorName,bool AutomaticallyAcceptDefaults=true)/true = इंडिकेटर डायलॉग बॉक्स छोड़ें {स्लीप (नींद) 100); उच्च नाम 2#91;#93;; StringToCharArray(IndicatorName,name2,0,StringLen( IndicatorName)); प्रिंट (संकेतक नाम = संकेतक नाम); प्रिंट (ऐरेसाइज (नाम 2) == ऐरे साइज (नाम 2)); for (int i = 0; i lt; ArraySize(name2); i ){ Print(name2#91; i #93;= name2#91;i#93;); } int MessageNumber=RegisterWindowMessageW(MetaTrader4_I nternal_Message); नींद (100); int r=PostMessageW(hWnd,MessageNumber,15,name2); नींद (200); अगर (स्वचालित रूप से स्वीकार करें) { keybd_event (13, 0, 0, 0); int ind_settings = FindWindowW (नल, कस्टम इंडिकेटर - इंडिकेटरनाम); PostMessageW (ind_settings, 0x100, VK_RETURN, name2); keybd_event (13, 0, 0, 0); } }
शुरुआत में मुद्दा यह था कि यह विफल हो रहा था। मुझे फ़ाइल 'पथ' त्रुटि नहीं खोल सकता। यह शुरुआत में एक अवरोधक था, लेकिन फिर मुझे पता चला कि अगर मैंने अपना संकेतक फ़ाइल नाम ठीक 15 वर्णों में बनाया है, तो मुझे अनब्लॉक कर दिया गया था। यह आम तौर पर सफलतापूर्वक कई दिनों तक चला, शायद एक या दो सप्ताह तक भी। लेकिन रुक-रुक कर, मेरे पास एक मुद्दा होगा जहां मेरे संकेतक और पथ स्ट्रिंग की गलत तरीके से व्याख्या की गई थी जिसे मैं केवल PostMessageW फ़ंक्शन के रूप में निर्धारित कर सकता हूं। जब यह विफल हुआ, तो यह फ़ाइल नाम में अतिरिक्त या अन्यथा बकवास वर्णों की रिपोर्ट कर रहा था जिसे वह खोलने का प्रयास कर रहा है। तो यह कहने के बजाय 'MyIndies\MyIndicator.ex4' फ़ाइल नहीं खोल सकता, यह कहेगा कि 'MyIndies\MyIndicator?L .ex4' फ़ाइल नहीं खोल सकता। तो एक या दो सप्ताह के लिए, आमतौर पर संकेतक ठीक लोड होगा, लेकिन रुक-रुक कर मेरे संकेतक पथ और नाम की गलत व्याख्या की जाएगी। उन मामलों में (शायद जब मैंने चार्टफ्रेम बदल दिए, या अन्य टैब पर क्लिक किया, या थोड़ी देर के लिए दूर हो गया), तो मैं आमतौर पर अपने टेम्पलेट या ईए को फिर से लोड कर सकता था और वापस अच्छा हो सकता था। दिलचस्प बात यह है कि सभी मामलों में, उपरोक्त कोड ब्लॉक में मेरे प्रिंट स्टेटमेंट हमेशा सुसंगत परिणाम देते हैं। जब संकेतक को सफलतापूर्वक कहा जाता है और साथ ही जब गलत फ़ाइल नाम के कई रूपों की व्याख्या की जाती है, तो वे सुसंगत होते हैं। मैं केवल अनुमान लगा सकता हूं कि त्रुटि PostMessageW कमांड में होती है, हालांकि मैं इसे मांग पर त्रुटि को पुन: उत्पन्न करने के लिए मजबूर करने में असमर्थ था, और मुझे निश्चित रूप से पता नहीं है कि क्यों।
आखिरी या दो दिनों में, अचानक मुझे हमेशा त्रुटि संदेश मिल रहे थे। मुझे कुछ परीक्षण और त्रुटि के माध्यम से पता चला कि अगर मैंने अपने संकेतक नाम की लंबाई 15 वर्णों से घटाकर 14 कर दी है, तो मैं वापस अच्छा हो गया हूं। 15 पहले बहुत स्पष्ट रूप से जादू की संख्या थी, और अब जादू की संख्या 14 है। मुझे नहीं पता कि कोई भी संख्या एक जादुई संख्या क्यों होगी, अकेले क्यों यह एक या दो दिन पहले स्पष्ट और निश्चित रूप से बदल गया है। मैं पूरी तरह से इसमें से किसी को समझने में फंस गया हूं और यह विंडोज एपीआई सामान कैसे काम करता है, और जब मैं उचर्स के साथ काम करने की बात करता हूं तो मैं एक नोब हूं। मैंने घंटों गुगली की और इसे सुलझाने की कोशिश की लेकिन कोई सफलता नहीं मिली।
अगर कोई इसे समझा सकता है, मुझे हल करने में मदद कर सकता है, या मुझे ऐसे संसाधन की ओर भी इशारा कर सकता है जहां मैं अपनी मदद कर सकता हूं, तो मैं बहुत आभारी रहूंगा।
यदि आपने इसे अब तक पढ़ा है, तो आपका बहुत-बहुत धन्यवाद।
एफटीएन