कैंडल के आकार का यह इंडिकेटर आपको बाजार की गतिविधियों को समझने में मदद करेगा। इसका आकार निम्नलिखित फॉर्मूले से निकाला जाता है: "मिनूएंड" माइनस "डिडक्शन"। यहाँ "मिनूएंड" और "डिडक्शन" चार मानों में से कोई भी हो सकता है (ओपन, हाई, लो या क्लोज)।
कैंडल के आकार को दर्शाने के लिए कितनी बार दिखाई देनी चाहिए, इसे इनपुट पैरामीटर्स में सीमित किया जा सकता है (InpNumberOfBars)। यह संख्या तब भी अपरिवर्तित रहती है जब एक नया कैंडल खुलता है:
कैंडल और ग्राफिकल ऑब्जेक्ट्स का समन्वय
ग्राफिकल ऑब्जेक्ट्स का लेखा-जोखा
ऑब्जेक्ट्स के नाम m_arr_names[] ऐरे में संग्रहीत होते हैं, जिसका आकार InpNumberOfBars इनपुट के बराबर होता है। हम साधारण स्ट्रिंग वेरिएबल के बजाय ऐरे का उपयोग क्यों करते हैं? यह भविष्य के लिए एक प्रकार का आरक्षित स्थान है।
ऑब्जेक्ट नाम का निर्माण
जिस कैंडल के 'इंडेक्स' के लिए ऑब्जेक्ट का नाम बनाया जाना है, उसे निम्नलिखित फॉर्मूले द्वारा बनाया जाता है:
name[index] = m_prefix + ("high_" या "low_") + TimeToString(time[index])
जब आपको सभी ऑब्जेक्ट्स को हटाने की आवश्यकता हो
इंडिकेटर्स निम्नलिखित मामलों में लोड होते हैं:
- चार्ट से इंडिकेटर हटाने पर;
- टर्मिनल को बंद करने पर (यदि इंडिकेटर चार्ट पर चल रहा है);
- यदि इंडिकेटर इस चार्ट पर चल रहा है, तो टेम्पलेट लोड करने पर;
- जिस चार्ट पर इंडिकेटर चल रहा है, उसे बंद करने पर;
- यदि इंडिकेटर पिछले प्रोफाइल के चार्ट में चल रहा है तो प्रोफाइल बदलने पर;
- जिस चार्ट पर इंडिकेटर चल रहा है, उसके प्रतीक और/या समय-फ्रेम में बदलाव करने पर;
- इंडिकेटर के इनपुट में बदलाव करने पर।
इसलिए, हम बनाए गए ग्राफिकल ऑब्जेक्ट्स को पूरी तरह से हटा देते हैं:
- OnDeinit() में
- OnInit() में (यह सिर्फ एक मामले में, यदि कोई अज्ञात ऑब्जेक्ट्स हैं)
- OnCalculate() में, जब prev_calculated==0।
हम m_arr_names[] ऐरे को भी साफ करते हैं:
- OnCalculate() में, जब prev_calculated==0 या जब prev_calculated!=rates_total
ग्राफिकल ऑब्जेक्ट्स की संख्या को बनाए रखने के लिए:
जब एक नया कैंडल (कैंडल) आता है, तो prev_calculated!=rates_total कंडीशन सक्रिय होती है। इस स्थिति में, सभी ऑब्जेक्ट्स हटा दिए जाते हैं, और m_arr_names[] ऐरे को साफ कर दिया जाता है।