
یہ حکمت عملی ایک مقدار کی تجارت کی حکمت عملی ہے جو برن کی پٹی کے وقفے پر مبنی ہے ، جس میں تین گنا معیاری فاصلے کے اوپر اور ایک گنا معیاری فاصلے کے نیچے کا استعمال کیا جاتا ہے ، جبکہ 100 دن کی متحرک اوسط کو درمیانی راستے کے طور پر استعمال کیا جاتا ہے۔ یہ حکمت عملی طویل مدتی رجحانات کو پکڑنے کے لئے بنیادی طور پر قیمتوں کے وقفے کو پکڑنے کے لئے استعمال کی جاتی ہے ، اور اس کے نیچے کے راستے کو روکنے کے سگنل کے طور پر استعمال کیا جاتا ہے۔ حکمت عملی کا بنیادی خیال یہ ہے کہ جب قیمتوں میں شدید خرابی ہوتی ہے تو اس میں داخل ہوجائیں ، اور جب قیمت نیچے کی طرف جاتی ہے تو وقت پر نقصان کو روکیں ، تاکہ اس طرح خطرے سے متعلق رجحانات کو کنٹرول کیا جاسکے۔
حکمت عملی کا بنیادی اصول برن بینڈ کی شماریاتی خصوصیات پر مبنی ہے۔ اوپر کی ریل میں تین گنا اسٹینڈرڈ ڈیفرینس کا استعمال کیا جاتا ہے ، جس کا مطلب یہ ہے کہ ایک نارمل ڈسٹری بیوشن فرض کے تحت ، قیمتوں میں ٹریک کو توڑنے کا امکان صرف 0.15٪ ہے ، لہذا جب ٹریک ہوتا ہے تو ، اکثر نمایاں رجحان کی تشکیل کی نشاندہی کی جاتی ہے۔ درمیانی ریل میں 100 دن کی متحرک اوسط کا استعمال کیا جاتا ہے ، یہ دورانیہ کافی لمبا ہوتا ہے ، جو قلیل مدتی مارکیٹ کے شور کو مؤثر طریقے سے فلٹر کرنے کے قابل ہوتا ہے۔ نیچے کی ریل میں 1 گنا اسٹینڈرڈ ڈیفرینس کا استعمال کیا جاتا ہے ، جو اسٹاپ نقصان کی لائن کے طور پر ہوتا ہے ، جو نسبتا conser قدامت پسند ہے اور نقصان کو روکنے میں مدد کرتا ہے۔ حکمت عملی قیمتوں کے ٹریک کو توڑنے پر ایک سے زیادہ سگنل بھیجتی ہے ، اور جب قیمت نیچے کی ٹریک کو توڑتی ہے تو اس سے باہر نکل جاتی ہے۔
یہ ایک مناسب ، منطقی اور واضح رجحان کی پیروی کرنے والی حکمت عملی ہے۔ برین بینڈ کی اعدادوشمار کی خصوصیات اور متحرک اوسط کی رجحان سے باخبر رہنے کی خصوصیات کے ذریعہ ، مارکیٹ میں اہم پیشرفت کے مواقع کو مؤثر طریقے سے پکڑنے کے قابل ہے۔ اگرچہ کچھ واپسی کا خطرہ موجود ہے ، لیکن معقول اسٹاپ نقصان کی ترتیب اور خطرے پر قابو پانے کے ساتھ ، اس کی عملی قدر بھی بہتر ہے۔ مزید اصلاح کی جگہ بنیادی طور پر سگنل کی تصدیق ، اسٹاپ نقصان کے طریقہ کار اور پوزیشن مینجمنٹ وغیرہ میں ہے۔
/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MounirTrades007
// @version=6
strategy("Bollinger Bands", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=200)
// Get user input
var g_bb = "Bollinger Band Settings"
upperBandSD = input.float(title="Upper Band Std Dev", defval=3.0, tooltip="Upper band's standard deviation multiplier", group=g_bb)
lowerBandSD = input.float(title="Lower Band Std Dev", defval=1.0, tooltip="Lower band's standard deviation multiplier", group=g_bb)
maPeriod = input.int(title="Middle Band MA Length", defval=100, tooltip="Middle band's SMA period length", group=g_bb)
var g_tester = "Backtester Settings"
drawTester = input.bool(title="Draw Backtester", defval=true, group=g_tester, tooltip="Turn on/off inbuilt backtester display")
// Get Bollinger Bands
[bbIgnore1, bbHigh, bbIgnore2] = ta.bb(close, maPeriod, upperBandSD)
[bbMid, bbIgnore3, bbLow] = ta.bb(close, maPeriod, lowerBandSD)
// Prepare trade persistent variables
drawEntry = false
drawExit = false
// Detect bollinger breakout
if close > bbHigh and barstate.isconfirmed and strategy.position_size == 0
drawEntry := true
strategy.entry(id="Trade", direction=strategy.long)
alert("Bollinger Breakout Detected for " + syminfo.ticker, alert.freq_once_per_bar_close)
// Detect bollinger sell signal
if close < bbLow and barstate.isconfirmed and strategy.position_size != 0
drawExit := true
strategy.close(id="Trade")
alert("Bollinger Exit detected for " + syminfo.ticker, alert.freq_once_per_bar_close)
// Draw bollinger bands
plot(bbMid, color=color.blue, title="Middle SMA")
plot(bbHigh, color=color.green, title="Upper Band")
plot(bbLow, color=color.red, title="Lower Band")
// Draw signals
plotshape(drawEntry, style=shape.triangleup, color=color.green, location=location.belowbar, size=size.normal, title="Buy Signal")
plotshape(drawExit, style=shape.xcross, color=color.red, location=location.belowbar, size=size.normal, title="Sell Signal")
// // =============================================================================
// // START BACKTEST CODE
// // =============================================================================
// // Prepare stats table
// var table testTable = table.new(position.top_right, 2, 2, border_width=1)
// f_fillCell(_table, _column, _row, _title, _value, _bgcolor, _txtcolor) =>
// _cellText = _title + "\n" + _value
// table.cell(_table, _column, _row, _cellText, bgcolor=_bgcolor, text_color=_txtcolor)
// // Draw stats table
// var bgcolor = color.black
// if barstate.islastconfirmedhistory
// if drawTester
// dollarReturn = strategy.equity - strategy.initial_capital
// f_fillCell(testTable, 0, 0, "Total Trades:", str.tostring(strategy.closedtrades), bgcolor, color.white)
// f_fillCell(testTable, 0, 1, "Win Rate:", str.tostring(strategy.wintrades / strategy.closedtrades * 100, "##.##") + "%", bgcolor, color.white)
// f_fillCell(testTable, 1, 0, "Equity:", "$" + str.tostring(strategy.equity, "###,###.##"), bgcolor, color.white)
// f_fillCell(testTable, 1, 1, "Return:", str.tostring((strategy.netprofit / strategy.initial_capital) * 100, "##.##") + "%", dollarReturn > 0 ? color.green : color.red, color.white)
// // =============================================================================
// // END BACKTEST CODE
// // =============================================================================