
یہ حکمت عملی قیمتوں کے اتار چڑھاؤ کے اعلی اور کم مقامات کی شناخت کے لئے بیس پوائنٹس (PivotHigh اور PivotLow) کا استعمال کرتی ہے اور اس کی بنیاد پر اوپر اور نیچے کی طرف رجحان لائنیں کھینچتی ہیں۔ رجحان لائنوں کا تناسب ATR (Average True Range) ، معیاری فرق یا لکیری رجعت جیسے طریقوں سے حاصل کیا جاتا ہے اور اس میں ایک تناسب فیکٹر کے ذریعہ ایڈجسٹ کیا جاتا ہے۔ جب قیمت رجحان لائن کو توڑتی ہے تو یہ حکمت عملی خریدنے یا بیچنے کا اشارہ دیتی ہے۔
اس حکمت عملی نے بیس پوائنٹس اور ٹرینڈ لائن اسکیلپنگ کا استعمال کرتے ہوئے ایک حقیقی وقت کی ٹرینڈ لائن ٹریڈنگ سسٹم بنایا ہے۔ ٹرینڈ لائن توڑنے والے واقعات کو پکڑ کر ، حکمت عملی رجحان سازی کے ابتدائی مرحلے میں تجارت کرسکتی ہے۔ اگرچہ اس حکمت عملی کے کچھ فوائد ہیں ، پھر بھی ہلچل والی منڈیوں میں اس کے خطرات سے آگاہ رہنا چاہئے ، اور مزید معلومات ، بہتر سگنل فلٹرنگ اور پوزیشن مینجمنٹ جیسے طریقوں کو متعارف کرانے کے ذریعہ حکمت عملی کی استحکام اور منافع کو مزید بڑھانا چاہئے۔
/*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')
//------------------------------------------------------------------------------}