सुपरट्रेंड ट्रेडिंग रणनीति औसत सच्ची सीमा (एटीआर) और चलती औसत (एमए) पर आधारित एक प्रवृत्ति-अनुसरण रणनीति है। इसमें मध्यवर्ती प्रवृत्ति दिशा की पहचान करने और प्रवृत्ति परिवर्तनों के आधार पर ट्रेडिंग संकेत उत्पन्न करने के लिए प्रवृत्ति ट्रैकिंग और ब्रेकआउट ट्रेडिंग दोनों के फायदे शामिल हैं।
इस रणनीति के पीछे मुख्य विचार यह है कि जब कीमत सुपरट्रेंड चैनल के माध्यम से टूटती है, तो यह एक रुझान उलट का संकेत देती है। यह लाभ और नियंत्रण जोखिमों में लॉक करने के लिए स्टॉप लॉस और लाभ स्तर भी निर्धारित करता है।
सुपरट्रेंड की गणना में कई चरण शामिल हैंः
इस रणनीति का लाभ यह है कि यह ट्रेंड फॉलो और ट्रेंड रिवर्स तकनीक दोनों को जोड़ती है। यह प्रमुख ट्रेंड की पहचान करता है जबकि समय पर रिवर्स के अवसरों को भी पकड़ने में सक्षम होता है। इसके अलावा, स्टॉप लॉस/टेक प्रॉफिट तंत्र जोखिमों को नियंत्रित करने में मदद करता है।
सुपरट्रेंड रणनीति में निम्नलिखित ताकतें हैंः
1. मध्यवर्ती रुझान को ट्रैक करें
सुपरट्रेंड चैनल की गणना एटीआर के आधार पर की जाती है, जो प्रभावी रूप से मध्यवर्ती मूल्य उतार-चढ़ाव सीमा को दर्शाता है। यह सरल चलती औसत की तुलना में मध्यवर्ती प्रवृत्ति को बेहतर तरीके से ट्रैक करता है।
2. समय पर उलटापन का पता लगाएं
चैनल से मूल्य ब्रेकआउट तेजी से ट्रेडिंग सिग्नल उत्पन्न करते हैं ताकि समय पर प्रमुख रुझान उलटने पर कब्जा किया जा सके। इससे उचित रीपोजिशनिंग की अनुमति मिलती है ताकि अवरोधन से बचा जा सके।
3. स्टॉप लॉस और ले लाभ
यह रणनीति पूर्वनिर्धारित स्टॉप लॉस सेट करती है और जोखिम नियंत्रण के साथ स्वतः बाहर निकलने के लिए लाभ स्तर लेती है। इससे अत्यधिक स्टॉप लॉस का जोखिम काफी कम हो जाता है और बेहतर ट्रेंड फॉलो करने की अनुमति मिलती है।
4. लागू करने में आसान
यह रणनीति मुख्य रूप से एमए और एटीआर जैसे बुनियादी संकेतकों का उपयोग करती है। इससे इसे समझने और लाइव ट्रेडिंग के लिए लागू करना काफी आसान हो जाता है।
**5. उच्च पूंजी दक्षता **
मध्यवर्ती रुझानों को ट्रैक करके और व्यक्तिगत फिसलन को नियंत्रित करके, सुपरट्रेंड रणनीति समग्र उच्च पूंजी दक्षता प्रदान करती है।
सुपरट्रेंड रणनीति में कुछ संभावित कमजोरियां भी हैंः
1. बाजार में निम्न प्रदर्शन
यह रणनीति मध्यम से दीर्घकालिक ट्रेंड ट्रेडिंग पर केंद्रित है। रेंजिंग या समेकन बाजारों में, यह लापता शॉर्ट ट्रेडों की उच्च अवसर लागत के साथ कम प्रदर्शन करने की प्रवृत्ति रखता है।
2. पैरामीटर अनुकूलन के लिए संवेदनशील
एटीआर अवधि और गुणक के लिए चुने गए मानों का रणनीति के प्रदर्शन पर अपेक्षाकृत बड़ा प्रभाव पड़ता है। मापदंडों का अनुचित समायोजन ट्रेडिंग संकेतों की प्रभावशीलता को खतरे में डाल सकता है।
3. देरी की समस्याएं हो सकती हैं
सुपरट्रेंड चैनल की गणना में कुछ समस्याएं हो सकती हैं, जिससे समय से पहले संकेत उत्पन्न होता है।
4. सख्त स्टॉप लॉस प्रबंधन की आवश्यकता
चरम बाजार स्थितियों में, अनुचित रूप से बड़े स्टॉप लॉस अनुदान या अपर्याप्त जोखिम प्रबंधन से भारी नुकसान हो सकता है। लगातार लाभप्रदता के लिए स्टॉप लॉस नियमों का सख्ती से पालन करना महत्वपूर्ण है।
इस सुपरट्रेंड रणनीति को अनुकूलित करने के लिए और अधिक जगह हैः
1. कई एटीआर अवधि को मिलाएं
विभिन्न अवधियों जैसे 10 दिन और 20 दिन की अवधि में एटीआर रीडिंग को मिलाकर एक समग्र संकेतक बनाया जाता है, जो संवेदनशीलता और पिछड़े मुद्दों में सुधार करने में मदद करता है।
2. स्टॉप लॉस मॉड्यूल जोड़ें
अधिक परिष्कृत स्टॉप लॉस तंत्र जैसे ट्रिपल स्टॉप लॉस, अस्थिरता स्टॉप लॉस और अनुक्रमिक स्टॉप लॉस को जोड़ने से जोखिम नियंत्रण और ड्रॉडाउन में कमी को मजबूत किया जा सकता है।
3. पैरामीटर अनुकूलन
मात्रात्मक तरीकों के माध्यम से एटीआर अवधि, गुणक और अन्य इनपुट के लिए मूल्यों का अनुकूलन करने से रणनीति के प्रदर्शन में और वृद्धि होगी। मापदंडों को भी विभिन्न उत्पादों और बाजार व्यवस्थाओं के आधार पर गतिशील रूप से समायोजित किया जा सकता है।
4. मशीन लर्निंग मॉडल को एकीकृत करें
अंत में, मशीन लर्निंग मॉडल को एकीकृत करने से स्वचालित रुझान पहचान और सिग्नल जनरेशन का एहसास हो सकता है, जिससे व्यक्तिपरक निर्णयों पर निर्भरता कम हो सकती है और सिस्टम स्थिरता में सुधार हो सकता है।
सुपरट्रेंड ट्रेडिंग रणनीति एमए और एटीआर संकेतकों का उपयोग करके मध्यवर्ती प्रवृत्ति दिशा की पहचान करती है, और स्वचालित स्टॉप लॉस / टेक प्रॉफिट कार्यान्वयन के साथ प्रवृत्ति उलट के आसपास व्यापार प्रवेश और निकास संकेत उत्पन्न करती है। जबकि प्रमुख प्रवृत्तियों को बनाए रखते हुए, यह कुछ उलट अवसरों को भी पकड़ती है। मुख्य फायदे मध्यवर्ती प्रवृत्ति ट्रैकिंग, प्रवृत्ति उलट पहचान और स्टॉप लॉस / टेक प्रॉफिट के माध्यम से जोखिम नियंत्रण में निहित हैं।
हालांकि, अपर्याप्त रेंज-बाउंड मार्केट कैप्चर और लेगिंग समस्याओं के संबंध में कुछ कमियां भी मौजूद हैं। कंपोजिट एटीआर का उपयोग करना, स्टॉप लॉस मॉड्यूल, ट्यूनिंग मापदंडों को मजबूत करना और मशीन लर्निंग मॉडल को एकीकृत करना सहित कई आयामों में आगे के अनुकूलन का पता लगाया जा सकता है। ये सुधार सुपरट्रेंड रणनीति की स्थिरता और दक्षता में सुधार करेंगे।
/*backtest start: 2022-11-30 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Supertrend V1.0 - Buy or Sell Signal",overlay=true) Factor=input(3, minval=1,maxval = 100) Pd=input(7, minval=1,maxval = 100) //Calculating ATR atrLength = input(title="ATR Length:", defval=14, minval=1) Stop_Loss_Factor = input(1.5, minval=0,step=0.01) factor_profit = input(1.0, minval=0,step=0.01) // === INPUT BACKTEST RANGE === FromMonth = input(defval = 4, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 10, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2016, title = "From Year", minval = 2009) ToMonth = input(defval = 4, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 10, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2039, title = "To Year", minval = 2017) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" // Calculate ATR atrValue=atr(atrLength) decimals = abs(log(syminfo.mintick) / log(10)) Atr = atrValue if(decimals == 5) Atr := atrValue * 10000 if(decimals == 4) Atr := atrValue * 1000 if(decimals == 3) Atr := atrValue * 100 if(decimals == 2) Atr := atrValue * 10 //VJ2 Supertrend Up=hl2-(Factor*atr(Pd)) Dn=hl2+(Factor*atr(Pd)) TrendUp = 0.0 TrendUp:=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up TrendDown = 0.0 TrendDown:=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn Trend = 0.0 Trend := close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1) Tsl = 0.0 Tsl := Trend==1? TrendUp: TrendDown linecolor = Trend == 1 ? green : red plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend") plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0) plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0) //plot(Trend==1 and Trend[1]==-1,color = linecolor, style = circles, linewidth = 3,title="Trend") plotarrow(Trend == 1 and Trend[1] == -1 ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0) plotarrow(Trend == -1 and Trend[1] == 1 ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0) //Strategy Trend_buy = Trend == 1 Trend_buy_prev = Trend[1] == -1 algo_buy_pre = Trend_buy and Trend_buy_prev algo_buy = algo_buy_pre == 1 ? 1 : na Trend_sell= Trend == -1 Trend_sell_prev = Trend[1] == 1 algo_sell_pre = Trend_sell and Trend_sell_prev algo_sell = algo_sell_pre == 1 ? 1:na strategy.entry("Long1", strategy.long, when= window() and algo_buy==1) strategy.entry("Short1", strategy.short, when=window() and algo_sell==1) bought = strategy.position_size > strategy.position_size sold = strategy.position_size < strategy.position_size longStop = Stop_Loss_Factor * valuewhen(bought, Atr, 0) shortStop = Stop_Loss_Factor * valuewhen(sold, Atr, 0) longProfit = factor_profit * longStop shortProfit = factor_profit * shortStop if(decimals == 5) longStop := longStop *100000 longProfit := longProfit *100000 if(decimals == 4) longStop := longStop * 10000 longProfit := longProfit * 10000 if(decimals == 3) longStop := longStop * 1000 longProfit := longProfit * 1000 if(decimals == 2) longStop := longStop * 100 longProfit := longProfit *100 if(decimals == 5) shortStop := shortStop * 100000 shortProfit := shortProfit * 100000 if(decimals == 4) shortStop := shortStop * 10000 shortProfit := shortProfit * 10000 if(decimals == 3) shortStop := shortStop * 1000 shortProfit := shortProfit * 1000 if(decimals == 2) shortStop := shortStop * 100 shortProfit := shortProfit * 100 strategy.exit("Exit Long", from_entry = "Long1", loss =longStop, profit = longProfit) strategy.exit("Exit Short", from_entry = "Short1", loss =shortStop, profit = shortProfit)