یہ حکمت عملی ایک دو طرفہ تجارتی حکمت عملی ہے جو اتار چڑھاؤ کو ٹریک کرتی ہے۔ یہ اوسط حقیقی رینج (اے ٹی آر) اشارے کا استعمال اسٹاپ نقصانات مرتب کرنے اور اسٹاپ نقصان کی سطح کو توڑنے کی قیمت کی بنیاد پر رجحان کی سمت کا تعین کرنے کے لئے کرتی ہے۔ جب رجحان کی سمت بدل جاتی ہے تو یہ ریورس پوزیشن کھولتی ہے۔
اس حکمت عملی میں اتار چڑھاؤ کا حساب لگانے کے لئے 3 دن کا اے ٹی آر استعمال کیا جاتا ہے۔ ایک ضارب سے ضرب شدہ اے ٹی آر کی قیمت کو اسٹاپ نقصان کی سطح کے طور پر استعمال کیا جاتا ہے۔ جب قیمت اسٹاپ نقصان کی سطح سے اوپر ہوتی ہے تو ، یہ اسے اپ ٹرینڈ کے طور پر فیصلہ کرتی ہے اور جب قیمت اسٹاپ نقصان کی سطح سے نیچے آجاتی ہے تو یہ لمبی پوزیشنوں کو بند کردیتی ہے۔ جب قیمت اسٹاپ نقصان کی سطح سے نیچے ہوتی ہے تو ، یہ اسے نیچے کی رجحان کے طور پر فیصلہ کرتی ہے اور جب قیمت اسٹاپ نقصان کی سطح سے اوپر بڑھتی ہے تو مختصر پوزیشنوں کو بند کردیتی ہے۔ جب رجحان بدلتا ہے تو یہ ریورس پوزیشنیں کھولتی ہے۔ رجحانات کے دوران اسٹاپ نقصان کی سطح کو بہتر بنایا جاتا ہے اور جب رجحانات بدلتے ہیں تو اسے دوبارہ ترتیب دیا جاتا ہے۔
خطرات کو کم کرنے کے لئے: وسیع تر اسٹاپ لیولز کے لیے اے ٹی آر کوفیشنٹ میں اضافہ، تجارتی تعدد کو محدود کرنا، کم سے کم منافع لینے کی سطح مقرر کرنا وغیرہ۔
یہ ایک مجموعی طور پر مستحکم دو طرفہ ٹریلنگ اسٹاپ حکمت عملی ہے۔ اے ٹی آر ڈراؤنڈ کو کنٹرول کرنے کے لئے متحرک اسٹاپ کی سطح طے کرتا ہے۔ دو طرفہ تجارت سے منافع کے امکانات میں بھی اضافہ ہوتا ہے۔ مزید اصلاحات حکمت عملی کو زیادہ مضبوط بنا سکتی ہیں ، جس سے رجحان کی پیروی کرنے کی صلاحیتوں میں اضافہ ہوتا ہے۔
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("BCH Swinger v1", overlay=true, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100) ///////////////////////////////////////////////////////////// //START - SET DATE RANGE // === BACKTEST RANGE === FromMonth = input(defval = 1, title = "From Month", minval = 1) FromDay = input(defval = 1, title = "From Day", minval = 1) FromYear = input(defval = 2017, title = "From Year") ToMonth = input(defval = 10, title = "To Month", minval = 1) ToDay = input(defval = 01, title = "To Day", minval = 1) ToYear = input(defval = 2020, title = "To Year") startDate = time > timestamp(FromYear, FromMonth, FromDay, 1, 1) endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59) withinTimeRange = true ///////////////////////////////////////////////////////////// //END - SET DATE RANGE ///////////////////////////////////////////////////////////// //START - INDICATORS length = input(3) mult = input(1, minval = 0.01) atr_ = atr(length) max1 = max(nz(max_[1]), close) min1 = min(nz(min_[1]), close) is_uptrend_prev = nz(is_uptrend[1], true) stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_ vstop_prev = nz(vstop[1]) vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop) is_uptrend = close - vstop1 >= 0 is_trend_changed = is_uptrend != is_uptrend_prev max_ = is_trend_changed ? close : max1 min_ = is_trend_changed ? close : min1 vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1 plot(vstop, color = is_uptrend ? yellow : red, style=circles, linewidth=2) ///////////////////////////////////////////////////////////// //END - INDICATORS ///////////////////////////////////////////////////////////// //START - TRADING RULES direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1) strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long)) condition1 = close > vstop and withinTimeRange condition2 = close < vstop and withinTimeRange strategy.entry("BUY", strategy.long, when = condition1) strategy.entry("SELL", strategy.short, when = condition2) ///////////////////////////////////////////////////////////// //END - TRADING RULES