یہ ایک بہت ہی آسان حکمت عملی ہے۔ اس میں صرف ایک ٹریلنگ اسٹاپ نقصان ہوتا ہے۔ جب اسٹاپ نقصان کو متحرک کیا جاتا ہے تو ، پوزیشن کو الٹ کردیا جاتا ہے اور نئی پوزیشن کے لئے ٹریلنگ اسٹاپ نقصان طے ہوتا ہے۔
حکمت عملی تین سٹاپ نقصان کی اقسام میں سے ایک کی بنیاد پر بنائی گئی ہے: فیصد اسٹاپ نقصان ، اے ٹی آر اسٹاپ نقصان ، مطلق اسٹاپ نقصان۔ جب اسٹاپ نقصان کو متحرک کیا جاتا ہے تو ، پوزیشن کو الٹ کردیا جاتا ہے اور نئی پوزیشن کے لئے ٹریلنگ اسٹاپ نقصان مقرر کیا جاتا ہے۔
خاص طور پر ، حکمت عملی پہلے منتخب کردہ اسٹاپ نقصان کی قسم کی بنیاد پر اسٹاپ نقصان کی قیمت کا حساب لگاتی ہے۔ اس کے بعد یہ انٹری سگنل کی جانچ پڑتال کرتی ہے ، جب پچھلی اسٹاپ نقصان کی قیمت سے زیادہ ہوتی ہے تو طویل ہوجاتی ہے اور جب پچھلی اسٹاپ نقصان کی قیمت سے کم ہوتی ہے تو مختصر ہوجاتی ہے۔ داخل ہونے کے بعد ، یہ قیمت کی تبدیلیوں کو ٹریک کرنے کے لئے اسٹاپ نقصان کی قیمت کو اپ ڈیٹ کرتی رہتی ہے۔ لانگ اسٹاپ نقصان کی قیمت کم ہے مائنس اسٹاپ نقصان کی قیمت ، مختصر اسٹاپ نقصان کی قیمت زیادہ ہے پلس اسٹاپ نقصان کی قیمت۔
اس حکمت عملی کا سب سے بڑا فائدہ اس کی سادگی ہے ، جس میں داخلے اور باہر نکلنے کے نقطہ کے انتخاب پر غور کرنے کی ضرورت کے بغیر صرف ایک اسٹاپ نقصان کا سراغ لگانے کی ضرورت ہے۔ اسٹاپ نقصان کی قیمت کی لچکدار ترتیب اس کے اطلاق کے دائرہ کار کو بھی وسیع تر کرتی ہے۔
فکسڈ اسٹاپ نقصان کے مقابلے میں ، اس کا استعمال کرنے والا ٹریلنگ اسٹاپ نقصان زیادہ منافع میں مقفل ہوسکتا ہے جبکہ اسٹاپ نقصان کو نشانہ بنانے کے امکان کو بھی کم کرسکتا ہے۔ ہر بار اسٹاپ نقصان کو متحرک کرنے پر پوزیشنوں کو تبدیل کرنے سے قیمت میں الٹ جانے کے مواقع حاصل کرنے کی اجازت ملتی ہے۔
اس حکمت عملی کے اہم خطرات غلط اسٹاپ نقصان کی قیمت کی ترتیب سے آسکتے ہیں۔ بہت زیادہ اسٹاپ نقصان کی قیمت سے بڑے نقصانات ہوسکتے ہیں ، جبکہ بہت کم قیمت سے اکثر اسٹاپ نقصان کا باعث بن سکتا ہے۔ اس کے لئے مارکیٹ کے حالات کی بنیاد پر موافقت پذیر اصلاح کی ضرورت ہوتی ہے۔
ایک اور خطرہ یہ ہے کہ پوزیشنوں کو الٹتے وقت اسٹاپ نقصان کو ٹرگر کرنے کے بعد سمت کا غلط فیصلہ ہوتا ہے ، اس طرح قیمتوں میں الٹ جانے کے امکانات کو کھو دیتے ہیں یا نقصانات میں اضافہ ہوتا ہے۔ اس میں رجحان اور معاونت / مزاحمت کے تجزیے کو یکجا کرنے کی ضرورت ہوتی ہے تاکہ الٹ جانے کے بہترین وقت کا تعین کیا جاسکے۔
حکمت عملی کو مندرجہ ذیل پہلوؤں میں بہتر بنایا جاسکتا ہے:
یہ حکمت عملی ایک آسان ٹریلنگ اسٹاپ نقصان میکانزم کے ذریعے منافع حاصل کرتی ہے اور ابتدائیوں کے لئے سمجھنا آسان ہے۔ روایتی اسٹاپ نقصان کی حکمت عملی کے مقابلے میں ، یہ اضافی فوائد حاصل کرنے کے لئے پوسٹ اسٹاپ نقصان ٹرگر الٹ پوزیشن شامل کرتا ہے۔ مسلسل جانچ اور اصلاح کے ساتھ ، یہ ایک بہت ہی عملی مقداری پروگرام بن سکتا ہے۔
/*backtest start: 2022-11-24 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Trailing SL Strategy [QuantNomad]", shorttitle = "TrailingSL [QN]", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 50) //////////// // Inputs // sl_type = input("%", options = ["%", "ATR", "Absolute"]) sl_perc = input(4, title = "% SL", type = input.float) atr_length = input(10, title = "ATR Length") atr_mult = input(2, title = "ATR Mult", type = input.float) sl_absol = input(10, title = "Absolute SL", type = input.float) // BACKTESTING RANGE // From Date Inputs fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2016, title = "From Year", minval = 1970) // To Date Inputs toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2100, title = "To Year", minval = 1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = time >= startDate and time <= finishDate ////////////////// // CALCULATIONS // // SL values sl_val = sl_type == "ATR" ? atr_mult * atr(atr_length) : sl_type == "Absolute" ? sl_absol : close * sl_perc / 100 // Init Variables pos = 0 trailing_sl = 0.0 // Signals long_signal = nz(pos[1]) != 1 and high > nz(trailing_sl[1]) short_signal = nz(pos[1]) != -1 and low < nz(trailing_sl[1]) // Calculate SL trailing_sl := short_signal ? high + sl_val : long_signal ? low - sl_val : nz(pos[1]) == 1 ? max(low - sl_val, nz(trailing_sl[1])) : nz(pos[1]) == -1 ? min(high + sl_val, nz(trailing_sl[1])) : nz(trailing_sl[1]) // Position var pos := long_signal ? 1 : short_signal ? -1 : nz(pos[1]) ////////////// // PLOTINGS // plot(trailing_sl, linewidth = 2, color = pos == 1 ? color.green : color.red) ////////////// // STRATEGY // if (time_cond and pos != 1) strategy.entry("long", true, stop = trailing_sl) if (time_cond and pos != -1) strategy.entry("short", false, stop = trailing_sl)