अब तक औसत की लंबाई आज़माने के लिए कोड में अंक बदला। अब उसी अंक को इंडिकेटर की सेटिंग बनाएँगे। वही प्रोग्राम अलग लंबाई से चला सकेंगे।

इनपुट क्या है?

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

यहाँ नाम length और डिफ़ॉल्ट 20 है। length मूविंग एवरेज की लंबाई बनेगा। pynecore.lib से input नेमस्पेस भी चाहिए।

length: int = input.int(20, title="Average length", minval=1, maxval=200)

यह main() के पैरामीटर में जाता है। int पूर्णांक है: 1, 20 या 200 दे सकते हैं, 2.5 नहीं। input.int पूर्णांक इनपुट बताता है।

20 डिफ़ॉल्ट है, Average length इंटरफ़ेस का शीर्षक। minval और maxval न्यूनतम और अधिकतम हैं। शून्य लंबाई का औसत सार्थक नहीं, इसलिए बाहर है।

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

adjustable_average.py बनाएँ:

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


@script.indicator("Adjustable Average", overlay=True)
def main(
    length: int = input.int(20, title="Average length", minval=1, maxval=200),
):
    average = ta.sma(close, length)
    plot(average, "Average", color=color.blue, linewidth=2)

main के शुरुआती कोष्ठक के बाद पैरामीटर कई लाइनों में हैं। ): सूची बंद करके बॉडी शुरू करता है। नीचे गणना और ड्रॉइंग चार स्पेस अंदर हैं।

इनपुट लाइन के अंत का कॉमा और पैरामीटर जोड़ने देता है। एक पैरामीटर हो तब भी ठीक है। दोनों इंडेंट हिस्सों का काम अलग है: कोष्ठक में इनपुट, उसके बाद चलने वाले निर्देश।

डेमो डेटा पर चलाएँ। पहली बार नीला औसत बीस कैंडल का है।

Inputs खोलें

  1. adjustable_average.py सक्रिय हो।
  2. एडिटर के ऊपर दाईं ओर फ़ाइल टैब के पास टूलबार में गियर दबाएँ। माउस रखने पर Edit Inputs… दिखता है।
  3. खुली स्क्रीन में Average length खोजें।
  4. वैल्यू 5 करें और Save दबाएँ।

बाएँ Pyne के Scripts में adjustable_average.py पर दायाँ क्लिक करके Edit Inputs… भी चुन सकते हैं। खुले कोड के दाएँ-क्लिक मेन्यू में भी है।

adjustable_average.py के साथ Inputs खुला है, जिसमें Average length और Save हैं।
Average length को PyneIDE के Inputs में बदल सकते हैं।

Save पर PyneIDE खुले ग्राफ़ की गणना बची सेटिंग के साथ अपने आप दोबारा करता है। अपडेट होने दें: नीली लाइन अब पाँच कैंडल का औसत है।

सोर्स में डिफ़ॉल्ट 20 ही है। Inputs में बचा 5 इस प्रोजेक्ट में उसे बदलता है।

अब 50 करें और सेव करें। उसी अवधि में कीमत बदलने पर लाइन की प्रतिक्रिया मिलाएँ। केवल ग्राफ़ की दिखती अवधि बदलने से इनपुट नहीं बदलता।

सेटिंग कहाँ बचती है?

प्रोग्राम के पास उसी नाम की .toml फ़ाइल में बची सेटिंग रहती है। यहाँ adjustable_average.toml है।

TOML टेक्स्ट वाला सेटिंग फ़ॉर्मैट है। PyneIDE इसे संभालता है, इसलिए अभ्यास में Inputs इस्तेमाल करना पर्याप्त है। फ़ाइल खोलें तो लंबाई का हिस्सा ऐसा है:

[inputs.length]
value = 5

यहाँ स्क्वेयर ब्रैकेट सेटिंग समूह है। यह हिस्ट्री अध्याय की पिछली कैंडल नहीं: अलग फ़ाइल और अलग भाषा के नियम हैं।

पैरामीटर का कोड वाला नाम और स्क्रीन शीर्षक भी अलग हैं। फ़ाइल में length, स्क्रीन पर Average length है। काम में कोड का नाम मायने रखता है।

सोर्स में इनपुट का नाम बदलें तो पुराने नाम की वैल्यू नए इनपुट की नहीं बनती। Inputs फिर खोलकर जाँचें। प्रोग्राम कॉपी करते समय .toml तभी कॉपी करें जब बची सेटिंग भी रखनी हो।

डिफ़ॉल्ट और असली वैल्यू

डिफ़ॉल्ट 20 से 30 करें, लेकिन पहले पाँच सेव किया हो, तो चलने में पाँच इस्तेमाल हो सकता है। बची हुई सेटिंग को प्राथमिकता है।

नतीजे के साथ इसलिए असल इनपुट लिखें। सोर्स का डिफ़ॉल्ट अकेले सभी रन सेटिंग नहीं बताता।

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

दूसरी लंबाई जोड़ें। छोटे औसत का डिफ़ॉल्ट 5, बड़े का 20 हो। दोनों 1 से 200 के बीच हों। अलग शीर्षक से दिखाएँ।

अभ्यास का हल

main() की पैरामीटर सूची:

fast_length: int = input.int(5, title="Fast length", minval=1, maxval=200),
slow_length: int = input.int(20, title="Slow length", minval=1, maxval=200),

बॉडी:

fast_average = ta.sma(close, fast_length)
slow_average = ta.sma(close, slow_length)
plot(fast_average, "Fast average", color=color.blue, linewidth=2)
plot(slow_average, "Slow average", color=color.orange, linewidth=2)

दोनों अलग बदल सकते हैं। सीमाएँ यह तय नहीं करतीं कि तेज़ लंबाई धीमी से छोटी हो। यह संबंध अलग जाँचना है; अंतिम प्रोजेक्ट में करेंगे।

सेव होना जाँचें

लंबाई एक करें। एक-कैंडल SMA उसकी क्लोज़ है, इसलिए लाइन क्लोज़ से गुजरे। फिर बीस करें। फ़ाइल दोबारा खोलकर देखें कि बचा बीस दिख रहा है।