এই কৌশলটি গতিশীল স্টপ লস বাস্তবায়নের জন্য বোলিংজার ব্যান্ডের উপরের এবং নীচের রেলগুলি ব্যবহার করে। যখন দাম উপরের রেলটি ভেঙে যায় তখন এটি সংক্ষিপ্ত হয় এবং যখন দাম নিম্ন রেলটি ভেঙে যায় তখন দীর্ঘ হয়। এবং এটি দামের চলাচল ট্র্যাক করতে গতিশীল স্টপ লস সেট করে।
এই কৌশলটির মূল অংশটি বোলিংজার ব্যান্ডের উপরের এবং নীচের রেলগুলিতে রয়েছে। মধ্য রেলটি এন-দিনের চলমান গড়। উপরের রেলটি মধ্য রেল + কেএন-দিনের স্ট্যান্ডার্ড ডিভিয়েশন। নিম্ন রেল হল মাঝের রেল − 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)