وسائل لوڈ ہو رہے ہیں... لوڈنگ...

بولنگر بینڈز معیاری انحراف بریک آؤٹ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-21 17:14:04
ٹیگز:

img

جائزہ

یہ حکمت عملی کلاسیکی بولنگر بینڈز اشارے پر مبنی ہے۔ جب قیمت اوپری بینڈ سے اوپر بند ہوتی ہے تو یہ لمبی ہوتی ہے اور جب قیمت نچلی بینڈ سے نیچے بند ہوتی ہے تو مختصر ہوجاتی ہے۔ یہ بریک آؤٹ کی حکمت عملی کے بعد رجحان سے تعلق رکھتا ہے۔

حکمت عملی منطق

  1. بیس لائن 55 دن کا سادہ چلتا ہوا اوسط ہے۔
  2. بالائی اور نچلی بینڈ بالترتیب بیس لائن سے اوپر اور نیچے ایک معیاری انحراف ہیں۔
  3. جب قیمت اوپری بینڈ کے اوپر بند ہوتی ہے تو ایک طویل سگنل پیدا ہوتا ہے۔
  4. ایک مختصر سگنل اس وقت پیدا ہوتا ہے جب قیمت نچلے بینڈ سے نیچے بند ہوجاتی ہے۔
  5. کلاسیکی دو معیاری انحراف کے بجائے ایک معیاری انحراف کا استعمال خطرہ کو کم کرتا ہے۔

فوائد کا تجزیہ

  1. مقررہ قدر کے بجائے معیاری انحراف کا استعمال خطرے کو کم کرتا ہے۔
  2. 55 دن کا چلتا ہوا اوسط درمیانی مدت کے رجحان کو بہتر طور پر ظاہر کرسکتا ہے۔
  3. قریبی فرار غلط فرار کو فلٹر کرتا ہے.
  4. ملٹی ٹائم فریم تجزیہ کے ذریعے رجحان کی سمت کا تعین کرنا آسان ہے۔

خطرے کا تجزیہ

  1. چھوٹی چھوٹی کمائی کرنے کا رجحان رکھتے ہیں۔
  2. ٹرانزیکشن فیسوں کے اثرات پر غور کرنے کی ضرورت ہے۔
  3. بریک آؤٹ سگنل جھوٹے بریک آؤٹ ہو سکتے ہیں۔
  4. سلائڈنگ نقصان ہو سکتا ہے.

اسٹاپ نقصان کی ترتیب، ٹرانزیکشن فیسوں پر غور، یا اشارے کے فلٹرز کو شامل کرکے خطرات کو کم کیا جا سکتا ہے.

اصلاح کی ہدایات

  1. بہترین حرکت پذیر اوسط تلاش کرنے کے لئے بیس لائن پیرامیٹرز کو بہتر بنائیں.
  2. زیادہ سے زیادہ پیرامیٹرز تلاش کرنے کے لئے معیاری انحراف کا سائز بہتر بنائیں.
  3. فیصلہ کرنے کے لئے معاون حجم کے اشارے شامل کریں.
  4. سٹاپ نقصان کا طریقہ کار شامل کریں.

خلاصہ

اس حکمت عملی کا مجموعی منطق واضح ہے۔ یہ معیاری انحراف بینڈ کی چوڑائی کے ذریعے خطرے کو ایڈجسٹ کرتا ہے اور قریبی بریک آؤٹ کا استعمال کرتے ہوئے جھوٹے بریک آؤٹ سے بچتا ہے۔ لیکن پھر بھی اسٹاپ نقصان کا استعمال کرتے ہوئے ، فلٹرز وغیرہ شامل کرکے آسکیلٹنگ نقصانات کو روکنا ضروری ہے۔


/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

//┌───── •••• ─────┐//
//   TradeChartist  //
//└───── •••• ─────┘//

//Bollinger Bands is a classic indicator that uses a simple moving average of 20 periods along with upper and lower bands that are 2 standard deviations away from the basis line. 
//These bands help visualize price volatility and trend based on where the price is in relation to the bands.

//This Bollinger Bands filter plots a long signal when price closes above the upper band and plots a short signal when price closes below the lower band. 
//It doesn't take into account any other parameters such as Volume/RSI/fundamentals etc, so user must use discretion based on confirmations from another indicator or based on fundamentals.

