Pine Script: इंडिकेटर और स्ट्रैटेजी
4 मिनट में पढ़ें · अपडेट:
TradingView पर Pine Editor में इंडिकेटर और स्ट्रैटेजी एक जैसे दिखते हैं, पर दोनों के काम बुनियादी तौर पर अलग हैं। इंडिकेटर आपके चार्ट पर ड्रॉ करता है। स्ट्रैटेजी ट्रेड करने का दिखावा करती है। इन दोनों को मिला देना सबसे आम कारण है कि इतिहास पर शानदार दिखने वाली स्क्रिप्ट लाइव में बिल्कुल अलग महसूस होती है। यह गाइड इस फ़र्क को ठोस और ईमानदार रखती है, और सिर्फ़ उन हिस्सों पर ध्यान देती है जो सच में आपके नतीजे बदलते हैं।
एक लाइन का फ़र्क
Pine स्क्रिप्ट की सबसे पहली लाइन बताती है कि स्क्रिप्ट किस तरह की है। indicator() से शुरू होने वाली स्क्रिप्ट सिर्फ़ गणना और प्लॉट कर सकती है: लाइनें, रंग, लेबल, फ़िल। उसमें पोज़िशन, फ़िल प्राइस या प्रॉफ़िट की कोई धारणा नहीं होती। strategy() से शुरू होने वाली स्क्रिप्ट एक ऑर्डर-सिमुलेशन इंजन जोड़ती है: वह strategy.entry और strategy.exit जैसे फ़ंक्शन कॉल कर सकती है, और TradingView उन ऑर्डर्स को पुराने बार्स पर चलाकर Strategy Tester रिपोर्ट बनाता है: नेट प्रॉफ़िट, मैक्स ड्रॉडाउन, विन रेट, प्रॉफ़िट फ़ैक्टर, और सिमुलेटेड ट्रेड्स की सूची।
तो बँटवारा यह है: इंडिकेटर शर्तों का वर्णन करता है; स्ट्रैटेजी दावा करती है कि उन शर्तों से कितनी कमाई होती। दूसरा दावा पहले से कहीं भारी है, क्योंकि ऑर्डर सिमुलेट करते ही आप इस बारे में कई धारणाएँ अपना लेते हैं कि वे ऑर्डर कब और किस प्राइस पर फ़िल हुए।
बैकटेस्ट इंजन चुपचाप कहाँ धारणाएँ बनाता है
किसी स्ट्रैटेजी का इक्विटी कर्व उतना ही भरोसेमंद है जितनी उसके नीचे की फ़िल धारणाएँ। चार डिफ़ॉल्ट सेटिंग्स सबसे ज़्यादा नुकसान करती हैं:
- बार-क्लोज़ पर मूल्यांकन। डिफ़ॉल्ट रूप से टेस्टर आपके लॉजिक को बार बंद होने पर जाँचता है। अगर कोई शर्त उसी बार के हाई, लो या क्लोज़ का इस्तेमाल करती है, तो पुराना “फ़िल” ऐसी जानकारी इस्तेमाल कर सकता है जो लाइव ट्रेड को बार पूरा होने के बाद ही मिलती।
- अगले बार की ओपनिंग पर फ़िल। सिग्नल पर लगाया गया मार्केट ऑर्डर सिमुलेशन में अगले बार की ओपनिंग पर फ़िल होता है। तेज़ ओपनिंग पर वह छपा हुआ प्राइस आपके असली फ़िल से कई टिक या पॉइंट दूर हो सकता है।
- ज़ीरो फ़्रिक्शन। अगर
strategy()कॉल मेंकमीशनऔरस्लिपेजज़ीरो पर छोड़ दिए जाएँ, तो हर सिमुलेटेड ट्रेड मुफ़्त होता है, जबकि हर असली ट्रेड पर कमीशन और स्लिपेज लगता है। - सैंपल साइज़। टेस्टर बारह ट्रेड्स पर बना एक शानदार कर्व भी खुशी से दिखा देगा। बारह जीतें सिर्फ़ शोर हैं जिसने एज का लिबास पहन रखा है।
एक हल किया गया उदाहरण
मान लीजिए कोई स्ट्रैटेजी ES फ़्यूचर्स पर 40 ट्रेड्स में +$4200 दिखाती है और लागत ज़ीरो पर छोड़ी गई है। लगभग $5 का राउंड-टर्न कमीशन जोड़िए (रिटेल फ़्यूचर्स कमीशन ब्रोकर के हिसाब से काफ़ी बदलते हैं, इसलिए अपना कमीशन इस्तेमाल करें), साथ में हर तरफ़ एक टिक स्लिपेज। ES पर एक टिक 0.25 पॉइंट का होता है, जिसकी कीमत $12.50 है, तो हर तरफ़ एक टिक यानी $25। इस तरह प्रति ट्रेड लगभग $30 का फ़्रिक्शन बनता है, 40 ट्रेड्स में लगभग $1200, जो दिखने वाले +$4200 को घटाकर ~$3000 के आसपास ले आता है। और यह नरम अनुमान है: अगर एंट्री ज़्यादातर तेज़ ओपनिंग पर होती हैं, तो असली स्लिपेज एक टिक से ज़्यादा होता है और अंतर बढ़ता है। उसी लॉजिक के इंडिकेटर वर्ज़न में यह फ़्रिक्शन दिखता ही नहीं, क्योंकि इंडिकेटर कभी किसी फ़िल का दावा करता ही नहीं। असली एज को फ़िट किए गए एज से अलग करने के बारे में और जानने के लिए देखें ओवरफ़िट ट्रेडिंग सिस्टम कैसे पहचानें।
रीपेंटिंग का असल मतलब
“रीपेंटिंग” शब्द हर उस स्क्रिप्ट पर लगा दिया जाता है जो बाद में देखने पर रियल टाइम से अलग वैल्यू दिखाती है, पर यह लेबल अक्सर गलत जगह लगता है। ईमानदार जाँच एक सवाल है: क्या यह फ़ैसला उसी जानकारी के साथ, उसी पल, लाइव लिया जा सकता था? जो सिग्नल सिर्फ़ बार क्लोज़ पर कन्फ़र्म होता है, वह बस आपसे क्लोज़िंग का इंतज़ार करवाता है। सच में गुमराह करने वाले मामले वे हैं जहाँ सिग्नल बनते हुए बार पर प्लॉट होता है और बार पूरा होते ही बदल जाता है, या ऊँचे टाइमफ़्रेम का डेटा लुकअहेड के साथ लिया जाता है। कन्फ़र्म बार पर लॉजिक जाँचने से आपका बैकटेस्ट और लाइव अनुभव एक-दूसरे से मेल खाते हैं, चाहे आप इंडिकेटर बना रहे हों या स्ट्रैटेजी।
यह ट्रेड प्लान्स पर कैसे लागू होता है
ट्रेड प्लान्स आपको तय, पहले से प्लान किए गए लेवल्स देकर जानबूझकर रीपेंट की समस्या से बचता है। डेली लेवल्स, यानी ES, SPY, NQ और QQQ के लेवल्स, पिछली क्लोज़िंग के बाद गणना किए जाते हैं और ट्रेडिंग सेशन के दौरान नहीं हिलते। रीपेंट होने लायक कुछ है ही नहीं: हर लेवल 9:30 ET से पहले तय होता है और वहीं रहता है। MyLinedChart, जो ये लाइनें ड्रॉ करता है, एक इंडिकेटर की तरह काम करता है। वह लेवल्स प्लॉट करता है और कुछ भी सिमुलेट नहीं करता, इसलिए इन लेवल्स पर ऊपर बताई गई फ़िल या कमीशन की कोई धारणा लागू नहीं होती। अगर कोई प्रकाशित लेवल आपकी अपनी स्ट्रैटेजी से मेल नहीं खाता, तो वह मतभेद अपने आप में जानकारी है, और अक्सर सही जवाब इंतज़ार करना होता है।
किसी भी स्क्रिप्ट टाइप पर भरोसा करने से पहले एक छोटी चेकलिस्ट
- जानिए आपके हाथ में क्या है:
indicator()सिर्फ़ ड्रॉ करता है;strategy()ऑर्डर सिमुलेट करती है और Strategy Tester रिपोर्ट बनाती है। - स्ट्रैटेजी में कोई भी प्रॉफ़िट नंबर पढ़ने से पहले, जिस इंस्ट्रूमेंट को आप असल में ट्रेड करते हैं उसके लिए वास्तविक
कमीशनऔरस्लिपेजसेट करें। - लॉजिक को बंद बार्स पर कन्फ़र्म करें, ताकि इतिहास और लाइव दोनों में फ़ैसले का पल एक ही हो।
- नतीजों को इतने ट्रेड्स पर परखें कि वे मायने रखें।
- संदर्भ देने वाले ओवरले (जैसे प्रकाशित लेवल्स) को एक्ज़िक्यूशन के अधिकार से अलग रखें: चार्ट फ़ैसले की जानकारी देता है; फ़ैसला आपके लिखे हुए नियम करते हैं।
इस तरह इस्तेमाल करने पर इंडिकेटर एक लेंस है और स्ट्रैटेजी एक परिकल्पना। दोनों पर भरोसा करने से पहले उन्हें असली फ़िल्स पर परखें।
संबंधित लेख
स्रोत
- TradingView Pine Script डॉक्स: स्ट्रैटेजीज़
- TradingView Pine Script डॉक्स: रीपेंटिंग
- CFTC: ट्रेडिंग सिस्टम धोखाधड़ी चेतावनी
केवल शैक्षिक कंटेंट। यह निवेश सलाह नहीं है।
केवल शैक्षिक सामग्री। यह निवेश सलाह नहीं है।