یہ حکمت عملی متحرک اسٹاپ نقصان کو نافذ کرنے کے لئے بولنگر بینڈ کی اوپری اور نچلی ریلوں کا استعمال کرتی ہے۔ جب قیمت اوپری ریل سے ٹوٹ جاتی ہے تو یہ مختصر ہوجاتی ہے اور جب قیمت نچلی ریل سے ٹوٹ جاتی ہے تو یہ لمبی ہوجاتی ہے۔ اور یہ قیمت کی نقل و حرکت کو ٹریک کرنے کے لئے متحرک اسٹاپ نقصان طے کرتا ہے۔
اس حکمت عملی کا مرکز بولنگر بینڈز کی اوپری اور نچلی ریلوں میں ہے۔ درمیانی ریل این ڈے چلتی اوسط ہے۔ اوپری ریل درمیانی ریل + کے ہے۔n دن کا معیاری انحراف۔ نچلی ریل درمیانی ریل ہے - kn دن کا معیاری انحراف۔ جب قیمت نچلی ریل سے چھلانگ لگاتی ہے تو ، طویل ہوجاتی ہے۔ جب قیمت اوپری ریل سے پیچھے آجاتی ہے تو ، مختصر ہوجاتی ہے۔ ایک ہی وقت میں ، حکمت عملی اسٹاپ نقصان کا نقطہ طے کرتی ہے اور قیمت کی نقل و حرکت کے دوران متحرک طور پر اسے ایڈجسٹ کرتی ہے تاکہ احتیاط سے رسک کنٹرول کو نافذ کرنے کے لئے منافع حاصل کرنے کا نقطہ طے کیا جاسکے۔
یہ حکمت عملی خطرہ کو کنٹرول کرتے ہوئے درمیانی اور طویل مدتی رجحان منافع حاصل کرنے کے لئے متحرک سلائیڈنگ اسٹاپ نقصان کے ساتھ بولنگر بینڈس
/*backtest start: 2024-01-24 00:00:00 end: 2024-01-31 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(shorttitle="BB Strategy", title="Bollinger Bands Strategy", overlay=true) length = input.int(20, minval=1, group = "Bollinger Bands") maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group = "Bollinger Bands") src = input(close, title="Source", group = "Bollinger Bands") mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev", group = "Bollinger Bands") ma(source, length, _type) => switch _type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) basis = ma(src, length, maType) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev offset = input.int(0, "Offset", minval = -500, maxval = 500, group = "Bollinger Bands") plot(basis, "Basis", color=#FF6D00, offset = offset) p1 = plot(upper, "Upper", color=#2962FF, offset = offset) p2 = plot(lower, "Lower", color=#2962FF, offset = offset) fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95)) lo = input.bool(true, "Long", group = "Strategy") sh = input.bool(true, "Short", group = "Strategy") x = input.float(3.0, "Target Multiplier (X)", group = "Strategy", minval = 1.0, step = 0.1) token = input.string(defval = "", title = "Token", group = "AUTOMATION") Buy_CE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(1) + '"}' Buy_PE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(2) + '"}' Exit_CE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(-1) + '"}' Exit_PE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(-2) + '"}' Exit_PE_CE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(2.5) + '"}' Exit_CE_PE = '{"auth-token":"' + token + '","key":"Value1","value":"' + str.tostring(1.5) + '"}' long = high < lower short = low > upper var sl_b = 0.0 var tar_b = 0.0 var sl_s = 0.0 var tar_s = 0.0 var static_sl = 0.0 entry = strategy.opentrades.entry_price(strategy.opentrades - 1) if long and lo and strategy.position_size == 0 strategy.entry("Long", strategy.long, alert_message = Buy_CE, stop = high) strategy.exit("LX", "Long", profit = (math.abs(high - low) * x)/syminfo.mintick, stop = low, alert_message = Exit_CE) sl_b := low tar_b := high + (math.abs(high - low) * x) static_sl := math.abs(low - high) if short and sh and strategy.position_size == 0 strategy.entry("Short", strategy.short, alert_message = Buy_PE, stop = low) strategy.exit("SX", "Short", profit = (math.abs(high - low) * x)/syminfo.mintick, stop = high, alert_message = Exit_PE) sl_s := high tar_s := low - (math.abs(high - low) * x) static_sl := math.abs(high - low) // if long and strategy.position_size < 0 // strategy.entry("Long", strategy.long, alert_message = Exit_PE_CE, stop = high) // strategy.exit("LX", "Long", profit = (math.abs(high - low) * x)/syminfo.mintick, stop = low, alert_message = Exit_CE) // sl_b := low // tar_b := high + (math.abs(high - low) * x) // if short and strategy.position_size > 0 // strategy.entry("Short", strategy.short, alert_message = Exit_CE_PE, stop = low) // strategy.exit("SX", "Short", profit = (math.abs(high - low) * x)/syminfo.mintick, stop = high, alert_message = Exit_PE) // sl_s := math.max(high[1], high) // tar_s := low - (math.abs(high - low) * x) if ta.change(dayofmonth) or (long[1] and not long[2]) strategy.cancel("Long") if ta.change(dayofmonth) or (short[1] and not short[2]) strategy.cancel("Short") var count = 1 if strategy.position_size != 0 if strategy.position_size > 0 if close > (entry + (static_sl * count)) strategy.exit("LX", "Long", limit = tar_b, stop = sl_b, alert_message = Exit_CE) sl_b := entry + (static_sl * (count - 1)) count += 1 else if close < (entry - (static_sl * count)) strategy.exit("SX", "Short", limit = tar_s, stop = sl_s, alert_message = Exit_PE) sl_s := entry - (static_sl * (count - 1)) count += 1 // label.new(bar_index, high, str.tostring(static_sl)) if strategy.position_size == 0 count := 1 plot(strategy.position_size > 0 ? sl_b : na, "", color.red, style = plot.style_linebr) plot(strategy.position_size < 0 ? sl_s : na, "", color.red, style = plot.style_linebr) plot(strategy.position_size > 0 ? tar_b : na, "", color.green, style = plot.style_linebr) plot(strategy.position_size < 0 ? tar_s : na, "", color.green, style = plot.style_linebr)