आज हम बात करेंगे डोजी हंटर के बारे में, जो एक बेहतरीन संकेतक है जो आपको MetaTrader 4 पर व्यापार करने में मदद करेगा। शुरुआत में, मैंने RangeOfBars नाम का एक वेरिएबल जोड़ा है, जो आपको यह निर्दिष्ट करने की अनुमति देता है कि आप वर्तमान बार से कितने बार पीछे डोजी की तलाश करना चाहते हैं। इससे आप डबल डोजी को भी पहचान सकते हैं। यदि आप RangeOfBars को 2 या 3 पर सेट करते हैं, तो आप पहले, दूसरे या तीसरे कैंडल पोजिशन में संभावित डबल डोजी की खोज कर सकते हैं। दरअसल, आप IsDoji के लिए एक तरीका बना सकते हैं जो सिर्फ पहले कैंडल पोजिशन पर नजर रखता है और फिर एक दूसरा तरीका बना सकते हैं जो पहले और दूसरे पोजिशन पर डबल डोजी को देखता है। इस प्रकार, आप अपना कोड लिख सकते हैं कि यदि IsDoji है, तो कोई व्यापार नहीं, यदि IsDoubleDoji है, तो व्यापार करें, आदि।
डोजी रीडर 2 के लिए मूल कोडिंग ने 5 डिजिट की स्थिति को ठीक से संभाला नहीं था, लेकिन यहाँ आपको एक अधिक कुशल तरीके से इसे लिखने का तरीका मिलेगा। हो सकता है कि मेरा तरीका भी सबसे अच्छा न हो, लेकिन यह एक कदम आगे है।
मैंने ShowCandleBox को बनाए रखा, क्योंकि मुझे लगा कि यह चार्ट पर संकेतक लगाने का एक अच्छा तरीका है और यह परीक्षण में अच्छा काम किया। अतिरिक्त संकेतक अच्छे थे, लेकिन मैं इसे सरल रखना चाहता था। अतिरिक्त टेक्स्ट उपयोगकर्ता को डोजी की पहचान करने में थोड़ी शिक्षा देने में मदद करता था, लेकिन फिर से, इसे सरल रखना बेहतर था।
एक बड़ा परिवर्तन यह था कि मैंने कॉन्फ़िगरेशन मानों को doubles में बदल दिया, न कि integers में। doubles का उपयोग करके, हम 5 डिजिट की सटीकता का लाभ उठा सकते हैं और एक अधिक साफ-सुथरी डोजी प्राप्त कर सकते हैं, जैसा कि आप इसका उपयोग करते समय देखेंगे। ध्यान दें: जब आप किसी संकेतक का उपयोग कर रहे हैं जो doubles पर आधारित है, तो कभी भी integer का उपयोग न करें जब तक कि आप इसका उपयोग कुछ गिनने के लिए न कर रहे हों।
मैंने एक काउंटर रीसेट भी जोड़ा ताकि बक्से गिनने की प्रक्रिया में अनंत काल तक न जाएं। हर बार जब संकेतक प्रक्रिया करता है, तो यह वही काउंटर बढ़ाता रहता था। रीसेट को शामिल करके, हम अभी भी एक सटीक गिनती प्राप्त करते हैं, लेकिन यह हर प्रक्रिया चक्र की शुरुआत में रीसेट हो जाता है।
मैंने एक बफर और एक बफर क्लीनिंग प्रक्रिया भी जोड़ी ताकि आप कोड में 0, डिफ़ॉल्ट के रूप में और 1, यदि पाया जाए, को पास कर सकें। छोटे दायरे को बनाए रखने से हम पुराने डेटा को संसाधित करने में अतिरिक्त CPU का उपयोग नहीं करते हैं, जिसे हम रुचि नहीं रखते हैं।
यहां अपने कोड में इसे शामिल करने के लिए एक उदाहरण घोषणा है:
extern string __DOJI_HUNTER_SETTINGS = "-----"; int RangeOfBars = 3; bool ShowCandleBox=true; //false से कैंडल बॉक्स छिपाएं extern color BoxColor=MistyRose; //अपना पसंदीदा रंग जोड़ें
और यहाँ डोजी पर डेटा प्राप्त करने का एक उदाहरण कॉल है। चेतावनी, इस कॉल को अपने कोड के नए कैंडल इवेंट सेक्शन में रखें, इसे टिक इवेंट में रखने से आपको समस्याएँ हो सकती हैं:
Doji1 = iCustom(NULL, 0, "Doji_Hunter", RangeOfBars, ShowCandleBox, BoxColor, FindRegularDoji, MinLengthOfUpTail, MinLengthOfLoTail, MaxLengthOfBody, FindDragonflyDoji, MaxLengthOfUpTail1, MinLengthOfLoTail1, MaxLengthOfBody1, FindGravestoneDoji, MinLengthOfUpTail2, MaxLengthOfLoTail2, MaxLengthOfBody2, 0, 0);
उपरोक्त कोड स्निपेट पहले कैंडल स्थान का मान प्राप्त करेगा, जो या तो 0 या 1 होगा, 1 = डोजी मिली।