Little
Bird
Trading

TradingView में Pine Script इंडिकेटर बनाम स्ट्रैटेजी: सिग्नल, ट्रेड स्टैट्स और स्क्रीनर

6 मिनट में पढ़ें · अपडेट:

TradingView पर Pine Editor में इंडिकेटर और स्ट्रैटेजी लगभग एक जैसे दिखते हैं। इंडिकेटर आपके चार्ट पर ड्रॉ करता है।

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

Indicator, strategy और library: हर एक किस काम की है

  • Indicator (indicator()): कैलकुलेट करता है और प्लॉट करता है। इसे लेवल्स, plotshape() से बने सिग्नल, डैशबोर्ड, मार्केट बायस और alertcondition() से बने अलर्ट के लिए इस्तेमाल करें।
  • Strategy (strategy()): indicator जो कुछ भी ड्रा कर सकता है वह सब, साथ में strategy.entry, strategy.exit और strategy.close के ज़रिए सिमुलेटेड ऑर्डर। TradingView उन ऑर्डर को चलाता है और Strategy Tester में ट्रेड के आँकड़े भर देता है।
  • Library (library()): दोबारा इस्तेमाल होने वाले फ़ंक्शन का सेट, जिसे आप पब्लिश करते हैं और फिर दूसरी स्क्रिप्ट में import करते हैं। Library को कभी अपने आप चार्ट पर नहीं जोड़ा जाता।

एक स्क्रिप्ट इन तीनों में से ठीक एक ही declare करती है, इसलिए एक स्क्रिप्ट एक साथ indicator और strategy दोनों नहीं हो सकती। आम सेटअप यह है: साझा लॉजिक के लिए एक library, चार्ट और अलर्ट के लिए एक indicator, और टेस्टिंग के लिए एक strategy।

एक लाइन का फ़र्क

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 के आसपास ले आता है। और यह नरम अनुमान है: अगर एंट्री ज़्यादातर तेज़ ओपनिंग पर होती हैं, तो असली स्लिपेज एक टिक से ज़्यादा होता है और अंतर बढ़ता है। उसी लॉजिक के इंडिकेटर वर्ज़न में यह फ़्रिक्शन दिखता ही नहीं, क्योंकि इंडिकेटर कभी किसी फ़िल का दावा करता ही नहीं। असली एज को फ़िट किए गए एज से अलग करने के बारे में और जानने के लिए देखें ओवरफ़िट ट्रेडिंग सिस्टम कैसे पहचानें।

सिग्नल: indicator में plotshape, strategy में ऑर्डर

Indicator किसी सिग्नल को plotshape() या plotchar() से मार्क करता है, यानी उस बार पर एक त्रिकोण या लेबल जहाँ आपकी शर्त सही थी। कुछ खरीदा नहीं जाता, इसलिए indicator के पास ट्रेड के आँकड़े नहीं होते। Strategy उसी शर्त को strategy.entry() से ऑर्डर में बदल देती है, और फिर Strategy Tester नेट प्रॉफ़िट, विन रेट, ड्रॉडाउन और पूरी ट्रेड लिस्ट बताता है। सिग्नल की सटीकता नापने के लिए शर्त को strategy में ले जाएँ, असली लागत जोड़ें और ट्रेड लिस्ट पढ़ें।

सिग्नल की टेस्टिंग: क्लोज़ पर बनाम बार के बीच में

डिफ़ॉल्ट रूप से strategy हर बार पर एक बार, क्लोज़ पर कैलकुलेट करती है, और मार्केट ऑर्डर अगले बार के ओपन पर फ़िल होता है। तीन सेटिंग इसे बदलती हैं:

  • process_orders_on_close = true ऑर्डर को सिग्नल वाले बार के क्लोज़ पर फ़िल करता है।
  • calc_on_every_tick = true हर लाइव टिक पर दोबारा कैलकुलेट करता है। हिस्ट्री में सिर्फ़ पूरे हो चुके बार होते हैं, इसलिए लाइव और हिस्टोरिकल नतीजे अलग हो सकते हैं।
  • use_bar_magnifier = true निचले टाइमफ़्रेम के डेटा से तय करता है कि जब स्टॉप और टारगेट दोनों एक ही बार के भीतर हों, तो बार की कौन सी कीमत पहले आई।

बार क्लोज़ पर कन्फ़र्म हुए सिग्नल बैकटेस्ट और लाइव नतीजों के बीच सबसे करीबी मेल देते हैं।

बार के भीतर के सिग्नल की अब भी अपनी जगह है। जिस ब्रेकआउट रणनीति को कीमत के किसी लेवल को पार करते ही कार्रवाई करनी हो, वह calc_on_every_tick को लाइव इस्तेमाल कर सकती है, बशर्ते आप पहले पेपर अकाउंट पर लाइव संस्करण का फॉरवर्ड टेस्ट करें, क्योंकि बैकटेस्ट नहीं दिखा सकता कि सिग्नल बार के भीतर कैसे व्यवहार करता है। इंडिकेटर के लिए अलर्ट में भी यही अंतर लागू होता है: "Once Per Bar Close" पुष्ट बार का इंतजार करता है, और "Once Per Bar" बार के भीतर शर्त पहली बार सही होते ही चल जाता है, भले ही बार बाद में उलटी दिशा में बंद हो। अलर्ट सेटिंग की और जानकारी Pine Script FAQ में है।

