अब ऐसा प्रोग्राम बनाएँगे जो बढ़ती और गिरती कैंडल में फर्क करे। ओपन और क्लोज़ का संबंध जाँचकर रंग और संकेत से नतीजा दिखाएगा।

सत्य या असत्य

close > open का नतीजा True है जब क्लोज़ ओपन से बड़ी हो, वरना False। यह लॉजिकल वैल्यू है, जिसका टाइप bool है।

तुलना कोई कीमत नहीं बदलती। केवल सवाल का जवाब देती है।

चिह्नअर्थउदाहरण
>बड़ाclose > open
<छोटाclose < open
>=बड़ा या बराबरclose >= open
<=छोटा या बराबरclose <= open
==बराबरclose == open
!=बराबर नहींclose != open

= वेरिएबल को वैल्यू देता है; == दो वैल्यू मिलाता है। bullish = close > open जाँच का नतीजा bullish में रखता है।

ओपन और क्लोज़ समान हों, तो न close > open सत्य है, न close < open। पूरी निर्णय प्रक्रिया में यह भी संभालेंगे।

if, elif और else

if के बाद की शर्त तय करती है कि अंदर का हिस्सा चले:

if bullish:
    line_color = color.green
elif bearish:
    line_color = color.red
else:
    line_color = color.gray

पहले if की शर्त देखते हैं। सत्य हो तो हरा चुनते हैं और बाकी शाखाएँ छूटती हैं। असत्य हो तो elif देखते हैं। कोई पिछली शर्त सत्य न हो तो else चलता है।

हर शाखा के शीर्ष पर कोलन है। अंदर चार स्पेस और हैं। इसलिए main() में if चार स्पेस और उसके भीतर असाइनमेंट आठ स्पेस से शुरू है।

पूरा प्रोग्राम

candle_conditions.py बनाएँ:

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


@script.indicator("Candle Conditions", overlay=True)
def main():
    bullish = close > open
    bearish = close < open
    if bullish:
        line_color = color.green
    elif bearish:
        line_color = color.red
    else:
        line_color = color.gray
    plot(close, "Close", color=line_color, linewidth=2)
    plotshape(bullish, "Bullish candle", style=shape.triangleup,
              location=location.belowbar, color=color.green)

डेमो डेटा पर चलाएँ। क्लोज़ लाइन का रंग कैंडल के अनुसार बदलता है। बढ़ती कैंडल के नीचे हरा त्रिकोण आता है।

candle_conditions.py के ग्राफ़ पर बदलते रंग की क्लोज़ लाइन और हरे त्रिकोण हैं।
लॉजिकल शर्त रंग चुनती है और बढ़ती कैंडल के नीचे त्रिकोण बनाती है।

plotshape का पहला आर्ग्युमेंट बताता है कि संकेत कब आए। style उसका आकार और location कैंडल से उसकी जगह तय करता है। यहाँ चिह्नित कैंडल केवल अपनी ओपन से ऊपर बंद हुई है। संकेत खरीद का आदेश नहीं है।

पैरामीटर याद करना यहाँ भी ज़रूरी नहीं: कोड में plotshape पर माउस रखकर मदद देखें। कोड लिखते समय मदद में चरण और परिभाषा तक जाने का तरीका है।

गणना की जगह मायने रखती है

plot और plotshape हर कैंडल पर चलते हैं। हम दिखाई जाने वाली वैल्यू, रंग या शर्त बदलते हैं। इस तरह हर कैंडल का नतीजा प्रदर्शन को मिलता है।

मूविंग एवरेज के लिए भी यही क्रम है:

average = ta.sma(close, 20)
above_average = close > average

पहले हर कैंडल पर औसत निकालते हैं, फिर शर्त इस्तेमाल करती है। ta.sma को if bullish: के भीतर न रखें, वरना केवल बढ़ती कैंडल पर चलेगा।

SMA की शुरुआती वैल्यू गायब हो तो close > average सत्य संकेत नहीं देता। गायब वैल्यू पर अलग प्रतिक्रिया चाहिए तो na(average) लें। average == na सही जाँच नहीं है।

कई शर्तें जोड़ना

and दोनों तरफ सत्य होने पर सत्य है। or कम से कम एक तरफ सत्य होने पर सत्य है। not लॉजिकल वैल्यू उलटता है।

strong_bullish = close > open and close > close[1]

यह दो बातें एक साथ चाहता है: कैंडल बढ़ती हो और क्लोज़ पिछली क्लोज़ से ऊपर हो। बढ़ती कैंडल भी पिछली क्लोज़ से नीचे बंद हो सकती है, इसलिए दो अलग शर्तें हैं।

and और or शॉर्ट-सर्किट करते हैं: पहला हिस्सा नतीजा तय कर दे तो दूसरा मूल्यांकित नहीं होता। and में पहला असत्य हो तो, or में पहला सत्य हो तो ऐसा है। इसलिए स्टेट वाली गणना अलग लाइन में चलाएँ, फिर मिली लॉजिकल वैल्यू जोड़ें।

छोटे रूप में वैल्यू चुनना

दो वैल्यू में चुनाव एक एक्सप्रेशन में कर सकते हैं:

line_color = color.green if bullish else color.red

bullish सत्य हो तो हरा, वरना लाल। समान ओपन-क्लोज़ पर भी लाल मिलेगा। उसे ग्रे दिखाना हो तो तीन शाखाओं वाला निर्णय रखें।

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

गिरती कैंडल के ऊपर नीचे की ओर लाल त्रिकोण बनाएँ। हरा रहने दें। फिर दोनों संकेतों की शर्त में पिछली क्लोज़ से तुलना भी जोड़ें।

अभ्यास का हल
bullish_signal = bullish and close > close[1]
bearish_signal = bearish and close < close[1]
plotshape(bullish_signal, "Bullish signal", style=shape.triangleup,
          location=location.belowbar, color=color.green)
plotshape(bearish_signal, "Bearish signal", style=shape.triangledown,
          location=location.abovebar, color=color.red)

पुरानी हरी plotshape को इन दोनों से बदलें। रंग का चुनाव अभी भी केवल वर्तमान ओपन-क्लोज़ से है। संकेत पिछली क्लोज़ से भी तुलना करते हैं।

बिना संकेत की कैंडल खोजें

कड़ी शर्त वाले रूप में बढ़ती कैंडल खोजें जिस पर हरा संकेत नहीं है। उसकी ओपन और पिछली क्लोज़ देखें। बताएँ कि and का कौन-सा हिस्सा असफल हुआ।