कैंडल का हाई 108 और लो 101 हो, तो अंतर 7 है। हर कैंडल पर यही कीमतों की रेंज निकालकर दिखाएँगे।

दूसरा प्रोग्राम दोनों कीमतों का मध्य निकालता है। दोनों में वेरिएबल और साधारण अंकगणित इस्तेमाल होंगे।

कैंडल क्या दर्शाती है?

कैंडल एक अवधि का डेटा समेटती है। अवधि की लंबाई टाइमफ़्रेम तय करता है। जैसे प्रति घंटे वाले डेटा में एक कैंडल एक घंटे की है।

पाँच बुनियादी डेटा हैं:

  • open: अवधि की शुरुआती कीमत;
  • high: सबसे ऊँची कीमत;
  • low: सबसे नीची कीमत;
  • close: अंतिम कीमत;
  • volume: अवधि का कारोबार, डेटा स्रोत की इकाई में।

इनके अंग्रेज़ी शुरुआती अक्षर मिलकर OHLCV बनाते हैं। पहले उदाहरणों में बंद हो चुकी कैंडल का नमूना डेटा है।

close हमेशा उसी कैंडल की अंतिम कीमत है जिसे प्रोग्राम अभी प्रोसेस करता है। अगली कैंडल पर उसकी क्लोज़ लेगा। यही बाकी डेटा पर लागू है।

रेंज निकालें

हाई 108 और लो 101 हो, तो कीमत ने 7 इकाई की रेंज तय की:

108 − 101 = 7

कोड में:

candle_range = high - low

high - low एक एक्सप्रेशन है: प्रोग्राम इसे मूल्यांकित करके नतीजा निकालता है। - घटाव है।

candle_range वेरिएबल का नाम है। = दाईं ओर के एक्सप्रेशन का नतीजा इसे देता है। इसे असाइनमेंट कहते हैं।

लाइन ऐसे पढ़ें: “high और low का अंतर निकालें और नतीजे को candle_range नाम दें।” आगे उसी नाम से वैल्यू इस्तेमाल कर सकते हैं।

समझ आने वाला नाम चुनें

candle_range बताता है कि वैल्यू कैंडल की रेंज है। x जैसा नाम कोड पढ़ने में कम मदद करता है।

किताब में छोटे अंग्रेज़ी अक्षरों के नाम और शब्दों के बीच अंडरस्कोर हैं। नाम अंक से शुरू न हो और उसमें स्पेस न हो। candle_range और Candle_range अलग नाम होंगे।

अलग पैनल वाला इंडिकेटर बनाएँ

scripts में candle_range.py बनाकर यह लिखें:

"""
@pyne edge
"""
from pynecore.lib import color, high, low, plot, script


@script.indicator("Candle Range", overlay=False)
def main():
    candle_range = high - low
    plot(candle_range, "Range", color=color.orange, linewidth=2)

main() की पहली लाइन वैल्यू निकालती है; दूसरी candle_range से उसे plot को देती है। इस्तेमाल से पहले असाइनमेंट होना चाहिए।

overlay=False अलग पैनल माँगता है। इससे रेंज अपने स्केल पर दिखती है: जैसे 7 इकाई की रेंज और 100 के पास की कीमत अलग परिमाण हैं।

सेव करके उसी डेमो डेटा पर चलाएँ।

candle_range.py के साथ कैंडल के नीचे अलग Range पैनल है।
Range लाइन अलग पैनल में high और low का अंतर दिखाती है। बड़ी वैल्यू का अर्थ कैंडल के भीतर बड़ी कीमत रेंज है।

नतीजा कैसे पढ़ें?

ऊँचे बिंदुओं का अंतर बड़ा है; नीचे के बिंदुओं का छोटा। गणना कैंडल के पूरे हाई और लो लेती है, विक सहित।

बढ़ती और गिरती कैंडल की रेंज समान हो सकती है, इसलिए इससे दिशा नहीं पता चलती। high, low से कम नहीं होता; सही डेटा पर नतीजा ऋणात्मक नहीं होगा।

अगली कैंडल पर वेरिएबल क्या करता है?

हर प्रोसेस की गई कैंडल पर ये दो चरण फिर होते हैं:

  1. उस कैंडल के high और low से candle_range निकलता है।
  2. plot उस कैंडल की जगह वैल्यू दिखाता है।

उदाहरण:

  • पहली कैंडल: high = 108, low = 101, इसलिए candle_range = 7।
  • दूसरी: high = 110, low = 106, इसलिए candle_range = 4।
  • तीसरी: high = 109, low = 103, इसलिए candle_range = 6।

