بولنگر بینڈس حکمت عملی ایک کلاسیکی حکمت عملی ہے جو بولنگر بینڈس کو رجحان کی پیروی اور زیادہ خرید / زیادہ فروخت سگنل کے لئے استعمال کرتی ہے۔ اس ورژن میں اصل حکمت عملی پر خطرات کو کنٹرول کرنے کے لئے اسٹاپ نقصان کے طریقہ کار کو شامل کیا گیا ہے۔
یہ حکمت عملی پوزیشنوں کو قائم کرنے کے لئے اوپری / نچلے بولنگر بینڈز کے سنہری / مردہ کراس اوور کے ذریعہ اوور بک / اوور سیلڈ شرائط کا جائزہ لیتی ہے۔ بینڈ کے درمیان کا علاقہ موجودہ مارکیٹ میں اتار چڑھاؤ کی حد کی عکاسی کرتا ہے۔ بینڈ میں درمیانی ، اوپری اور نچلی بینڈ شامل ہیں ، جہاں درمیانی بینڈ N دن کا سادہ چلتا ہوا اوسط ہے اور اوپری / نچلی بینڈ درمیانی بینڈ +/- K معیاری انحراف ہیں۔
بولنگر بینڈ مارکیٹ میں اتار چڑھاؤ اور نوسانات کی حد کی عکاسی کرتے ہیں۔ نچلے بینڈ کو چھونے کا مطلب ہے کہ زیادہ فروخت کی حیثیت - خلاؤں کو بھرنے کا زیادہ امکان ہے۔ اس طرح اوسط ریورس اصول کی بنیاد پر لمبی پوزیشنوں پر غور کیا جانا چاہئے۔ اسی طرح ، اوپری بینڈ کو چھونے سے ممکنہ طور پر زیادہ خریدنے کی شرائط اور ممکنہ قیمتوں میں ردوبدل کی نمائندگی ہوتی ہے ، لہذا نیچے کی نقل و حرکت سے فائدہ اٹھانے کے لئے مختصر پوزیشنیں قائم کی جاسکتی ہیں۔
اس حکمت عملی میں رجحان کی پیروی کرنے والے اندراجات کے لئے بولنگر بینڈ سے زیادہ خرید / فروخت کے اشاروں کو جوڑ دیا گیا ہے۔ خطرات کو کنٹرول کرنے کے لئے اسٹاپ نقصان کے طریقہ کار شامل ہیں۔
جب قیمت نچلے بینڈ سے تجاوز کرتی ہے تو ، مارکیٹ اوور سیلڈ ایریا سے معقول حد تک باہر نکل جاتی ہے۔ لمبی پوزیشنیں کھولی جاسکتی ہیں۔ جب قیمت اوپری بینڈ سے نیچے گزرتی ہے تو ، مارکیٹ اوور بک ہو جاتی ہے۔ اس کے بعد شارٹس کھولے جاسکتے ہیں۔
احکامات کو پورا کرنے کے بعد ، خطرات کو سنبھالنے کے لئے مقررہ فیصد اسٹاپ نقصان کی سطح مقرر کی جاتی ہے۔ جب نقصانات اسٹاپ نقصان فیصد سے تجاوز کرتے ہیں تو ، مزید نقصانات کو محدود کرنے کے لئے موجودہ پوزیشنوں کو روک دیا جاتا ہے۔
کم خرید-زیادہ فروخت کے سیٹ اپ کے لئے بولنگر بینڈ کے ساتھ زیادہ خرید / زیادہ فروخت کی سطحوں کی نشاندہی کریں جو بینڈ کراسورز کی طرف سے فیصلہ کرتے ہیں.
بولنگر بینڈ کی اتار چڑھاؤ کی خاصیت کے ذریعے رجحانات کو پکڑو.
سٹاپ نقصان کا طریقہ کار مؤثر طریقے سے فی تجارت زیادہ سے زیادہ نقصان کو محدود کرتا ہے۔
رجحان ٹریکنگ اور سٹاپ نقصان کو یکجا کرنے سے مستحکم منافع حاصل ہوتا ہے۔
پیرامیٹر کی ترتیبات سگنل کے معیار کو متاثر کرتی ہیں۔ درمیانی بینڈ کی لمبائی N اور معیاری انحراف کے ضارب K کو مختلف منڈیوں کے لئے عقلی طور پر ترتیب دینا چاہئے ، ورنہ درستگی متاثر ہوگی۔
زیادہ سے زیادہ یا کم اسٹاپ نقصان واپسی کے استحکام کو نقصان پہنچاتا ہے۔ زیادہ سے زیادہ فیصد فی تجارت میں زیادہ نقصانات کا خطرہ ہے ، جبکہ کم سے کم فیصد خطرہ ابتدائی اسٹاپ نقصان کو متحرک کرتا ہے۔ مختلف مصنوعات کی بنیاد پر معقول فیصد طے کرنا چاہئے۔
دیگر اشارے کے ساتھ اضافی فلٹر سگنل کی درستگی کو بہتر بنا سکتے ہیں.
مختلف انعقاد کی مدت کی ترتیبات کا تجربہ کیا جا سکتا ہے، جیسے زیادہ تعدد ٹریڈنگ اور سرمایہ کاری کے استعمال کی کارکردگی میں بہتری کے لئے گھنٹہ یا مختصر مدت کے بینڈ کو یکجا کرنا.
یہ حکمت عملی اوور بک / اوور سیل سگنلز کے لئے بولنگر بینڈ کا فائدہ اٹھاتی ہے اور خطرے کے کنٹرول کے لئے اسٹاپ نقصان کو شامل کرتی ہے۔ یہ ایک عام رجحان ٹریکنگ حکمت عملی ہے۔ پیرامیٹرز کو بہتر بنانے ، زیادہ درست سگنلز اور اسٹاپ نقصان کی سطح کو مربوط کرنے کے ذریعے ، مستحکم منافع حاصل کیا جاسکتا ہے۔
/*backtest start: 2023-11-15 00:00:00 end: 2023-11-22 00:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Bollinger Bands Strategy", overlay=false, shorttitle="BBS", pyramiding=0, currency=currency.USD, commission_type=strategy.commission.percent, commission_value=0.03, initial_capital=1000) source = input(close, "Source") length = input.int(20, minval=1) mult = input.float(2.0, minval=0.001, maxval=50, step=0.001) stopLossFactor = input.float(1, "Stop Loss Percent", maxval = 100, minval = 0, step=0.1) basis = ta.sma(source, length) dev = mult * ta.stdev(source, length) upper = basis + dev lower = basis - dev var float lastTradePrice = na var float stopLossLow = na var float stopLossHigh = na var bool currentIsLong = na var bool nextExpectedIsLong = true var bool existedLong = false var bool existedShort = false buyEntry = ta.crossover(source, lower) sellEntry = ta.crossunder(source, upper) if (buyEntry and nextExpectedIsLong == true) strategy.entry("BBandLE", strategy.long, comment="BBandLE") nextExpectedIsLong := false if(nz(strategy.position_size[1], 0) < 0) // new position detected lastTradePrice := close stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100)) stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100)) else strategy.cancel("BBandLE") if (sellEntry and nextExpectedIsLong == false) strategy.entry("BBandSE", strategy.short, comment="BBandSE") nextExpectedIsLong := true if(nz(strategy.position_size[1], 0) > 0) // new position detected lastTradePrice := close stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100)) stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100)) else strategy.cancel("BBandSE") strategy.close("BBandLE", close < stopLossLow) strategy.close("BBandSE", close > stopLossHigh) // if(nz(strategy.position_size[1], 0) < 0 and close > stopLossHigh) // strategy.entry("BBandLE", strategy.long, comment="BBandLE") // lastTradePrice := close // stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100)) // stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100)) // if(nz(strategy.position_size[1], 0) > 0 and close < stopLossLow) // strategy.exit("BBandSE", strategy.short, comment="BBandSE") // lastTradePrice := close // stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100)) // stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100)) plot(source, "close", color.blue) plot(lower, "lower", color.red) plot(upper, "upper", color.red) plot(stopLossLow, "StopLossLow", color.black) plot(stopLossHigh, "StopLossHigh", color.black) plot(lastTradePrice, "lastTradePrice", color.green) plotchar(strategy.position_size > 0, char="-", size=size.tiny, location=location.bottom, color=color.green) plotchar(strategy.position_size < 0, char="-", size=size.tiny, location=location.bottom, color=color.red)