সুপারট্রেন্ড বোলিংজার ব্যান্ডস কৌশলটি এটিআর (গড় সত্য পরিসীমা) এর উপর ভিত্তি করে একটি সাধারণ ট্রেলিং স্টপ সূচক কৌশল। এই কৌশলটি চার্টে উত্থান এবং হ্রাস প্রবণতা চ্যানেল আঁকতে সুপারট্রেন্ড সূচক ব্যবহার করে এবং বোলিংজার ব্যান্ডগুলির সাথে সংমিশ্রণে ট্রেডিং সংকেত উত্পন্ন করে।
কৌশলটি সুপারট্রেন্ড লাইনগুলি গণনা করতে দুটি প্রধান পরামিতি ব্যবহার করে - সময়কাল এবং গুণক, যথাক্রমে 10 এবং 3 এর ডিফল্ট মান সহ। নির্দিষ্ট গণনার সূত্রটি নিম্নরূপঃ
উপরের লাইনঃ বন্ধ - (এটিআর দ্বারা গুণক) নীচের লাইনঃ বন্ধ + (এটিআর এক্স মাল্টিপ্লায়ার)
যখন বন্ধের মূল্য পূর্ববর্তী উপরের লাইনের চেয়ে বেশি হয়, তখন এটিকে একটি উত্থান সংকেত হিসাবে বিবেচনা করা হয়। যখন বন্ধের মূল্য পূর্ববর্তী নিম্ন লাইনের নীচে ভাঙ্গবে, তখন এটিকে একটি হ্রাস সংকেত হিসাবে বিবেচনা করা হয়।
এই কৌশলটি বোলিংজার ব্যান্ড সূচককেও অন্তর্ভুক্ত করে, মধ্যবর্তী ব্যান্ডটিকে বেসলাইন হিসাবে ব্যবহার করে এবং উপরের এবং নীচের ব্যান্ডগুলি এটি থেকে দুটি স্ট্যান্ডার্ড বিচ্যুতি দূরে অবস্থিত। যখন দাম নীচে থেকে মধ্যবর্তী ব্যান্ডের উপরে ভাঙবে তখন একটি ক্রয় সংকেত উত্পন্ন হয়। যখন দাম উপরে থেকে মধ্যবর্তী ব্যান্ডের নীচে ভাঙবে তখন একটি বিক্রয় সংকেত উত্পন্ন হয়।
সুপারট্রেন্ড বোলিংজার ব্যান্ডস কৌশলটি একাধিক প্রযুক্তিগত সূচকগুলির শক্তিকে একীভূত করে এবং কার্যকরভাবে বাজারের প্রবণতা ট্র্যাক করার জন্য একটি গতিশীল ট্রেলিং স্টপ প্রক্রিয়া ব্যবহার করে। এই অত্যন্ত কাস্টমাইজযোগ্য কৌশলটি বিভিন্ন বাজারে ভালভাবে মানিয়ে নেয়, এটিকে একটি প্রস্তাবিত ব্রেকআউট পশ্চাদ্ধাবন কৌশল করে তোলে। তবে, হুইপস এবং ওভার-ট্রেডিংয়ের মতো ঝুঁকিগুলি আরও জটিল বাজারের পরিবেশের সাথে খাপ খাইয়ে নেওয়ার জন্য আরও অপ্টিমাইজেশনের মাধ্যমে মোকাবেলা করা উচিত।
/*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"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © KivancOzbilgic //@version=4 strategy("SuperTrend STRATEGY", overlay=true) Periods = input(title="ATR Period", type=input.integer, defval=10) src = input(hl2, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0) changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false) highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true) barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true) atr2 = sma(tr, Periods) atr= changeATR ? atr(Periods) : atr2 up=src-(Multiplier*atr) up1 = nz(up[1],up) up := close[1] > up1 ? max(up,up1) : up dn=src+(Multiplier*atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0) plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0) dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0) plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0) mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0) longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor) fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor) FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 999) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 999) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => time >= start and time <= finish ? true : false longCondition = buySignal if (longCondition) strategy.entry("BUY", strategy.long) shortCondition = sellSignal if (shortCondition) strategy.entry("SELL", strategy.short) buy1= barssince(buySignal) sell1 = barssince(sellSignal) color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na barcolor(barcoloring ? color1 : na)