Pine Screener में कौन सा स्क्रिप्ट टाइप काम करता है?

Pine Screener इंडिकेटर चलाता है। किसी रणनीति के सेटअप को स्क्रीन करने के लिए शर्त को इंडिकेटर में रखें और जिस मान पर फ़िल्टर करना हो उसे प्लॉट करें।

रीपेंटिंग का असल मतलब

“रीपेंटिंग” शब्द हर उस स्क्रिप्ट पर लगा दिया जाता है जो बाद में देखने पर रियल टाइम से अलग वैल्यू दिखाती है, पर यह लेबल अक्सर गलत जगह लगता है। ईमानदार जाँच एक सवाल है: क्या यह फ़ैसला उसी जानकारी के साथ, उसी पल, लाइव लिया जा सकता था? जो सिग्नल सिर्फ़ बार क्लोज़ पर कन्फ़र्म होता है, वह बस आपसे क्लोज़िंग का इंतज़ार करवाता है। सच में गुमराह करने वाले मामले वे हैं जहाँ सिग्नल बनते हुए बार पर प्लॉट होता है और बार पूरा होते ही बदल जाता है, या ऊँचे टाइमफ़्रेम का डेटा लुकअहेड के साथ लिया जाता है। कन्फ़र्म बार पर लॉजिक जाँचने से आपका बैकटेस्ट और लाइव अनुभव एक-दूसरे से मेल खाते हैं, चाहे आप इंडिकेटर बना रहे हों या स्ट्रैटेजी।

यह ट्रेड प्लान्स पर कैसे लागू होता है

ट्रेड प्लान्स आपको तय, पहले से प्लान किए गए लेवल्स देकर जानबूझकर रीपेंट की समस्या से बचता है। डेली लेवल्स, यानी ES, SPY, NQ और QQQ के लेवल्स, पिछली क्लोज़िंग के बाद गणना किए जाते हैं और ट्रेडिंग सेशन के दौरान नहीं हिलते। रीपेंट होने लायक कुछ है ही नहीं: हर लेवल 9:30 ET से पहले तय होता है और वहीं रहता है। MyLinedChart, जो ये लाइनें ड्रॉ करता है, एक इंडिकेटर की तरह काम करता है। वह लेवल्स प्लॉट करता है और कुछ भी सिमुलेट नहीं करता, इसलिए इन लेवल्स पर ऊपर बताई गई फ़िल या कमीशन की कोई धारणा लागू नहीं होती। अगर कोई प्रकाशित लेवल आपकी अपनी स्ट्रैटेजी से मेल नहीं खाता, तो वह मतभेद अपने आप में जानकारी है, और अक्सर सही जवाब इंतज़ार करना होता है।

अपने लेवल्स से strategy बनाना

ज्यादातर रणनीतियां उन कीमतों के आसपास ट्रेड करती हैं जिन्हें ट्रेडर पहले ही हाथ से खींच चुका होता है: सपोर्ट, रेजिस्टेंस, पिवट। MyLinedChart आपके चार्ट की हर लाइन, लेवल, नोट और इंडिकेटर को JSON, CSV या XLSX के रूप में एक्सपोर्ट करता है। वह फ़ाइल ChatGPT, Claude या अपने कोड को दें और ऐसी Pine Script रणनीति मांगें जो ठीक उन्हीं कीमतों पर ट्रेड करे। रणनीति में एंट्री और एग्जिट कैसे होंगे, यह आप और आपका AI तय करते हैं।

किसी भी स्क्रिप्ट टाइप पर भरोसा करने से पहले एक छोटी चेकलिस्ट

  • जानिए आपके हाथ में क्या है: indicator() सिर्फ़ ड्रॉ करता है; strategy() ऑर्डर सिमुलेट करती है और Strategy Tester रिपोर्ट बनाती है।
  • स्ट्रैटेजी में कोई भी प्रॉफ़िट नंबर पढ़ने से पहले, जिस इंस्ट्रूमेंट को आप असल में ट्रेड करते हैं उसके लिए वास्तविक कमीशन और स्लिपेज सेट करें।
  • लॉजिक को बंद बार्स पर कन्फ़र्म करें, ताकि इतिहास और लाइव दोनों में फ़ैसले का पल एक ही हो।
  • नतीजों को इतने ट्रेड्स पर परखें कि वे मायने रखें।
  • संदर्भ देने वाले ओवरले (जैसे प्रकाशित लेवल्स) को एक्ज़िक्यूशन के अधिकार से अलग रखें: चार्ट फ़ैसले की जानकारी देता है; फ़ैसला आपके लिखे हुए नियम करते हैं।

इस तरह इस्तेमाल करने पर इंडिकेटर एक लेंस है और स्ट्रैटेजी एक परिकल्पना। दोनों पर भरोसा करने से पहले उन्हें असली फ़िल्स पर परखें।

संबंधित लेख

स्रोत

केवल शैक्षिक कंटेंट। यह निवेश सलाह नहीं है।

केवल शैक्षिक सामग्री। यह निवेश सलाह नहीं है।