اس حکمت عملی کا نام اے ٹی آر اشارے پر مبنی پیرالائن اسٹاپ اسٹریٹجی ہے۔ اس حکمت عملی میں اے ٹی آر اشارے کو استعمال کیا جاتا ہے تاکہ پیرالائن اسٹاپ اسٹریٹجی کی کمی کی رفتار کو ایڈجسٹ کیا جاسکے تاکہ وہ مارکیٹ میں اتار چڑھاؤ کی شرح میں تبدیلیوں کے مطابق ڈھال سکے۔
روایتی پیرا لاین اسٹاپ کا ایکسلریشن فیکٹر فکسڈ رہتا ہے ، جو اتار چڑھاؤ کی شرح میں اضافے کا مقابلہ نہیں کرسکتا ہے۔ اس حکمت عملی سے پیرا لاین کی سکڑنے کی رفتار تیز ہوجاتی ہے جیسے اے ٹی آر کی قیمت بڑھ جاتی ہے ، لہذا جب اتار چڑھاؤ بڑھ جاتا ہے تو ، اسٹاپ لکیری تیزی سے قیمت کے قریب جاسکتی ہے ، تاکہ خطرے کو مؤثر طریقے سے کنٹرول کیا جاسکے۔
خاص طور پر ، حکمت عملی قیمت کے رجحان کی سمت کا تعین کرنے کے بعد ، اے ٹی آر کی قیمت کے مطابق ایک موافقت پذیر ایکسلریشن فیکٹر کا حساب لگاتا ہے ، اور اس کے مطابق پیرالائز لائن اسٹاپ نقصان کی منحنی خطوط کا نقشہ تیار کرتا ہے۔ جب قیمت اسٹاپ نقصان کی لائن کو توڑ دیتی ہے تو ، اسٹاپ نقصان کی صف بندی پر عملدرآمد کریں۔
اس حکمت عملی کا فائدہ یہ ہے کہ روایتی پیرالائز لائن اسٹاپ کو مارکیٹ میں اتار چڑھاؤ کی بنیاد پر متحرک طور پر ایڈجسٹ کرنے کی اجازت دی جاتی ہے۔ تاہم ، اے ٹی آر پیرامیٹرز کو بہتر بنانے کی ضرورت ہے ، اور اسٹاپ لائن بہت حساس ہے اور اس سے تجاوز کرنا آسان ہے۔
مجموعی طور پر ، منافع کو بچانے اور خطرے کو کنٹرول کرنے کے لئے خود بخود اسٹاپ لگانا ضروری ہے۔ تاجروں کو مارکیٹ کے حالات کے مطابق مناسب اسٹاپ اشارے کا انتخاب کرنا چاہئے ، اور پیرامیٹرز کی جانچ اور اصلاح کرنا چاہئے تاکہ اسٹاپ لگانے کی حکمت عملی کو زیادہ سے زیادہ فائدہ اٹھایا جاسکے۔
/*backtest
start: 2023-08-13 00:00:00
end: 2023-09-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="ATR Parabolic SAR Strategy [QuantNomad]", shorttitle="ATR PSAR Strategy [QN]", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
atr_length = input(14)
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
entry_bars = input(1, title = "Entry on Nth trend bar")
atr = atr(atr_length)
atr := na(atr) ? tr : atr
psar = 0.0 // PSAR
af = 0.0 // Acceleration Factor
trend_dir = 0 // Current direction of PSAR
ep = 0.0 // Extreme point
trend_bars = 0
sar_long_to_short = trend_dir[1] == 1 and close <= psar[1] // PSAR switches from long to short
sar_short_to_long = trend_dir[1] == -1 and close >= psar[1] // PSAR switches from short to long
trend_change = barstate.isfirst[1] or sar_long_to_short or sar_short_to_long
// Calculate trend direction
trend_dir := barstate.isfirst[1] and close[1] > open[1] ? 1 :
barstate.isfirst[1] and close[1] <= open[1] ? -1 :
sar_long_to_short ? -1 :
sar_short_to_long ? 1 : nz(trend_dir[1])
trend_bars := sar_long_to_short ? -1 :
sar_short_to_long ? 1 :
trend_dir == 1 ? nz(trend_bars[1]) + 1 :
trend_dir == -1 ? nz(trend_bars[1]) - 1 :
nz(trend_bars[1])
// Calculate Acceleration Factor
af := trend_change ? start :
(trend_dir == 1 and high > ep[1]) or
(trend_dir == -1 and low < ep[1]) ?
min(maximum, af[1] + increment) :
af[1]
// Calculate extreme point
ep := trend_change and trend_dir == 1 ? high :
trend_change and trend_dir == -1 ? low :
trend_dir == 1 ? max(ep[1], high) :
min(ep[1], low)
// Calculate PSAR
psar := barstate.isfirst[1] and close[1] > open[1] ? low[1] :
barstate.isfirst[1] and close[1] <= open[1] ? high[1] :
trend_change ? ep[1] :
trend_dir == 1 ? psar[1] + af * atr :
psar[1] - af * atr
plot(psar, style=plot.style_cross, color=trend_dir == 1 ? color.green : color.red, linewidth = 2)
// Strategy
strategy.entry("Long", true, when = trend_bars == entry_bars)
strategy.entry("Short", false, when = trend_bars == -entry_bars)