यह एक ट्रैकिंग सुपरट्रेंड रणनीति है जो मुख्य रूप से एक ट्रैकिंग प्रभाव प्राप्त करने के लिए विभिन्न पैरामीटर सेटिंग्स के साथ सुपरट्रेंड संकेतकों को जोड़ती है और जोखिम नियंत्रण के लिए एक फ़िल्टर संकेतक का उपयोग करती है। रणनीति का मुख्य विचार सरल और व्यावहारिक है, समझने में आसान है, और शुरुआती लोगों के लिए सीखने के लिए उपयुक्त है।
इस रणनीति में मुख्य रूप से विभिन्न पैरामीटर सेटिंग्स के साथ सुपरट्रेंड इंडिकेटर के तीन समूह होते हैं। पहला समूह मुख्य सुपरट्रेंड इंडिकेटर है जो बाजार के रुझानों के बुनियादी निर्णय के लिए डिफ़ॉल्ट पैरामीटर का उपयोग करता है। दूसरा समूह उप सुपरट्रेंड इंडिकेटर है जो एटीआर अवधि को कम करके और एटीआर गुणक को बढ़ाकर मूल्य परिवर्तनों की अधिक संवेदनशील ट्रैकिंग प्राप्त करता है। तीसरा समूह फिल्टर सुपरट्रेंड इंडिकेटर है जो गलत ब्रेकआउट को फ़िल्टर करने के लिए एटीआर अवधि और एटीआर गुणक को उचित रूप से बढ़ाता है।
जब मुख्य सुपरट्रेंड एक खरीद संकेत जारी करता है, यदि उप सुपरट्रेंड भी एक सिंक्रनाइज़ेड संकेत जारी करता है और फ़िल्टर सुपरट्रेंड दिशा ऊपर की ओर है, तो रणनीति ट्रैकिंग खरीद लेगी। जब मुख्य सुपरट्रेंड एक बिक्री संकेत जारी करता है, यदि उप सुपरट्रेंड भी एक सिंक्रनाइज़ेड संकेत जारी करता है और फ़िल्टर सुपरट्रेंड दिशा नीचे की ओर है, तो रणनीति ट्रैकिंग बिक्री लेगी। यह लचीले उप सुपरट्रेंड संकेतक का उपयोग करते हुए मामूली समायोजनों को ट्रैक करने और समय पर प्रवेश और स्टॉप लॉस प्राप्त करने के लिए मुख्य प्रवृत्ति को पकड़ सकता है।
मुख्य जोखिम निवारण उपाय:
इस रणनीति का समग्र विचार स्पष्ट और सरल है। विभिन्न पैरामीटर सेटिंग्स के साथ सुपरट्रेंड संकेतकों के कई समूहों का समन्वय करके, यह प्रवेश और जोखिम नियंत्रण को ट्रैक करने का एहसास करता है। रणनीति संकेत अच्छे लाइव प्रदर्शन के साथ अधिक सटीक है। यह शुरुआती लोगों के लिए सीखने के लिए उपयुक्त है, और विभिन्न संकेतकों और मापदंडों के परीक्षण और अनुकूलन के लिए एक टेम्पलेट के रूप में भी इस्तेमाल किया जा सकता है। यह अनुशंसित एक सुपरट्रेंड रणनीति है।
/*backtest start: 2023-11-25 00:00:00 end: 2023-12-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Supertrend TEST 2 Strategy", overlay = true, format=format.price, precision=2) Periods = input(title="ATR Period", type=input.integer, defval=4) src = input(hl2, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=4.7) changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true) highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true) tp=close sl=close atr2 = sma(tr, Periods) atr= changeATR ? atr(Periods) : atr2 up=src-(Multiplier*atr) up1 = nz(up[1],up) up := close[1] > up1 ? max(up,up1) : up dn=src+(Multiplier*atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green ) plotshape(buySignal and showsignals ? up : na, title="Лонг", text="Лонг", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white ) dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red ) plotshape(sellSignal and showsignals ? dn : na, title="Шорт", text="Шорт", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white ) mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0) longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white sPeriods=input(title="ATR Period", type=input.integer, defval=8) sMultiplier=input(title="dop ATR Multiplier", type=input.float, step=0.1, defval=1.5) satr2 = sma(tr, sPeriods) satr= changeATR ? atr(sPeriods) : satr2 ssup=ohlc4-(sMultiplier*satr) ssup1 = nz(ssup[1],ssup) ssup := close[1] > ssup1 ? max(ssup,ssup1) : ssup sdn=ohlc4+(sMultiplier*satr) sdn1 = nz(sdn[1], sdn) sdn := close[1] < sdn1 ? min(sdn, sdn1) : sdn strend = 1 strend := nz(strend[1], strend) strend := strend == -1 and close > sdn1 ? 1 : strend == 1 and close < ssup1 ? -1 : strend sbuySignal = strend == 1 and strend[1] == -1 ssellSignal = strend == -1 and strend[1] == 1 fPeriods=input(title="ATR Period", type=input.integer, defval=10) fMultiplier=input(title="filter ATR Multiplier", type=input.float, step=0.1, defval=5) fatr2 = sma(tr, fPeriods) fatr= changeATR ? atr(fPeriods) : fatr2 fup=ohlc4-(fMultiplier*fatr) fup1 = nz(fup[1],fup) fup := close[1] > fup1 ? max(fup,fup1) : fup fdn=ohlc4+(fMultiplier*fatr) fdn1 = nz(fdn[1], fdn) fdn := close[1] < fdn1 ? min(fdn, fdn1) : fdn ftrend = 1 ftrend := nz(ftrend[1], ftrend) ftrend := ftrend == -1 and close > fdn1 ? 1 : ftrend == 1 and close < fup1 ? -1 : ftrend fbuySignal = ftrend == 1 and ftrend[1] == -1 fsellSignal = ftrend == -1 and ftrend[1] == 1 tcolor=color.new(color.gray,50) fdnPlot = plot(ftrend == 1 ? na : fdn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=tcolor) fupPlot = plot(ftrend == 1 ? fup : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=tcolor) if (strategy.position_size > 0) tp:=tp[1] sl:=up strategy.exit("Long_TP/SL","Long",limit=tp, stop=sl) if (strategy.position_size < 0) tp:=tp[1] sl:=dn strategy.exit("Short_TP/SL","Short",limit=tp, stop=sl) if ((buySignal and ftrend==1) or (sbuySignal and trend==1 and ftrend==1)) tp:=close+(close-up)*0.382 strategy.entry("Long", strategy.long, limit=tp, comment=tostring(round(tp))) if ((sellSignal and ftrend==-1) or (ssellSignal and trend==-1 and ftrend==-1)) tp:=close-(dn-close)*0.382 strategy.entry("Short", strategy.short, limit=tp, comment=tostring(round(tp)))