
اس حکمت عملی کا بنیادی خیال یہ ہے کہ اوسط حقیقی طول موج ((اے ٹی آر) اشارے کا استعمال کرتے ہوئے ایک خود کار طریقے سے ٹریکنگ اسٹاپ لائن ترتیب دی جائے ، تاکہ منافع بخش پوزیشنوں کو زیادہ سے زیادہ تحفظ فراہم کیا جاسکے ، اور جلد ہی نقصان سے بچایا جاسکے۔ اے ٹی آر اشارے مارکیٹ میں اتار چڑھاؤ کی سطح کو متحرک طور پر پکڑنے کے قابل ہیں ، مارکیٹ میں اتار چڑھاؤ کے مطابق اسٹاپ ڈسٹنس کو ایڈجسٹ کرتے ہیں ، اور اسٹاپ نقصان کو یقینی بناتے ہوئے اسٹاپ نقصان کے متحرک ہونے کے امکان کو کم سے کم کرتے ہیں۔ اس حکمت عملی میں ایک برین بینڈ بھی شامل کیا گیا ہے ، جس سے اسٹاپ لائن کی اوپری اور نچلی حد کو نظر انداز کیا جاسکتا ہے ، اور مارکیٹ کے جھٹکے کے اثرات کے خلاف شیڈو تحفظ شامل کرنے یا نہ کرنے کا انتخاب کیا جاسکتا ہے۔
اس حکمت عملی میں اے ٹی آر اشارے کے N دورانیہ کے اوسط کو ایک ضرب سے بیس اسٹاپ ڈسٹینسنگ کے طور پر استعمال کیا گیا ہے۔ اے ٹی آر قدر جتنی بڑی ہے ، اس کا مطلب یہ ہے کہ مارکیٹ میں اتار چڑھاؤ اتنا ہی زیادہ ہوتا ہے ، اسٹاپ ڈسٹینسنگ اتنی ہی وسیع ہوتی ہے۔ اے ٹی آر قدر جتنی چھوٹی ہے ، اسٹاپ ڈسٹینسنگ اتنی ہی تنگ ہوتی ہے۔ اس طرح اسٹاپ ڈسٹینسنگ کو مارکیٹ میں اتار چڑھاؤ کی سطح کے مطابق متحرک طور پر ایڈجسٹ کیا جاسکتا ہے۔
اس حکمت عملی میں مندرجہ ذیل بنیادی منطق استعمال کی گئی ہے:
اے ٹی آر دورانیہ ((nATRPeriod) کے لئے اے ٹی آر کی قیمت کا حساب لگائیں
اے ٹی آر قدر کی طرف سے ضرب ضرب ((nATRMultip) حاصل کرنے کے لئے بیس سٹاپ نقصان کی فاصلے nLoss。
موجودہ اونچائی ، کم اور پچھلے دور کی اسٹاپ لائن کی بنیاد پر اسٹاپ لائن کو اپ ڈیٹ کریں xATRTrailingStop。
اگر موجودہ کم سے پچھلے سائیکل کی اسٹاپ لائن کو ٹرگر کیا گیا ہے تو ، اسٹاپ لائن کم سے نیچے nLoss فاصلے پر منتقل ہوجائے گی۔
اگر موجودہ اونچائی نے پچھلے سائیکل کی اسٹاپ لائن کو متحرک کیا ہے تو ، اسٹاپ لائن کے نیچے اونچائی سے اوپر nLoss کی دوری پر منتقل ہوجائے گا۔
اگر اسٹاپ نقصان کو متحرک نہیں کیا گیا ہے تو ، اسٹاپ لائن کو بندش کی قیمت سے اسٹاپ نقصان کی حد تک ایڈجسٹ کریں۔
سائے کی لائن کی حفاظت کے اختیاری فاصلے کو شامل کریں ، اور نقصان کی لائن کو مزید بہتر بنائیں۔
سٹاپ نقصان کی لائن کی اوپری اور نچلی حد کو دیکھنے کے لئے برن کی پٹی کے مدار کا نقشہ بنائیں۔
اسٹاپ لائن کے رنگ کی بنیاد پر پوزیشن ہولڈنگ کی سمت کا تعین کریں۔
اس حکمت عملی میں اے ٹی آر اشارے کا لچکدار استعمال کیا گیا ہے تاکہ اسٹاپ لائن کو مارکیٹ کے اتار چڑھاؤ کے مطابق ایڈجسٹ کیا جاسکے ، تاکہ یہ یقینی بنایا جاسکے کہ اسٹاپ کا فاصلہ معقول ہے اور اس سے بچنے کی کوشش کی جاسکتی ہے کہ اس سے زیادہ شدت پسند اسٹاپ کی وجہ سے پوزیشن میں غیر ضروری نقصان ہو۔
اس حکمت عملی کے درج ذیل فوائد ہیں:
اے ٹی آر اشارے کا استعمال کرتے ہوئے اسٹاپ نقصان کی فاصلے کو متحرک طور پر ایڈجسٹ کریں ، جو مختلف مارکیٹ کے حالات کے مطابق ڈھال سکے۔
ضرب پیرامیٹرز کو اپنی مرضی کے مطابق بنایا جاسکتا ہے ، جس سے اسٹاپ نقصان کی فاصلے کو لچکدار انداز میں ایڈجسٹ کیا جاسکتا ہے۔
برن کی پٹی کے مدار میں شامل ہو کر سٹاپ نقصان لائن کی بصری اوپری اور نچلی حد تشکیل دے۔
اختیاری شیڈو تحفظ کی خصوصیت ، ہلچل سے بچنے کے لئے whipsaw.
ٹریکنگ اسٹاپ نقصان کے طور پر استعمال کیا جاسکتا ہے ، تاکہ منافع بخش پوزیشنوں کو زیادہ سے زیادہ واپس لیا جاسکے۔
حکمت عملی واضح اور سمجھنے کے لئے آسان ہے، پیرامیٹرز کو بہتر بنانے کے لئے آسان نہیں ہے.
مختلف اقسام اور ادوار میں استعمال کیا جا سکتا ہے، وسیع پیمانے پر قابل اطلاق.
اس حکمت عملی کے کچھ خطرات بھی ہیں جن کے بارے میں آگاہ ہونا ضروری ہے:
اے ٹی آر اشارے مارکیٹ کے اچانک واقعات پر ردعمل میں تاخیر کا سبب بن سکتا ہے ، جس سے اسٹاپ نقصان کا فاصلہ بہت زیادہ ہوسکتا ہے۔
اس کے علاوہ ، اگر ضرب کو زیادہ سے زیادہ ترتیب دیا گیا ہے تو ، اس سے اسٹاپ نقصان کا فاصلہ زیادہ ہوتا ہے ، جس سے نقصان کا خطرہ بڑھ جاتا ہے۔
شیڈ لائن تحفظ کی خصوصیت ہلچل بڑھنے پر سٹاپ نقصان لائن کو بہت زیادہ ڈھیلی بنا دیتی ہے۔
داخلہ کے قواعد کو مدنظر نہ رکھتے ہوئے ، یہ اندراجات / باہر نکلنے کی حکمت عملی نہیں ہوسکتی ہے۔
مختلف اقسام اور ادوار کے لئے بار بار ٹیسٹ اور اصلاح کے پیرامیٹرز کی ضرورت ہوتی ہے.
اسٹاپ نقصان کو توڑنے سے نقصان میں اضافہ ہوسکتا ہے ، جس میں موثر فنڈ مینجمنٹ کی ضرورت ہوتی ہے۔
اس حکمت عملی کو بہتر بنانے کے لیے درج ذیل نکات پر غور کیا جا سکتا ہے:
مختلف اے ٹی آر سائیکل پیرامیٹرز کی جانچ کریں اور اسٹاپ نقصان کا فاصلہ بہتر بنائیں۔
ضرب کے پیرامیٹرز کو ایڈجسٹ کریں اور اسٹاپ نقصان کے فاصلے اور اسٹاپ نقصان کے امکان کے درمیان توازن تلاش کریں۔
whipsaw کو روکنے کے لئے سائے کی حفاظت کے سائیکل پیرامیٹرز کو بہتر بنائیں۔
اسٹاپ نقصان کی بنیاد پر داخلے کی شرائط کو شامل کرنے کی کوشش کریں تاکہ یہ ایک اندراجات / باہر نکلنے کی حکمت عملی ہو۔
رجحانات کا تعین کرنے والے اشارے شامل کریں اور رجحانات کے مطابق اسٹاپ نقصان کی فاصلے کو ایڈجسٹ کریں۔
لہر نظریہ کے ساتھ مل کر ، لہر کی پوزیشن کے مطابق اسٹاپ نقصان کی فاصلے کو ایڈجسٹ کریں۔
پوزیشن کنٹرول شامل کریں ، ایک ہی نقصان کو محدود کریں۔
اس حکمت عملی میں اے ٹی آر اشارے کی خودکشی کی خصوصیات کا استعمال کیا گیا ہے ، جس میں ایک ایسا اسٹاپ نقصان کا طریقہ کار ڈیزائن کیا گیا ہے جو متحرک طور پر ایڈجسٹ ہوسکتا ہے۔ اسٹریٹجک سوچ سادہ اور واضح ہے ، اور اپنی ضروریات کے مطابق لچکدار اصلاح کی جاسکتی ہے۔ اسٹریٹجک اسٹاپ ٹریکنگ ٹول کے طور پر استعمال کرنے میں زیادہ سے زیادہ فائدہ ہوتا ہے ، جس سے پوزیشن کی منافع کو زیادہ سے زیادہ محفوظ کیا جاسکتا ہے۔ پیرامیٹرز کی اصلاح اور خطرے پر قابو پانے کی صورت میں ، یہ حکمت عملی ایک مؤثر اسٹاپ نقصان کا آلہ بن سکتی ہے۔
/*backtest
start: 2022-10-12 00:00:00
end: 2023-10-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v2.0 13/10/2014
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort
// The related article is copyrighted material from Stocks & Commodities Jun 2009
// Modified by River to add Bands, and change color of Trailing Stop and add Wick Protection. Now turned into a Strategy for Backtesting Purposes.
// After backtesting, it seems clear that it functions well as a Trailing Stop, but not as an Entry/Exit strategy.
////////////////////////////////////////////////////////////
strategy(title="ATR Trailing Stop Bands Strategy[R] ", overlay = true)
nATRPeriod = input(5)
nATRMultip = input(4)
length = input(30, "#Periods of Wick Protection", minval=2)
bType = input(0, "Max [1] or Avg Wick Protection [0]", minval=0, maxval=1)
avgupperwick = sma(close[1] <= open[1] ? high[1] - open[1] : high[1] - close[1], length)
maxupperwick = highest(close[1] <= open[1] ? high[1] - open[1] : high[1] - close[1], length)
avglowerwick = sma(close[1] > open[1] ? open[1] - low[1] : close[1] - low[1], length)
maxlowerwick = highest(close[1] > open[1] ? open[1] - low[1] : close[1] - low[1], length)
upperwick = bType == 0 ? avgupperwick : maxupperwick
lowerwick = bType == 0 ? avglowerwick : maxlowerwick
xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR
upperband = iff(high < nz(upperband[1], 0) and high[1] < nz(upperband[1], 0), min(nz(upperband[1]), high + nLoss + upperwick), high + nLoss + upperwick)
lowerband = iff(low > nz(lowerband[1], 0) and low[1] > nz(lowerband[1], 0), max(nz(lowerband[1]), low - nLoss - lowerwick), low - nLoss - lowerwick)
xATRTrailingStop = iff(low > nz(xATRTrailingStop[1], 0) and low[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), low - nLoss - lowerwick),
iff(high < nz(xATRTrailingStop[1], 0) and high[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), high + nLoss + upperwick),
// iff(low <= nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), high + nLoss + upperwick, iff(high >= nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), low - nLoss - lowerwick,0))))
iff(low <= nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), upperband[1], iff(high >= nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), lowerband[1],0))))
pos = iff(close[1] > nz(xATRTrailingStop[1], 0) and low <= nz(xATRTrailingStop[1], 0), 1,
iff(close[1] < nz(xATRTrailingStop[1], 0) and high >= nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))
color = pos == 1 ? red: pos == -1 ? green : blue
plot(upperband, color=red, title="ATR Upper")
plot(xATRTrailingStop, color=color, title="ATR Trailing Stop", linewidth=2)
plot(lowerband, color=green, title="ATR Lower")
longCondition = (color == green and color[1] == red)
if (longCondition)
strategy.entry("Long", strategy.long)
longExitCondition = (color == red and color[1] == green)
if (longExitCondition)
strategy.close("Long")
shortCondition = (color == red and color[1] == green)
if (shortCondition)
strategy.entry("Short", strategy.short)
shortexitCondition = (color == green and color[1] == red)
if (shortexitCondition)
strategy.close("Short")