गतिशील झुकाव डबल चलती औसत संकीर्ण बैंड सफलता मात्रात्मक व्यापार रणनीति

SMA ATR RR Elephant Bar Color Change Narrow Band Slope Angle
निर्माण तिथि: 2025-05-14 15:19:51 अंत में संशोधित करें: 2025-05-14 15:19:51
कॉपी: 0 क्लिक्स: 281
2
ध्यान केंद्रित करना
319
समर्थक

गतिशील झुकाव डबल चलती औसत संकीर्ण बैंड सफलता मात्रात्मक व्यापार रणनीति गतिशील झुकाव डबल चलती औसत संकीर्ण बैंड सफलता मात्रात्मक व्यापार रणनीति

अवलोकन

गतिशील तिरछे दोहरी चलती औसत संकीर्ण बैंड में तोड़ने की मात्रा ट्रेडिंग रणनीति एक उन्नत ट्रेडिंग प्रणाली है जो ओलिवर वेलेज़ के सिद्धांतों पर आधारित है, जिसमें तकनीकी विश्लेषण और गतिशीलता ट्रेडिंग के केंद्रीय तत्व शामिल हैं। यह रणनीति मुख्य रूप से अल्पकालिक (२० चक्र) और दीर्घकालिक (२०० चक्र) सरल चलती औसत (एसएमए) के बीच संबंधों का उपयोग करती है, कीमत की गतिशीलता, उतार-चढ़ाव और गिरावट के साथ संकीर्ण बैंड के क्षेत्र में उच्च संभावना वाले तोड़ने के व्यापार के अवसरों की तलाश करती है। इस रणनीति की मुख्य विशेषता यह है कि यह संकीर्ण बैंड के क्षेत्र के भीतर है जहां चलती औसत निकटता से संबंधित है।

रणनीति सिद्धांत

