
یہ حکمت عملی قیمت کی اتار چڑھاؤ پر مبنی رجحان سے باخبر رہنے کی روک تھام کی حکمت عملی ہے۔ یہ قیمت کے اتار چڑھاؤ کی روک تھام کے لئے اوسط حقیقی اتار چڑھاؤ کی شدت (ATR) کا استعمال کرتا ہے۔ اے ٹی آر قیمت کی اتار چڑھاؤ اور خطرے کی سطح کی عکاسی کرتا ہے۔ جب قیمت اسٹاپ لائن سے تجاوز کر جاتی ہے تو ، حکمت عملی اس رجحان کی واپسی کا فیصلہ کرتی ہے اور اس کے مطابق کھلنے والی پوزیشن یا اسٹاپ نقصان کا آپریشن کرتی ہے۔
یہ حکمت عملی پہلے ایک خاص دورانیے میں اوسطاً حقیقی اتار چڑھاؤ کی شدت اے ٹی آر کا حساب لگاتی ہے۔ اس کے بعد موجودہ قیمت کے رجحان کی سمت کے مطابق ، اگر یہ بڑھتا ہوا رجحان ہے تو ، اسٹاپ لاین کو موجودہ اعلی ترین قیمت سے کم سے کم n گنا اے ٹی آر کے طور پر ترتیب دیا جاتا ہے۔ اگر یہ نیچے کی طرف بڑھ رہا ہے تو ، اسٹاپ لاین کو موجودہ کم سے کم قیمت سے زیادہ n گنا اے ٹی آر کے طور پر مقرر کیا جاتا ہے۔
جب قیمت بڑھتی ہوئی رجحان کی روک تھام کی لائن سے نیچے آتی ہے یا گرتی ہوئی رجحان کی روک تھام کی لائن کو توڑ دیتی ہے تو ، اس بات کا تعین کیا جاتا ہے کہ رجحان میں تبدیلی واقع ہوئی ہے۔ اس وقت حکمت عملی کو بند کردیں اور نئی رجحان کی سمت کے مطابق نئی روک تھام کی لائن ترتیب دیں۔
مجموعی طور پر ، اس حکمت عملی میں قیمتوں میں اتار چڑھاؤ کا استعمال کرتے ہوئے اسٹاپ لاین قائم کرنے کی صلاحیت ہے ، جس سے رجحان کی تبدیلی کا درست اندازہ لگایا جاسکتا ہے۔ جب رجحان بدل جاتا ہے تو بروقت اسٹاپ اس حکمت عملی کو نئے رجحان کی سمت کو سمجھنے میں مدد کرتا ہے۔
یہ حکمت عملی مجموعی طور پر قیمت کی اتار چڑھاؤ کی بنیاد پر اسٹاپ نقصان کی لائن لگانے کے لئے ایک بہتر الگورتھم کی تکمیل ہے۔ یہ قیمتوں کے رجحانات کی اعلی درستگی کا اندازہ لگاتا ہے ، جو رجحان کے اہم موڑ کو پکڑ سکتا ہے۔ اس کے ساتھ ساتھ ، یہ ایڈجسٹمنٹ کے لئے کچھ پیرامیٹرز کی گنجائش بھی فراہم کرتا ہے ، جو زیادہ لچکدار ہے۔ ایک اسٹاپ نقصان کی حکمت عملی کے طور پر ، یہ رجحانات کے الٹ جانے کے خطرے سے بچنے کے لئے موثر ہے ، جو عملی طور پر قابل اطلاق ہے۔
/*backtest
start: 2022-11-30 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © laptevmaxim92
//@version=4
strategy("Volatility stop strategy", overlay=true)
length = input(20)
mult = input(2, step = 0.1)
utp = input(false, "Use take profit?")
pr = input(100, "Take profit pips")
usl = input(false, "Use stop loss?")
sl = input(100, "Stop loss pips")
fromday = input(01, defval=01, minval=01, maxval=31, title="From Day")
frommonth = input(01, defval=01, minval= 01, maxval=12, title="From Month")
fromyear = input(2000, minval=1900, maxval=2100, title="From Year")
today = input(31, defval=01, minval=01, maxval=31, title="To Day")
tomonth = input(12, defval=12, minval=01, maxval=12, title="To Month")
toyear = input(2039, minval=1900, maxval=2100, title="To Year")
use_date = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))
atr_ = atr(length)
max_ = 0.0
min_ = 0.0
max1 = 0.0
max1 := max(nz(max_[1]), close)
min1 = 0.0
min1 := min(nz(min_[1]), close)
vstop = 0.0
is_uptrend = false
is_uptrend_prev = false
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 ? color.green : color.red, linewidth=2)
longCondition = is_uptrend
if (longCondition and use_date)
strategy.entry("BUY", strategy.long)
shortCondition = not is_uptrend
if (shortCondition and use_date)
strategy.entry("SELL", strategy.short)
if (utp and not usl)
strategy.exit("TP", "BUY", profit = pr)
strategy.exit("TP", "SELL", profit = pr)
if (usl and not utp)
strategy.exit("SL", "BUY", loss = sl)
strategy.exit("SL", "SELL", loss = sl)
if (usl and utp)
strategy.exit("TP/SL", "BUY", loss = sl, profit = pr)
strategy.exit("TP/SL", "SELL", loss = sl, profit = pr)