এই কৌশলটি মূল্যের সুইং উচ্চ এবং নিম্ন চিহ্নিত করতে পিভট পয়েন্ট (পিভটহাই এবং পিভটলো) ব্যবহার করে এবং এই পয়েন্টগুলির উপর ভিত্তি করে উপরের এবং নীচের প্রবণতা লাইন আঁকে। প্রবণতা লাইনগুলির ঢালটি এটিআর (গড় সত্য পরিসীমা), স্ট্যান্ডার্ড বিচ্যুতি বা রৈখিক রিগ্রেশন যেমন পদ্ধতিগুলি ব্যবহার করে গণনা করা হয় এবং তারপরে একটি ঢাল ফ্যাক্টর দ্বারা সামঞ্জস্য করা হয়। যখন মূল্য একটি প্রবণতা লাইনটি ভেঙে যায়, তখন কৌশলটি একটি ক্রয় বা বিক্রয় সংকেত উত্পন্ন করে।
এই কৌশলটি একটি রিয়েল-টাইম ট্রেন্ডলাইন ট্রেডিং সিস্টেম তৈরির জন্য পিভট পয়েন্ট এবং ট্রেন্ডলাইন ঢাল ব্যবহার করে। ট্রেন্ডলাইন ব্রেকআউট ইভেন্টগুলি ক্যাপচার করে, কৌশলটি ট্রেন্ড গঠনের প্রাথমিক পর্যায়ে বাণিজ্য করতে পারে। যদিও কৌশলটির কিছু সুবিধা রয়েছে, তবুও অস্থির বাজারে এর ঝুঁকি সম্পর্কে সচেতন হওয়া এবং আরও তথ্য প্রবর্তন, সংকেত ফিল্টারিং, অবস্থান পরিচালনা এবং অন্যান্য পদ্ধতির মাধ্যমে কৌশলটির দৃust়তা এবং লাভজনকতা আরও বাড়ানো প্রয়োজন।
/*backtest start: 2023-04-20 00:00:00 end: 2024-04-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(" only Ajay ", overlay=true) //------------------------------------------------------------------------------ //Settings //------------------------------------------------------------------------------{ length = input.int(14, 'Swing Detection Lookback') mult = input.float(1., 'Slope', minval = 0, step = .1) calcMethod = input.string('Atr', 'Slope Calculation Method', options = ['Atr','Stdev','Linreg']) backpaint = input(true, tooltip = 'Backpainting offset displayed elements in the past. Disable backpainting to see real time information returned by the indicator.') //Style upCss = input.color(color.teal, 'Up Trendline Color', group = 'Style') dnCss = input.color(color.red, 'Down Trendline Color', group = 'Style') showExt = input(true, 'Show Extended Lines') //------------------------------------------------------------------------------} //Calculations //------------------------------------------------------------------------------{ var upper = 0. var lower = 0. var slope_ph = 0. var slope_pl = 0. var offset = backpaint ? length : 0 n = bar_index src = close ph = ta.pivothigh(length, length) pl = ta.pivotlow(length, length) //Slope Calculation Method slope = switch calcMethod 'Atr' => ta.atr(length) / length * mult 'Stdev' => ta.stdev(src,length) / length * mult 'Linreg' => math.abs(ta.sma(src * n, length) - ta.sma(src, length) * ta.sma(n, length)) / ta.variance(n, length) / 2 * mult //Get slopes and calculate trendlines slope_ph := ph ? slope : slope_ph slope_pl := pl ? slope : slope_pl upper := ph ? ph : upper - slope_ph lower := pl ? pl : lower + slope_pl var upos = 0 var dnos = 0 upos := ph ? 0 : close > upper - slope_ph * length ? 1 : upos dnos := pl ? 0 : close < lower + slope_pl * length ? 1 : dnos //------------------------------------------------------------------------------} //Extended Lines //------------------------------------------------------------------------------{ // var uptl = line.new(na,na,na,na, color = upCss, style = line.style_dashed, extend = extend.right) // var dntl = line.new(na,na,na,na, color = dnCss, style = line.style_dashed, extend = extend.right) // if ph and showExt // uptl.set_xy1(n-offset, backpaint ? ph : upper - slope_ph * length) // uptl.set_xy2(n-offset+1, backpaint ? ph - slope : upper - slope_ph * (length+1)) // if pl and showExt // dntl.set_xy1(n-offset, backpaint ? pl : lower + slope_pl * length) // dntl.set_xy2(n-offset+1, backpaint ? pl + slope : lower + slope_pl * (length+1)) //------------------------------------------------------------------------------} //Plots //------------------------------------------------------------------------------{ plot(backpaint ? upper : upper - slope_ph * length, 'Upper', color = ph ? na : upCss, offset = -offset) plot(backpaint ? lower : lower + slope_pl * length, 'Lower', color = pl ? na : dnCss, offset = -offset) //Breakouts upBreakout = upos > upos[1] dnBreakout = dnos > dnos[1] if (upBreakout) strategy.entry("Up Breakout", strategy.long) if (dnBreakout) strategy.entry("Down Breakout", strategy.short) //------------------------------------------------------------------------------} //Alerts //------------------------------------------------------------------------------{ alertcondition(upos > upos[1], 'Upward Breakout', 'Price broke the down-trendline upward') alertcondition(dnos > dnos[1], 'Downward Breakout', 'Price broke the up-trendline downward') //------------------------------------------------------------------------------}