इस रणनीति का मूल सिद्धांत निम्नलिखित प्रमुख कारकों के संयोजन पर आधारित हैः

  1. दोहरी चलती औसत प्रणालीरणनीतिः 20 चक्र एसएमए और 200 चक्र एसएमए का उपयोग करके ट्रेडिंग फ्रेमवर्क बनाने के लिए। सिस्टम संभावित ट्रेडिंग सिग्नल की तलाश करता है जब दोनों औसत रेखाएं अपेक्षाकृत छोटी होती हैं (संकीर्ण-बैंड स्थिति, अंतर 1.5% से कम) ।

  2. माध्य रेखा स्लिप प्रमाणनरणनीतिः 20 चक्र एसएमए के कोण की गणना करके ((उपयोग करें उलटा-कट फ़ंक्शन गणना), यह सुनिश्चित करें कि बाजार में पर्याप्त गति है, और केवल तभी प्रवेश पर विचार करें जब कोण 30 डिग्री से अधिक हो।

  3. सिग्नल प्रकार

    • मुख्य प्रवेश संकेत ((“हाथी स्तंभ”): यह एक मजबूत मूल्य व्यवहार संकेत है, जिसमें एटीआर की 1.5 गुना से अधिक की लंबाई की मांग की जाती है, और उच्चतम बिंदु पिछले स्टैंड से ऊपर होता है ((बहुमुखी) या निम्नतम बिंदु पिछले स्टैंड से नीचे होता है ((हवाई) ।
    • द्वितीयक प्रवेश संकेत ((“रंग परिवर्तन”): यह एक पूरक संकेत है, जो तब ट्रिगर किया जाता है जब तराजू का रंग लाल से हरा हो जाता है ((बहु-सिर) या हरे से लाल हो जाता है ((खाली सिर)) ।
  4. जोखिम प्रबंधन ढांचा

    • स्टॉप लॉस सेटिंग्सः मल्टी हेड ट्रेडिंग स्टॉप लॉस सेटिंग्स हाल के निचले बिंदु पर या प्रवेश मूल्य से 2 गुना एटीआर के नीचे; खाली हेड ट्रेडिंग स्टॉप लॉस सेटिंग्स हाल के उच्च बिंदु पर या प्रवेश मूल्य से 2 गुना एटीआर के ऊपर।
    • स्क्वायर रिटर्नः 2.5R और 4.0R के रिस्क-रिटर्न अनुपात का उपयोग करके दो लक्ष्य मूल्य निर्धारित करें, जब पहला लक्ष्य मूल्य प्राप्त हो जाए, तो स्टॉप-लॉस को लाभ-हानि के संतुलन बिंदु पर ले जाएं।
    • पोजीशन मैनेजमेंटः प्रत्येक लेनदेन पर खाते की धनराशि का 10% उपयोग किया जाता है, अधिकतम दो बार ओवरले की अनुमति है।
  5. बाजार की स्थिति का आकलनरणनीति: बाजार की स्थिति को दो समान रेखाओं के बीच की दूरी की गणना करके निर्धारित करेंः

    • संकीर्ण बैंड की स्थितिः औसत दूरी 1.5% से कम है, जो कि ब्रेकआउट के अवसरों की तलाश के लिए उपयुक्त है।
    • ब्रॉडबैंड स्थितिः औसत दूरी 2% से अधिक है, यह दर्शाता है कि प्रवृत्ति स्थापित हो चुकी है और नए प्रवेश के लिए उपयुक्त नहीं है।

मल्टीहेड प्रवेश आवश्यकताएंः संकीर्ण बैंड स्थिति + प्रभावी ढलान + समापन मूल्य SMA20 से अधिक + SMA20 SMA200 से अधिक + हाथी स्तंभ आकृति खाली सिर प्रवेश की शर्तेंः संकीर्ण बैंड स्थिति + प्रभावी ढलान + समापन मूल्य SMA20 से कम + SMA20 SMA200 से कम + हाथी स्तंभ आकृति

रणनीतिक लाभ

कोड के गहन विश्लेषण के माध्यम से, इस रणनीति के निम्नलिखित उल्लेखनीय फायदे हैंः

  1. एकाधिक सत्यापन तंत्ररणनीति में कई आयामों के पुष्टिकरण कारक शामिल हैं, जैसे कि सम-रेखा संबंध, सम-रेखा झुकाव, मूल्य स्थान और विशेष गिरावट पैटर्न, जो खराब गुणवत्ता वाले संकेतों को प्रभावी ढंग से फ़िल्टर करते हैं और व्यापार की गुणवत्ता में सुधार करते हैं।

  2. बाजार की स्थिति के अनुकूल: संकीर्ण बैंड और चौड़े बैंड की स्थिति को अलग करके, रणनीति बाजार की सबसे उपयुक्त स्थितियों में अवसरों की तलाश करने में सक्षम है, जो पहले से ही विस्तारित रुझानों में उच्च और निम्न को मारने से बचती है।

  3. गतिशील जोखिम प्रबंधनएटीआर को अस्थिरता मापने के लिए एक उपकरण के रूप में उपयोग करना, यह सुनिश्चित करना कि स्टॉप-लॉस और प्रॉफिट टारगेट वर्तमान बाजार की अस्थिरता की गतिशीलता के आधार पर समायोजित किए जा सकते हैं, न कि एक निश्चित अंक का उपयोग करना।

  4. वर्गीकृत लाभ रणनीतिइस रणनीति के तहत, लाभ के कुछ हिस्सों को लाभप्रद और अंतिम लाभ के दो चरणों के साथ बंद किया जाता है, जिससे यह सुनिश्चित होता है कि लाभ के कुछ हिस्सों को अनुकूल परिस्थितियों में बंद कर दिया जाए, और सभी को जल्दी से बाहर न निकालें और एक बड़ी प्रवृत्ति को याद न करें।

  5. स्मार्ट बढ़ोतरी तंत्र: रंग परिवर्तन सिग्नल के माध्यम से बढ़त के अवसर प्रदान करें, एक ही प्रवृत्ति में अधिकतम दो पदों को बढ़ाने की अनुमति दें, पूंजी उपयोग दक्षता का अनुकूलन करें।

  6. मोबाइल रोकथामजब कीमत पहला लाभ लक्ष्य तक पहुंचती है, तो स्टॉप लॉस को स्वचालित रूप से लाभ और हानि के संतुलन बिंदु पर स्थानांतरित कर दिया जाता है, जिससे “शून्य जोखिम” व्यापार होता है, जो प्राप्त लाभ की रक्षा करता है।

  7. दृश्य सहायता: रणनीति स्पष्ट दृश्य निर्देश और टायरबोर्ड प्रदान करती है, जिससे व्यापारियों को सिग्नल और बाजार की स्थिति को समझने में मदद मिलती है, जिससे निर्णय लेने की प्रक्रिया सरल हो जाती है।

  8. मूल्य व्यवहार और तकनीकी संकेतकइसने ओलिवर वेलेज़ के मूल्य व्यवहार सिद्धांतों और पारंपरिक तकनीकी संकेतकों को एक अधिक स्थिर व्यापार प्रणाली बनाने के लिए जोड़ा।

रणनीतिक जोखिम

हालांकि, इस रणनीति के तर्कसंगत डिजाइन के बावजूद, निम्नलिखित संभावित जोखिम और चुनौतियां हैं:

  1. पैरामीटर संवेदनशीलता: रणनीति का प्रदर्शन काफी हद तक एसएमए चक्र, एटीआर की लंबाई और रिस्क-टू-रिटर्न अनुपात जैसे महत्वपूर्ण मापदंडों की सेटिंग पर निर्भर करता है। विभिन्न बाजारों और समय-सीमाओं में मापदंडों के विभिन्न संयोजनों की आवश्यकता हो सकती है, और पर्याप्त ऐतिहासिक प्रतिक्रिया और अनुकूलन की आवश्यकता हो सकती है।

  2. फ़र्ज़ी घुसपैठ का खतरासंकीर्ण क्षेत्र में ब्रेकआउट कभी-कभी झूठे होते हैं, विशेष रूप से कम अस्थिरता वाले बाजार के वातावरण में। हालांकि रणनीति का उपयोग करने के लिए “हाथी स्तंभ” की आवश्यकता होती है ताकि झूठे ब्रेकआउट को कम किया जा सके, फिर भी इसे पूरी तरह से टाला नहीं जा सकता।

  3. स्लाइड और निष्पादन जोखिम: विशेष रूप से जब अस्थिरता अधिक होती है, तो वास्तविक प्रवेश मूल्य आदर्श मूल्य से मेल नहीं खा सकता है, जिससे समग्र जोखिम-लाभ संरचना प्रभावित होती है।

  4. धन प्रबंधन की चुनौतियाँ: 10% निधि का स्थिर उपयोग और दो बार जमा करने की अनुमति, लगातार नुकसान या बाजार में भारी उतार-चढ़ाव के मामले में अत्यधिक जोखिम पैदा कर सकता है।

  5. औसत रेखा पर अत्यधिक निर्भरता: रणनीति मुख्य रूप से एसएमए पर निर्भर करती है कि रुझान की दिशा क्या है, लेकिन बीच के अस्थिर बाजारों में, औसत रेखाएं अक्सर पार हो सकती हैं, जिससे बहुत सारे झूठे संकेत पैदा होते हैं।

  6. बाज़ार में फ़िल्टर की कमीरणनीति को विभिन्न मैक्रो-मार्केट स्थितियों (उदाहरण के लिए, उच्च या कम अस्थिरता, बैल या भालू) के लिए समायोजित नहीं किया गया है, जो कुछ बाजार चरणों में खराब प्रदर्शन कर सकता है।

  7. वित्तपोषण वक्र को वापस लेना: चूंकि रणनीति ने स्थिति को बढ़ाने की अनुमति दी है, अचानक रुझान में बदलाव के कारण बड़े खातों को वापस ले लिया जा सकता है, खासकर जब दो बार स्थिति बढ़ाने के बाद बाजार में बदलाव होता है।

समाधानों में शामिल हैंः अतिरिक्त बाजार परिवेश फिल्टर जोड़ना, धन प्रबंधन अनुपात को समायोजित करना, विभिन्न बाजार स्थितियों के अनुसार गतिशील रूप से पैरामीटर को समायोजित करना, और सिग्नल की पुष्टि करने के लिए अन्य तकनीकी संकेतकों को जोड़ने पर विचार करना।

रणनीति अनुकूलन दिशा

कोड विश्लेषण के आधार पर, इस रणनीति को निम्नलिखित दिशाओं में अनुकूलित किया जा सकता हैः

  1. गतिशील संकीर्ण बैंड थ्रेशोल्ड: वर्तमान रणनीति एक निश्चित 1.5% और 2% का उपयोग करती है संकीर्ण बैंड और चौड़े बैंड के लिए निर्णायक थ्रेशोल्ड। इन थ्रेशोल्ड को ऐतिहासिक अस्थिरता की गतिशीलता के आधार पर समायोजित करने पर विचार किया जा सकता है ताकि रणनीति को विभिन्न बाजार स्थितियों के लिए बेहतर अनुकूलित किया जा सके। अनुकूलन कारणः विभिन्न बाजारों और समय-सीमाओं में अलग-अलग अस्थिरता विशेषताएं हैं और निश्चित थ्रेशोल्ड पर्याप्त लचीला नहीं हो सकते हैं।

  2. सम-रेखा प्रणाली में सुधारमध्यम-अवधि औसत जोड़ने पर विचार किया जा सकता है (जैसे 50-चक्र एसएमए) तीन-मध्यम-अवधि प्रणाली बनाने के लिए, या सूचकांक चलती औसत (ईएमए) को एसएमए की जगह लेने की कोशिश करें, मूल्य परिवर्तनों के प्रति संवेदनशीलता बढ़ाने के लिए। अनुकूलन कारणः मध्य-अवधि संदर्भ बिंदु जोड़ने से बाजार का एक अधिक व्यापक दृष्टिकोण प्रदान किया जा सकता है, और ईएमए नवीनतम मूल्य परिवर्तनों के प्रति अधिक संवेदनशील है।

  3. स्लिप गणना में सुधार: वर्तमान में, ढलान की गणना अपेक्षाकृत सरल है, और अधिक स्थिर दिशा संकेत प्राप्त करने के लिए रैखिक रिटर्न ढलान या बहु-चक्र ढलान परिवर्तन का उपयोग करने पर विचार किया जा सकता है। अनुकूलन कारणः एकल-बिंदु ढलान गणना अल्पकालिक उतार-चढ़ाव से प्रभावित होने के लिए अतिसंवेदनशील है, और सुधार के बाद दिशा निर्णय की स्थिरता में सुधार किया जा सकता है।

  4. जोड़े गए लेनदेन की पुष्टि करेंऑप्टिमाइज़ेशन कारणः ऑप्टिमाइज़ेशन कारणः ऑप्टिमाइज़ेशन मूल्य परिवर्तन की प्रभावशीलता का एक महत्वपूर्ण पुष्टिकरण कारक है, जो झूठे ब्रेकडाउन को काफी कम कर सकता है।

  5. गतिशील जोखिम-लाभ अनुपात: बाजार की अस्थिरता या एटीआर प्रतिशत के आधार पर गतिशील समायोजन जोखिम-प्रतिफल अनुपात, कम अस्थिरता वाले बाजारों में उच्च आरआर अनुपात का उपयोग करें, उच्च अस्थिरता वाले बाजारों में अधिक रूढ़िवादी सेटिंग का उपयोग करें। अनुकूलन कारणः विभिन्न अस्थिरता वाले वातावरण में लाभप्रदता की संभावना अलग-अलग होती है, गतिशील समायोजन से प्रति व्यापार अपेक्षित रिटर्न का अनुकूलन किया जा सकता है।

  6. अनुकूलित शर्तेंअनुकूलन कारणः अधिक सख्त शर्तें अतिरिक्त स्थिति की सफलता दर को बढ़ा सकती हैं और समग्र जोखिम को कम कर सकती हैं।

  7. बाजार परिवेश फ़िल्टर: मैक्रो-मार्केट परिवेश फ़िल्टर जोड़ें, जैसे कि अस्थिरता सूचक (जैसे VIX) या रुझान की ताकत सूचक, प्रतिकूल बाजार परिवेश में व्यापार को कम करने या निलंबित करने के लिए। अनुकूलन कारणः विभिन्न बाजार चरणों में रणनीति का प्रदर्शन बहुत भिन्न होता है, और परिवेश फ़िल्टर प्रतिकूल परिस्थितियों में व्यापार से बचने के लिए होता है।

  8. अनुकूली रोकथाम रणनीति: बाजार संरचना के आधार पर अनुकूलित स्टॉप-लॉस रणनीतियों का विकास करें, जैसे कि पूर्व-उच्च-नीचे, अस्थिरता प्रतिशत या मूल्य संरचना को गतिशील स्टॉप-लॉस संदर्भ बिंदु के रूप में उपयोग करना। अनुकूलन कारणः निश्चित एटीआर गुणक के स्टॉप-लॉस कभी-कभी बाजार संरचना के साथ अच्छी तरह से मेल नहीं खाते हैं, और अनुकूलन विधि वास्तविक मूल्य व्यवहार के लिए अधिक उपयुक्त हो सकती है।

संक्षेप

डायनामिक स्केलेबल डबल मूविंग एवरेज स्ट्रेट बैंड ब्रेकथ्रू क्वांटिटेटिव ट्रेडिंग रणनीति एक व्यापक ट्रेडिंग सिस्टम है जिसमें कई तकनीकी विश्लेषण तत्व शामिल हैं, जो एक अच्छी तरह से परिभाषित प्रवेश शर्तों, बहु-स्तरीय पुष्टिकरण तंत्र और एक पूर्ण जोखिम प्रबंधन ढांचे के माध्यम से व्यापारियों को बाजार में भाग लेने का एक संरचित तरीका प्रदान करते हैं। यह रणनीति SMA, ATR और मूल्य व्यवहार जैसी बुनियादी तकनीकी विश्लेषण अवधारणाओं पर आधारित है, लेकिन ओलिवर वेलेज़ की पद्धति के माध्यम से इन तत्वों को एक स्पष्ट विनियमन ट्रेडिंग सिस्टम में एकीकृत करती है।

रणनीति का मुख्य लाभ यह है कि यह चलती औसत के संकीर्ण क्षेत्र में उच्च संभावना वाले अवसरों को पहचानने में सक्षम है और “हाथी स्तंभ” और “रंग परिवर्तन” जैसे विशिष्ट मूल्य पैटर्न के माध्यम से संकेतों की प्रभावशीलता की पुष्टि करता है। साथ ही, एक अच्छी तरह से विकसित जोखिम प्रबंधन संरचना धन की सुरक्षा और मुनाफे की सुरक्षा सुनिश्चित करती है।

हालांकि, इस रणनीति को पैरामीटर संवेदनशीलता, झूठी सफलता के जोखिम और धन प्रबंधन चुनौतियों के साथ भी सामना करना पड़ता है। रणनीति की स्थिरता और अनुकूलनशीलता को आगे बढ़ाया जा सकता है, जैसे कि संकीर्ण बैंड थ्रेशोल्ड को अनुकूलित करना, औसत रेखा प्रणाली को बढ़ाना, स्लिप रेट की गणना में सुधार करना, लेनदेन की पुष्टि करना, गतिशील जोखिम रिटर्न अनुपात को लागू करना, अधिभार की शर्तों को अनुकूलित करना, बाजार की स्थिति को छानना और अनुकूली रोकथाम रणनीति विकसित करना आदि।

कुल मिलाकर, यह एक तर्कसंगत, तर्कसंगत और स्पष्ट रूप से डिज़ाइन की गई एक मात्रात्मक ट्रेडिंग रणनीति है जो कुछ ट्रेडिंग अनुभव वाले निवेशकों के लिए उपयुक्त है, विशेष रूप से उन व्यापारियों के लिए जो तकनीकी विश्लेषण और व्यवस्थित ट्रेडिंग विधियों को पसंद करते हैं। उचित पैरामीटर अनुकूलन और जोखिम प्रबंधन के साथ, इस रणनीति में विभिन्न बाजार स्थितियों में स्थिर ट्रेडिंग प्रदर्शन की क्षमता है।

रणनीति स्रोत कोड
/*backtest
start: 2024-05-13 00:00:00
end: 2025-05-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Oliver Velez Advanced Strategy v2", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, pyramiding=2, calc_on_order_fills=true, calc_on_every_tick=true)

// === INPUTS ===
smaLen1 = input.int(20, title="SMA Short")
smaLen2 = input.int(200, title="SMA Long")
atrLen = input.int(14, title="ATR Length")
rr1 = input.float(2.5, title="RR for Partial Profit", step=0.1)
rr2 = input.float(4.0, title="RR for Final Profit", step=0.1)

// === INDICATORS ===
sma20 = ta.sma(close, smaLen1)
sma200 = ta.sma(close, smaLen2)
atr = ta.atr(atrLen)
angle = math.atan(sma20 - sma20[1]) * 180 / math.pi

// === STATES ===
isNarrow = math.abs(sma20 - sma200) / sma200 < 0.015
isWide = math.abs(sma20 - sma200) / sma200 >= 0.02
validSlope = angle > 30

// === CANDLE PATTERNS ===
elephant_long = close > open and (close - open) > 1.5 * atr and high > high[1]
elephant_short = close < open and (open - close) > 1.5 * atr and low < low[1]
color_change_long = close > open and close[1] < open[1]
color_change_short = close < open and close[1] > open[1]

// === LONG ENTRY ===
long_primary = isNarrow and validSlope and close > sma20 and sma20 > sma200 and elephant_long
long_add = isNarrow and color_change_long and close > sma20
long_entry_price = close
long_stop = math.min(low, close - 2 * atr)
long_risk = long_entry_price - long_stop
long_tp1 = long_entry_price + rr1 * long_risk
long_tp2 = long_entry_price + rr2 * long_risk

// === SHORT ENTRY ===
short_primary = isNarrow and validSlope and close < sma20 and sma20 < sma200 and elephant_short
short_add = isNarrow and color_change_short and close < sma20
short_entry_price = close
short_stop = math.max(high, close + 2 * atr)
short_risk = short_stop - short_entry_price
short_tp1 = short_entry_price - rr1 * short_risk
short_tp2 = short_entry_price - rr2 * short_risk

// === LONG EXECUTION ===
if (long_primary)
    strategy.entry("Long Entry", strategy.long, comment="Elephant Bar Long")
    strategy.exit("Long TP1", from_entry="Long Entry", limit=long_tp1, stop=long_stop)
    strategy.exit("Long TP2", from_entry="Long Entry", qty_percent=50, limit=long_tp2)

if (long_add)
    strategy.entry("Long Add", strategy.long, comment="Color Change Long")
    strategy.exit("Add TP1", from_entry="Long Add", limit=long_tp1, stop=long_stop)
    strategy.exit("Add TP2", from_entry="Long Add", qty_percent=50, limit=long_tp2)

// === SHORT EXECUTION ===
if (short_primary)
    strategy.entry("Short Entry", strategy.short, comment="Elephant Bar Short")
    strategy.exit("Short TP1", from_entry="Short Entry", limit=short_tp1, stop=short_stop)
    strategy.exit("Short TP2", from_entry="Short Entry", qty_percent=50, limit=short_tp2)

if (short_add)
    strategy.entry("Short Add", strategy.short, comment="Color Change Short")
    strategy.exit("Short TP1 Add", from_entry="Short Add", limit=short_tp1, stop=short_stop)
    strategy.exit("Short TP2 Add", from_entry="Short Add", qty_percent=50, limit=short_tp2)

// === BREAKEVEN CHECK ===
var float breakeven_price = na
long_breakeven_trigger = high >= long_tp1
short_breakeven_trigger = low <= short_tp1
breakeven_price := long_breakeven_trigger or short_breakeven_trigger ? close : breakeven_price

// === ALERTS ===
alertcondition(long_primary, title="Long Elephant", message="Elephant Bar Long Entry Triggered!")
alertcondition(long_add, title="Color Change Long", message="Color Change Long Entry Triggered!")
alertcondition(long_breakeven_trigger, title="Long Breakeven", message="Move SL to Breakeven for Long")

alertcondition(short_primary, title="Short Elephant", message="Elephant Bar Short Entry Triggered!")
alertcondition(short_add, title="Color Change Short", message="Color Change Short Entry Triggered!")
alertcondition(short_breakeven_trigger, title="Short Breakeven", message="Move SL to Breakeven for Short")

// === PLOTTING ===
plot(sma20, color=color.orange, title="SMA 20")
plot(sma200, color=color.blue, title="SMA 200")
bgcolor(isNarrow ? color.new(color.green, 85) : na)
plotshape(long_primary, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, text="E")
plotshape(long_add, style=shape.circle, location=location.belowbar, color=color.lime, size=size.tiny, text="A")
plotshape(short_primary, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, text="E")
plotshape(short_add, style=shape.circle, location=location.abovebar, color=color.maroon, size=size.tiny, text="A")

// === DASHBOARD ===
var label dash = na
label.delete(dash)
dash := label.new(x=bar_index, y=high, text=
     "Oliver Velez Strategy\n" +
     "SMA 20 Slope: " + str.tostring(angle, "#.##") + "°\n" +
     "State: " + (isNarrow ? "NARROW" : "WIDE") + "\n" +
     "Last Entry: " + (long_primary ? "Long E-Bar" : long_add ? "Long Add" : short_primary ? "Short E-Bar" : short_add ? "Short Add" : "None") + "\n" +
     "Breakeven: " + (breakeven_price != na ? str.tostring(breakeven_price, "#.##") : "No"), style=label.style_label_left, color=color.new(color.black, 85), textcolor=color.white)