Little Bird Trading

Pine Script FAQ: बैकटेस्ट और अलर्ट

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

यह TradingView पर लगभग हर किसी को उलझाने वाले दो Pine सवालों का सरल भाषा में FAQ है: किसी स्ट्रैटेजी का बैकटेस्ट लाइव ट्रेडिंग के अनुभव से बेहतर क्यों दिखता है, और कोई अलर्ट कभी-कभी आपकी उम्मीद से अलग पल या प्राइस पर क्यों आता है। दोनों की जड़ एक ही है, फ़ैसले के समय असल में उपलब्ध डेटा और बार्स बंद होने के बाद आपकी आँखों को दिखने वाले डेटा के बीच का बेमेल।

इंडिकेटर, स्ट्रैटेजी और अलर्ट में क्या अंतर है?

इंडिकेटर (indicator()) सिर्फ़ बनाता और गणना करता है, यह लाइनें, रंग और लेबल्स प्लॉट करता है। स्ट्रैटेजी (strategy()) ऑर्डर्स का सिमुलेशन करती है: यह strategy.entry/strategy.exit कॉल करती है, उन्हें ऐतिहासिक बार्स पर फ़िल करती है, और नेट प्रॉफ़िट, ड्रॉडाउन और विन रेट के साथ Strategy Tester रिपोर्ट बनाती है। अलर्ट एक अलग नोटिफ़िकेशन लेयर है जिसे TradingView किसी शर्त के सच होने पर भेजता है; अलर्ट खुद कोई ट्रेड नहीं करता। उलझन तब शुरू होती है जब लोग बैकटेस्ट को वादा समझते हैं, या अलर्ट को फ़िल मान लेते हैं, ये तीनों अलग-अलग काम हैं। गहरे बँटवारे के लिए इंडिकेटर बनाम स्ट्रैटेजी गाइड देखें।

मेरा बैकटेस्ट शानदार क्यों दिखता है पर लाइव नतीजे मेल क्यों नहीं खाते?

चार चीज़ें बैकटेस्ट को असलियत से बढ़ा-चढ़ाकर दिखाती हैं, और चारों ठीक की जा सकती हैं:

  • बार-क्लोज़ बनाम इंट्राबार धारणाएँ। डिफ़ॉल्ट रूप से Strategy Tester लॉजिक को बार क्लोज़ पर जाँचता है। अगर आपकी शर्त मौजूदा बार के हाई/लो या close का ऐसा इस्तेमाल करती है जो बार पूरा होने के बाद ही पता चलता, तो ऐतिहासिक फ़िल ऐसी जानकारी इस्तेमाल करता है जो लाइव ट्रेड के पास हो ही नहीं सकती थी।
  • अवास्तविक प्राइस पर डिफ़ॉल्ट फ़िल्स। टेस्टर में मार्केट ऑर्डर अगले बार की ओपनिंग पर फ़िल होता है; तेज़ ओपनिंग पर लाइव में वह प्राइस कई टिक या पॉइंट दूर हो सकता है।
  • कोई कमीशन या स्लिपेज मॉडल नहीं। अगर आप strategy() में commission_value और slippage को शून्य पर छोड़ दें, तो हर सिमुलेटेड ट्रेड बिना घर्षण का होता है। असल जैसे मान डालें, एक टिक के छोटे से हिस्से का स्लिपेज भी कई “मुनाफ़े वाले” स्कैल्पिंग सिस्टम्स को घाटे में पलट देता है। (कमीशन commission_type और commission_value से सेट होता है।)
  • बहुत छोटे नमूने। बारह ट्रेड जो सब सफल रहे, एज कहने के लिए बहुत छोटा नमूना है। किसी भी कर्व पर भरोसा करने से पहले ओवरफ़िट ट्रेडिंग सिस्टम्स को कैसे पहचानें देखें।

उदाहरण: शून्य लागत के साथ 40 ES ट्रेड्स पर +$4200 दिखाने वाला सिस्टम, $2.50 का राउंड-टर्न कमीशन और हर तरफ़ एक टिक स्लिपेज, एंट्री और एग्ज़िट, जोड़ने पर बहुत अलग दिखता है। ES पर एक टिक 0.25 पॉइंट = $12.50 है, इसलिए दो टिक $25.00 हैं; $2.50 कमीशन जोड़ें तो प्रति ट्रेड $27.50 का घर्षण बनता है। 40 ट्रेड्स पर यह लगभग $1100 है, जो दिखने वाले +$4200 को लगभग +$3100 में बदल देता है, और अगर एंट्री वोलैटाइल ओपनिंग पर इकट्ठा हों जहाँ असली स्लिपेज एक टिक से ज़्यादा होता है, तो नतीजा और बुरा।

रीपेंटिंग क्या है, और क्या इसका मतलब है कि स्क्रिप्ट ख़राब है?

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

मेरा अलर्ट देर से, अलग प्राइस पर, या दो बार क्यों आया?

  • “Once Per Bar Close” बनाम “Once Per Bar”। बनते हुए बार पर आने के लिए सेट किया गया अलर्ट उसी पल ट्रिगर हो सकता है जब कोई शर्त बार के अंदर पल भर के लिए सच हो, फिर बार कहीं और बंद होता है और अलर्ट “गलत” दिखता है। बार क्लोज़ पर आने वाला अलर्ट देर से आता है, पर वह ठीक उस पल से मेल खाता है जब एक पुष्ट स्ट्रैटेजी असल में अपना फ़ैसला लेती है (फिर स्ट्रैटेजी अगले बार की ओपनिंग पर कदम उठाती है)।
  • अलर्ट प्राइस उस पल का स्नैपशॉट है जब अलर्ट आया। आपका ब्रोकर आपको लाइव मार्केट प्राइस पर फ़िल करता है, जो अलर्ट और आपके ऑर्डर के बीच के मिलीसेकंड्स में बदल जाता है।
  • दोहरे अलर्ट का आमतौर पर मतलब है कि शर्त कई टिक्स तक सच रही और अलर्ट हर टिक पर आने के लिए सेट था, जबकि उसे हर बार में एक बार आना चाहिए था।

यह ट्रेड प्लान्स के तरीके से कैसे जुड़ता है?

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

किसी भी Pine नतीजे पर भरोसा करने से पहले व्यावहारिक चेकलिस्ट

  • लॉजिक को barstate.isconfirmed पर पक्का करें ताकि बैकटेस्ट और लाइव का फ़ैसले का पल एक ही हो।
  • जिस इंस्ट्रूमेंट में आप असल में ट्रेड करते हैं, उसके लिए strategy() में असल जैसे कमीशन और स्लिपेज सेट करें, commission_type, commission_value और slippage।
  • अलर्ट की आवृत्ति सोच-समझकर चुनें, पुष्टि के लिए बार क्लोज़, दोहराव से बचने के लिए हर बार में एक बार।
  • नतीजों को इतने ट्रेड्स पर परखें कि वे मायने रखें।
  • संदर्भ वाले ओवरले (जैसे पब्लिश हुए लेवल्स) को एग्ज़ीक्यूशन के अधिकार से अलग रखें, चार्ट फ़ैसले की जानकारी देता है; फ़ैसला आपके लिखे नियम लेते हैं।

संबंधित लेख

स्रोत

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

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