ग्राफ़ पर 7, 4, 6 के तीन बिंदु बनते हैं। हर कैंडल पर वेरिएबल को वर्तमान गणना का नतीजा मिलता है।

पिछली कैंडल की वैल्यू और स्टेट बचाने को आगे सीखेंगे।

जोड़, गुणा और भाग

कोड में सरल गणना के चिह्न:

  • +: जोड़;
  • -: घटाव;
  • *: गुणा;
  • /: भाग।

गुणा और भाग, जोड़ और घटाव से पहले होते हैं। पहले क्या निकालना है, इसे कोष्ठक से बता सकते हैं।

कीमत रेंज का मध्य:

midpoint = (high + low) / 2

पहले दोनों कीमत जोड़कर दो से भाग देते हैं। high = 108 और low = 101 हो तो मध्य 104.5 है।

दशमलव में बिंदु पर ध्यान दें: कोड में 104.5 लिखते हैं। इस हिंदी संस्करण और अंग्रेज़ी स्क्रीनशॉट में भी यही दशमलव बिंदु है। कॉमा का कोड में दूसरा काम है, जैसे फ़ंक्शन के पैरामीटर अलग करना।

मध्य कीमत दिखाएँ

candle_midpoint.py बनाएँ:

"""
@pyne edge
"""
from pynecore.lib import color, high, low, plot, script


@script.indicator("Candle Midpoint", overlay=True)
def main():
    midpoint = (high + low) / 2
    plot(midpoint, "Midpoint", color=color.purple, linewidth=2)

यहाँ फिर overlay=True है। मध्य कीमत कैंडल के साथ उसी कीमत स्केल पर देखना चाहते हैं।

candle_midpoint.py के साथ ग्राफ़ पर मध्य कीमतों को जोड़ने वाली Midpoint लाइन है।
Midpoint लाइन हर कैंडल पर high और low का मध्य दिखाती है।

चलाने के बाद एक कैंडल चुनकर उस जगह लाइन का बिंदु देखें। वह विक सहित पूरी रेंज के मध्य में है। बॉडी का मध्य अलग हो सकता है, क्योंकि वह ओपन और क्लोज़ से तय होता है।

कोष्ठक क्यों ज़रूरी हैं?

ये दो एक्सप्रेशन अलग गणना बताते हैं:

(high + low) / 2
high + low / 2

दूसरी लाइन पहले केवल low को दो से भाग देती है, फिर high जोड़ती है। ऊपर के 108 और 101 से 158.5 मिलेगा। यह दोनों कीमतों का मध्य नहीं है।

दोनों सिंटैक्स के अनुसार सही हैं, फिर भी नतीजे अलग हैं। हाथ से निकलने वाले उदाहरण से जल्दी जाँच सकते हैं कि मनचाही गणना लिखी है या नहीं।

स्वयं करके देखें

कैंडल बॉडी का दिशात्मक बदलाव दिखाएँ: क्लोज़ से ओपन घटाएँ।

  1. फ़ाइल candle_change.py हो।
  2. इंडिकेटर का शीर्षक "Candle Change" हो और अलग पैनल में आए।
  3. गणना का नाम candle_change हो।
  4. ड्रॉइंग का नाम "Change" हो।

चलाने से पहले तीन मामलों का नतीजा निकालें:

  • open = 100, close = 104;
  • open = 100, close = 97;
  • open = 100, close = 100।
अभ्यास का हल

नतीजे 4, −3 और 0 हैं। धनात्मक वैल्यू ऊँची क्लोज़, ऋणात्मक नीची क्लोज़, और शून्य समान ओपन-क्लोज़ बताता है।

"""
@pyne edge
"""
from pynecore.lib import close, color, open, plot, script


@script.indicator("Candle Change", overlay=False)
def main():
    candle_change = close - open
    plot(candle_change, "Change", color=color.blue, linewidth=2)

तीनों प्रोग्राम मिलाएँ

रेंज, मध्य कीमत और बदलाव निकालने वाले प्रोग्राम क्रम से खोलें। हर एक OHLC डेटा से वेरिएबल निकालता है और अगली लाइन में दिखाता है। डेटा कैंडल-दर-कैंडल प्रोसेस होता है। फर्क गणना और overlay की सेटिंग का है।

अगले अध्याय में दो कैंडल की वैल्यू मिलाएँगे और पिछली कैंडल का डेटा लेना सीखेंगे।