//This filter's default is 55 SMA and 1 standard deviation, but can be changed based on asset type

//It is definitely worth reading the 22 rules of Bollinger Bands written by John Bollinger. 


strategy(shorttitle="BB Breakout Strategy", title="Bollinger Bands Filter", overlay=true, 
             pyramiding=1, currency=currency.NONE , 
             initial_capital = 10000, default_qty_type = strategy.percent_of_equity, 
             default_qty_value=100, calc_on_every_tick= true, process_orders_on_close=false)

src         = input(close, title = "Source")
length      = input(55, minval=1, title = "SMA length")// 20 for classis Bollinger Bands SMA line (basis)


mult        = input(1., minval=0.236, maxval=2, title="Standard Deviation")//2 for Classic Bollinger Bands //Maxval = 2 as higher the deviation, higher the risk
basis       = sma(src, length)
dev         = mult * stdev(src,length)

CC          = input(true, "Color Bars")


upper       = basis + dev
lower       = basis - dev

//Conditions for Long and Short - Extra filter condition can be used such as RSI or CCI etc.

short       = src<lower// and rsi(close,14)<40
long        = src>upper// and rsi(close,14)>60

L1          = barssince(long)
S1          = barssince(short)

longSignal  = L1<S1 and not (L1<S1)[1]
shortSignal = S1<L1 and not (S1<L1)[1]

//Plots and Fills



////Long/Short shapes with text
// plotshape(S1<L1 and not (S1<L1)[1]?close:na, text = "sᴇʟʟ", textcolor=#ff0100, color=#ff0100, style=shape.triangledown, size=size.small, location=location.abovebar, transp=0, title = "SELL", editable = true)
// plotshape(L1<S1 and not (L1<S1)[1]?close:na, text = "ʙᴜʏ", textcolor = #008000, color=#008000, style=shape.triangleup, size=size.small, location=location.belowbar, transp=0, title = "BUY", editable = true)  


// plotshape(shortSignal?close:na, color=#ff0100, style=shape.triangledown, size=size.small, location=location.abovebar, transp=0, title = "Short Signal", editable = true)
// plotshape(longSignal?close:na, color=#008000, style=shape.triangleup, size=size.small, location=location.belowbar, transp=0, title = "Long Signal", editable = true)  



p1          = plot(upper, color=#ff0000, display=display.all, transp=75, title = "Upper Band")
p2          = plot(lower, color=#008000, display=display.all, transp=75, title = "Lower Band")


p           = plot(basis, color=L1<S1?#008000:S1<L1?#ff0000:na, linewidth=2, editable=false, title="Basis")


fill(p,p1, color=color.teal, transp=85, title = "Top Fill") //fill for basis-upper
fill(p,p2, color=color.orange, transp=85, title = "Bottom Fill")//fill for basis-lower


//Barcolor

bcol        = src>upper?color.new(#8ceb07,0): 
             src<lower?color.new(#ff0000,0):
             src>basis?color.green:
             src<basis?color.red:na


barcolor(CC?bcol:na, editable=false, title = "Color Bars")



// //Alerts ----  // Use 'Once per bar close'

// alertcondition(condition=longSignal, title="Long - BB Filter", message='BB Filter Long @ {{close}}') // Use 'Once per bar close'
// alertcondition(condition=shortSignal, title="Short - BB Filter", message='BB Filter Short @ {{close}}')  // Use 'Once per bar close'

Notestart1 = input(true, "╔═══ Time Range to BackTest ═══╗") 


// === INPUT BACKTEST RANGE ===
FromMonth = input(defval=1, 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=2015)
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=2010)

// === FUNCTION EXAMPLE === 
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)  // backtest finish window
window() =>  // create function "within window of time"
    time >= start and time <= finish ? true : false 

if(window())
    strategy.entry("Long", long=true, when =  longSignal)
    // strategy.close("Long", when = (short and S3==0), comment = "Close Long")

if(window())
    strategy.entry("Short", long=false, when = shortSignal)
    // strategy.close("Short", when = (long and L3==0), comment = "Close Short")



مزید