ट्रेंड ट्रैकिंग ट्रेलिंग स्टॉप रणनीति एक मात्रात्मक ट्रेडिंग रणनीति है जो ट्रेंड जजमेंट इंडिकेटर और ट्रेलिंग स्टॉप तंत्र को जोड़ती है। यह रणनीति वर्तमान ट्रेंड दिशा निर्धारित करने के लिए सुपरट्रेंड इंडिकेटर का उपयोग करती है, और ट्रेलिंग स्टॉप लाइन का उपयोग वास्तविक समय में मूल्य परिवर्तनों को ट्रैक करने के लिए करती है, जिससे ट्रेंड ट्रैकिंग और जोखिम नियंत्रण प्राप्त होता है।
रणनीति पहले सुपरट्रेंड संकेतक की गणना करती है ताकि यह तय किया जा सके कि वर्तमान प्रवृत्ति ऊपर या नीचे है। सुपरट्रेंड संकेतक में एटीआर संकेतक और पिवोट बिंदु शामिल हैं ताकि प्रवृत्ति की दिशा को अधिक सटीक रूप से निर्धारित किया जा सके। यदि सुपरट्रेंड संकेतक एक अपट्रेंड का न्याय करता है, तो एक खरीद संकेत उत्पन्न होता है। यदि यह एक डाउनट्रेंड का न्याय करता है, तो एक बिक्री संकेत उत्पन्न होता है।
जब एक खरीद सिग्नल उत्पन्न होता है, तो रणनीति एक लंबी स्थिति खोलती है। साथ ही, यह वास्तविक समय में एक ट्रेलिंग स्टॉप लाइन की गणना करती है। इस स्टॉप लाइन की गणना विधि पिवोट बिंदु माइनस एटीआर संकेतक मूल्य है। जब तक वर्तमान समापन मूल्य इस स्टॉप लाइन से अधिक है, स्टॉप लाइन वास्तविक समय में ऊपर की ओर बढ़ेगी और एक उचित स्टॉप लॉस स्थिति बनाए रखेगी। यदि कीमत स्टॉप लाइन को तोड़ती है, तो स्थिति स्टॉप लॉस के साथ बंद हो जाएगी।
रणनीति में अनुचित ट्रेडिंग संकेतों को फ़िल्टर करने के लिए ADX और RSI संकेतकों को भी शामिल किया गया है। केवल जब ADX निर्धारित सीमा से अधिक होता है और RSI उचित स्तर पर होता है, तो सुपरट्रेंड संकेतक के संकेतों पर पदों को खोलने के लिए भरोसा किया जाएगा।
इस रणनीति का सबसे बड़ा लाभ यह है कि यह प्रवृत्ति की दिशा को अच्छी तरह से समझ सकता है और प्रवृत्ति ट्रैकिंग प्राप्त कर सकता है। सुपरट्रेंड संकेतक सरल चलती औसत की तुलना में अधिक सटीक है और मोड़ बिंदुओं को जल्दी से निर्धारित कर सकता है। उसी समय, ट्रेलिंग स्टॉप तंत्र लाभ को अधिकतम करने और जोखिमों को प्रभावी ढंग से नियंत्रित करने के लिए स्वचालित रूप से स्टॉप स्तरों को समायोजित कर सकता है।
इसके अतिरिक्त, एडीएक्स और आरएसआई संकेतक को फ़िल्टरिंग के लिए रणनीति में जोड़ा जाता है, जिससे बाजार की उच्च अस्थिरता की अवधि के दौरान त्रुटियों से बचा जाता है। एडीएक्स संकेतक पर्याप्त प्रवृत्ति सुनिश्चित करता है, और आरएसआई संकेतक ओवरबॉट और ओवरसोल्ड परिदृश्यों से बचता है, जिससे लाभप्रदता में सुधार होता है।
इस रणनीति का सबसे बड़ा जोखिम यह है कि प्रवृत्ति निर्णय गलत हो जाता है और सुपरट्रेंड संकेतक एक गलत संकेत जारी करता है। हालांकि सुपरट्रेंड संकेतक सरल चलती औसत से बेहतर है, यह अपरिहार्य है कि जटिल बाजार स्थितियों में गलत आकलन होगा। इस बिंदु पर, नुकसान को नियंत्रित करने के लिए स्टॉप लॉस तंत्र पर भरोसा करना आवश्यक है।
इसके अलावा, अनुचित रणनीति पैरामीटर सेटिंग्स भी जोखिम पैदा कर सकती हैं। उदाहरण के लिए, एक एटीआर पैरामीटर जो बहुत बड़ा है, अत्यधिक आक्रामक स्टॉप-लॉस लाइन समायोजन का कारण बन सकता है। एडीएक्स और आरएसआई पैरामीटर की अनुचित सेटिंग्स भी व्यापार के अवसरों को याद कर सकती हैं या गलत ट्रेडों की संभावना बढ़ा सकती हैं। इसके लिए इष्टतम मापदंडों को खोजने के लिए व्यापक ऐतिहासिक बैकटेस्टिंग की आवश्यकता होती है।
इस रणनीति को निम्नलिखित पहलुओं में और अधिक अनुकूलित किया जा सकता हैः
अन्य रुझान आकलन संकेतकों जैसे कि डीएमआई और केडीजे को सुपरट्रेंड संकेतक के साथ मिलकर एक
मशीन लर्निंग आधारित अनुकूलन पैरामीटर अनुकूलन मॉड्यूल को बढ़ाएं ताकि एटीआर पैरामीटर, एडीएक्स पैरामीटर, आरएसआई पैरामीटर आदि निश्चित मूल्यों के बजाय वास्तविक समय बाजार के अनुसार समायोजित हो सकें।
संकेत फ़िल्टरिंग के लिए आरएसआई संकेतक की जगह भावना संकेतक पेश करें। आरएसआई संकेतक जटिल बाजार स्थितियों में अच्छा प्रदर्शन नहीं करते हैं, जबकि सामाजिक भावना संकेतक बाजार उत्साह को बेहतर ढंग से निर्धारित कर सकते हैं।
स्थिति आकार प्रबंधन मॉड्यूल बढ़ाएँ। स्टॉप लाइन और वर्तमान मूल्य के बीच की दूरी के अनुसार, गतिशील रूप से स्थिति आकार को समायोजित करें। स्टॉप लाइन से जितना दूर होगा, उतना ही लाभ क्षमता में सुधार के लिए स्थिति आकार को उचित रूप से बढ़ाया जा सकता है।
ट्रेंड ट्रैकिंग ट्रेलिंग स्टॉप रणनीति व्यापक रूप से ट्रेंड विश्लेषण, ट्रेलिंग स्टॉप और मल्टी-फैक्टर फ़िल्टरिंग जैसे तरीकों का उपयोग करती है। जबकि रुझानों को कैप्चर करना, यह जोखिमों को सख्ती से नियंत्रित करता है और एक अधिक परिपक्व मात्रात्मक रणनीति है। अभी भी अधिक जटिल बाजार वातावरण के अनुकूल इसे अनुकूलित करने के लिए इस रणनीति को अनुकूलित करने के लिए बड़ी क्षमता है।
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bendre ADX Sup Trend", overlay = true) /////////////////////////// // SuperTrend + Pivot Point ////////////////////////// src = input(close, title="EMA Source") PPprd = input(defval = 2, title="Pivot Point Period") AtrFactor=input(defval = 2, title = "ATR Factor") AtrPd=input(defval = 18, title = "ATR Period") StartDate = input(timestamp("1 Dec 2022"), title="Start Date") EndDate = input(timestamp("12 Jan 2023"), title="End Date") var float ph = na var float pl = na ph := ta.pivothigh(PPprd, PPprd) pl :=ta.pivotlow(PPprd, PPprd) float center = na center := center[1] // float lastpp = ph ? ph : pl ? pl : 0.0 float lastpp = na(ph) ? na(pl) ? na : pl : ph if lastpp > 0 if na(center) center := lastpp else center := (center * 2 + lastpp) / 3 Up = center - (AtrFactor * ta.atr(AtrPd)) Dn = center + (AtrFactor * ta.atr(AtrPd)) var float TUp = na var float TDown = na Trend = 0 TUp := close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up TDown := close[1] < TDown[1] ? math.min(Dn, TDown[1]) : Dn Trend := close > TDown[1] ? 1: close < TUp[1]? -1: nz(Trend[1], 1) Trailingsl = Trend == 1 ? TUp : TDown // Lines linecolor = Trend == 1 and nz(Trend[1]) == 1 ? color.lime : Trend == -1 and nz(Trend[1]) == -1 ? color.red : na plot(Trailingsl, color = linecolor , linewidth = 2, title = "PP SuperTrend") bsignalSSPP = close > Trailingsl ssignalSSPP = close < Trailingsl /////// // ADX ////// lenADX = 14 th = 14 TrueRange = math.max(math.max(high-low, math.abs(high-nz(close[1]))), math.abs(low-nz(close[1]))) DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? math.max(high-nz(high[1]), 0): 0 DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? math.max(nz(low[1])-low, 0): 0 SmoothedTrueRange = 0.0 SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/lenADX) + TrueRange SmoothedDirectionalMovementPlus = 0.0 SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/lenADX) + DirectionalMovementPlus SmoothedDirectionalMovementMinus = 0.0 SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/lenADX) + DirectionalMovementMinus DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100 DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100 DX = math.abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100 ADX = ta.sma(DX, lenADX) ////// // MA ///// lenMA = 21 srcMA = input(close, title="Source") // offsetMA = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500) offsetMA = input(0, title="Offset") outMA = ta.sma(srcMA, lenMA) // // RSI // length = input( 14 ) overSold = input( 30 ) overBought = input( 65 ) price = close vrsi = ta.rsi(price, length) // Buy - Sell Entries buy = bsignalSSPP and outMA < close and ADX > th sell = ssignalSSPP if (buy and vrsi > overBought) // .order // Tuned version strategy.entry("Buy", strategy.long) // strategy.close("Sell", "close Sell") if (sell) and (strategy.position_size > 0) // strategy.entry("Sell", strategy.short) strategy.close("Buy", "Close Buy") // if(sell and vrsi < overSold ) // strategy.entry("Sell", strategy.short) // if(buy) and (strategy.position_size > 0) // strategy.close("Sell", "close Sell")