यह रणनीति एक निश्चित अवधि के दौरान हालिया उच्चतम और निम्नतम कीमतों की गणना करती है, वर्तमान मूल्य के साथ संयुक्त, एक गतिशील मध्य रेखा बनाने के लिए। हालिया अस्थिरता के आधार पर लाल डाउनसाइड चैनल और हरे रंग के अपसाइड चैनल तब उत्पन्न होते हैं। तीन चैनल लाइनें एक ट्रेडेबल रेंज बनाते हैं। जब कीमत चैनल की सीमाओं के करीब आती है, तो रिवर्स ऑपरेशन किए जाते हैं, जो लाभ को मध्य रेखा पर वापस लक्षित करते हैं। इस बीच, रणनीति के अंदर एक प्रवृत्ति गणना होती है ताकि प्रवृत्ति के खिलाफ ट्रेडों को फ़िल्टर किया जा सके और प्रमुख प्रवृत्ति द्वारा नष्ट होने से बचा जा सके।
यह रणनीति मुख्य रूप से लाभ कमाने के लिए बाजार के उतार-चढ़ाव पर निर्भर करती है। ट्रेंड फ़िल्टरिंग के साथ संयोजन में बैंड के साथ गतिशील रूप से मूल्य उलट बिंदुओं को कैप्चर करके, यह जोखिमों को नियंत्रित करते हुए औसत-वापसी से प्रभावी रूप से लाभ उठा सकता है। कुंजी पैरामीटर ट्यूनिंग में निहित है ताकि बैंड उत्तरदायी हों लेकिन अतिसंवेदनशील न हों। प्रवृत्ति सूचकांक को अपनी भूमिका निभाने के लिए उचित अवधि की भी आवश्यकता होती है। सैद्धांतिक अनुकूल प्रवृत्ति और स्टॉप के साथ, यह रणनीति अनुकूलन के माध्यम से सभ्य रिटर्न प्राप्त कर सकती है।
/*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(title="Strategy - Bobo PAPATR", overlay=true, default_qty_type = strategy.fixed, default_qty_value = 1, initial_capital = 10000) // === STRATEGY RELATED INPUTS AND LOGIC === len = input(24, minval=1, title="Pivot Length, defines lookback for highs and lows to make pivots") length = input(title="ATR lookback (Lower = bands more responsive to recent price action)", type=input.integer, defval=22) myatr = atr(length) dailyatr = myatr[1] atrmult = input(title="ATR multiplier (Lower = wider bands)", type=input.float, defval=3) pivot0 = (high[1] + low[1] + close[1]) / 3 // PIVOT CALC h = highest(len) h1 = dev(h, len) ? na : h hpivot = fixnan(h1) l = lowest(len) l1 = dev(l, len) ? na : l lpivot = fixnan(l1) pivot = (lpivot + hpivot + pivot0) / 3 upperband1 = (dailyatr * atrmult) + pivot lowerband1 = pivot - (dailyatr * atrmult) middleband = pivot // == TREND CALC === i1=input(2, "Momentum Period", minval=1) //Keep at 2 usually i2=input(20, "Slow Period", minval=1) i3=input(5, "Fast Period", minval=1) i4=input(3, "Smoothing Period", minval=1) i5=input(4, "Signal Period", minval=1) i6=input(50, "Extreme Value", minval=1) hiDif = high - high[1] loDif = low[1] - low uDM = hiDif > loDif and hiDif > 0 ? hiDif : 0 dDM = loDif > hiDif and loDif > 0 ? loDif : 0 ATR = rma(tr(true), i1) DIu = 100 * rma(uDM, i1) / ATR DId = 100 * rma(dDM, i1) / ATR HLM2 = DIu - DId DTI = (100 * ema(ema(ema(HLM2, i2), i3), i4)) / ema(ema(ema(abs(HLM2), i2), i3), i4) signal = ema(DTI, i5) // === RISK MANAGEMENT INPUTS === inpTakeProfit = input(defval = 0, title = "Take Profit (In Market MinTick Value)", minval = 0) inpStopLoss = input(defval = 100, title = "Stop Loss (In Market MinTick Value)", minval = 0) // === RISK MANAGEMENT VALUE PREP === // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it. useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na // === STRATEGY - LONG POSITION EXECUTION === enterLong = (((low<=lowerband1) and (close >lowerband1)) or ((open <= lowerband1) and (close > lowerband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal>signal[3]) exitLong = (high > middleband) strategy.entry(id = "Long", long = true, when = enterLong) strategy.close(id = "Long", when = exitLong) // === STRATEGY - SHORT POSITION EXECUTION === enterShort = (((high>=upperband1) and (close < upperband1)) or ((open >= upperband1) and (close < upperband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal<signal[3]) exitShort = (low < middleband) strategy.entry(id = "Short", long = false, when = enterShort) strategy.close(id = "Short", when = exitShort) // === STRATEGY RISK MANAGEMENT EXECUTION === strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss) // === CHART OVERLAY === plot(upperband1, color=#C10C00, linewidth=3) plot(lowerband1, color=#23E019, linewidth=3) plot(middleband, color=#00E2E2, linewidth=3) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)