یہ حکمت عملی اوسط حقیقی رینج (اے ٹی آر) اشارے پر مبنی متحرک اسٹاپ نقصان کی لائن طے کرتی ہے تاکہ منافع کو زیادہ سے زیادہ کرتے ہوئے اسٹاپ نقصان کی حفاظت کے ل stock اسٹاک کی قیمت میں ہونے والی تبدیلیوں کو ٹریک کیا جاسکے۔
اسٹریٹیجی کو بنیادی طور پر مندرجہ ذیل مراحل کے ذریعے نافذ کیا جاتا ہے:
ATR اشارے کا حساب لگائیں، ATR مدت nATRPeriod پیرامیٹر کے ذریعہ مقرر کی جاتی ہے، ڈیفالٹ 5 پر؛
ATR قدر کی بنیاد پر سٹاپ نقصان لائن کا حساب لگائیں، سٹاپ نقصان کی مقدار nATRMultip پیرامیٹر کے ذریعہ مقرر کی جاتی ہے، ڈیفالٹ ATR کے 3.5 گنا؛
جب قیمت بڑھتی ہے تو ، اگر پچھلی اسٹاپ نقصان لائن سے زیادہ ہے تو ، اسٹاپ نقصان لائن کو قیمت سے کم اسٹاپ نقصان کی مقدار تک ایڈجسٹ کریں۔ جب قیمت گرتی ہے تو ، اگر پچھلی اسٹاپ نقصان لائن سے کم ہے تو ، اسٹاپ نقصان لائن کو نیچے کی قیمت کے علاوہ اسٹاپ نقصان کی مقدار تک ایڈجسٹ کریں۔
اگر قیمت سٹاپ نقصان کی لائن کو توڑتی ہے تو فیصلہ کریں، اگر توڑتا ہے تو، خریدنے یا فروخت کے سگنل بھیجیں؛
سٹاپ نقصان لائن بریک آؤٹ سگنلز کی بنیاد پر طویل یا مختصر پوزیشنیں داخل کریں، اور جب قیمت دوبارہ سٹاپ نقصان لائن کو چھوتی ہے تو پوزیشنیں بند کریں۔
جب قیمت بڑھتی ہے تو ، اسٹاپ نقصان کی لائن منافع میں مقفل کرنے کے لئے مستقل طور پر بڑھتی رہے گی۔ جب قیمت گرتی ہے تو ، اسٹاپ نقصان کی لائن نقصان کو روکنے کے لئے مستقل طور پر نیچے کی طرف بڑھتی رہے گی۔ اے ٹی آر اشارے قیمت میں اتار چڑھاؤ کو زیادہ درست طریقے سے ظاہر کرسکتا ہے۔ اے ٹی آر پر مبنی اسٹاپ نقصان کی لائن کو متحرک طور پر ایڈجسٹ کرنے سے زیادہ جارحانہ یا زیادہ قدامت پسند اسٹاپ نقصان سے بچ سکتا ہے۔
پیرامیٹرز کو اے ٹی آر مدت اور اسٹاپ نقصان کی شدت کو ایڈجسٹ کرکے بہتر بنایا جاسکتا ہے تاکہ اسٹاپ نقصان اور ٹریلنگ کے مابین بہترین توازن تلاش کیا جاسکے۔ غیر ضروری اسٹاپ نقصان کو کم کرنے کے لئے انٹری ٹائمنگ کو فلٹر کرنے کے لئے دوسرے تکنیکی اشارے بھی استعمال کیے جاسکتے ہیں۔
یہ حکمت عملی متحرک اے ٹی آر ٹریلنگ اسٹاپ نقصان لائن کے ذریعے ہولڈنگ کے دوران اسٹاپ نقصان اور منافع حاصل کرنے کا احساس کرتی ہے۔ مقررہ اسٹاپ نقصان پوائنٹس کے مقابلے میں ، یہ قیمت میں اتار چڑھاؤ سے بہتر موافقت کرتا ہے ، زیادہ جارحانہ یا زیادہ سے زیادہ قدامت پسند اسٹاپ نقصان سے بچتا ہے۔ اے ٹی آر اشارے اسٹاپ نقصان لائن ایڈجسٹمنٹ کو زیادہ نشانہ بناتا ہے۔ لیکن پیرامیٹرز اور دوبارہ اندراج کی حکمت عملیوں کو غیر ضروری اسٹاپ کو کم کرنے اور منافع کے مارجن کو بڑھانے کے لئے مزید اصلاح کی ضرورت ہے۔ مجموعی طور پر یہ ایک اچھا متحرک ٹریلنگ اسٹاپ نقصان خیال ہے جس کی مزید تحقیق اور درخواست کے قابل ہے۔
/*backtest start: 2023-09-08 00:00:00 end: 2023-10-08 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //@okadoke //////////////////////////////////////////////////////////// // Based on Average True Range Trailing Stops Strategy by HPotter // Average True Range Trailing Stops Strategy, by Sylvain Vervoort // The related article is copyrighted material from Stocks & Commodities Jun 2009 //////////////////////////////////////////////////////////// strategy(title="ATR Trailing Stops Strategy", shorttitle="ATRTSS", overlay = true, initial_capital=100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type="percent", commission_value=0.0) nATRPeriod = input(5, "ATR Period") nATRMultip = input(3.5, "ATR Multiplier") useShorts = input(false, "Test w/Shorts?") daysBackMax = input(defval = 360, title = "Max Days Back to Test", minval = 0) daysBackMin = input(defval = 0, title = "Min Days Back to Test", minval = 0) msBackMax = 1000 * 60 * 60 * 24 * daysBackMax msBackMin = 1000 * 60 * 60 * 24 * daysBackMin xATR = atr(nATRPeriod) nLoss = nATRMultip * xATR xATRTrailingStop = na xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss), iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss))) pos = na pos := iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1, iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) color = pos == -1 ? red: pos == 1 ? green : blue plot(xATRTrailingStop, color=color, title="ATR Trailing Stop") isWithinTimeBounds = (msBackMax == 0 or (time > (timenow - msBackMax))) and (msBackMin == 0 or (time < (timenow - msBackMin))) buy = crossover(close, xATRTrailingStop) sell = crossunder(close, xATRTrailingStop) strategy.entry("LONG", long=true, when=buy and isWithinTimeBounds) strategy.close("LONG", when=sell and isWithinTimeBounds) strategy.entry("SHORT", long=false, when=useShorts and sell and isWithinTimeBounds) strategy.close("SHORT", when=useShorts and buy and isWithinTimeBounds)