فبونیکی ترتیب کی بنیاد پر اڈاپٹیو بولنگر بینڈ کی حکمت عملی کا تجزیہ

ATR BB SMA FIB
تخلیق کی تاریخ: 2025-01-06 16:41:48 آخر میں ترمیم کریں: 2025-01-06 16:41:48
کاپی: 2 کلکس کی تعداد: 434
1
پر توجہ دیں
1617
پیروکار

فبونیکی ترتیب کی بنیاد پر اڈاپٹیو بولنگر بینڈ کی حکمت عملی کا تجزیہ

جائزہ

یہ حکمت عملی ایک جدید تجارتی نظام ہے جو فبونیکی ترتیب اور بولنگر بینڈز کو یکجا کرتی ہے۔ یہ روایتی بولنگر بینڈز کے معیاری انحراف کے ضربوں کو فبونیکی تناسب (1.618, 2.618, 4.236) سے بدل کر قیمت کے اتار چڑھاؤ کی حد کے فیصلے کا ایک منفرد نظام بناتا ہے۔ حکمت عملی میں مکمل لین دین کے انتظام کے افعال شامل ہیں، بشمول سٹاپ-پرافٹ اور سٹاپ-لاس سیٹنگز اور ٹرانزیکشن ٹائم ونڈو فلٹرنگ، جو اسے انتہائی عملی اور لچکدار بناتی ہے۔

حکمت عملی کا اصول

حکمت عملی کی بنیادی منطق قیمت اور Fibonacci Bollinger Bands کے درمیان تعامل پر مبنی ہے۔ سب سے پہلے، درمیانی ٹریک کے طور پر قیمت کی سادہ موونگ ایوریج (SMA) کا حساب لگائیں، اور پھر اوپری اور نچلی پٹریوں کو بنانے کے لیے ATR کو مختلف فبونیکی تناسب سے ضرب کا استعمال کریں۔ جب قیمت صارف کے منتخب کردہ فبونیکی بینڈ کے ذریعے ٹوٹ جاتی ہے، تو نظام تجارتی سگنل پیدا کرے گا۔ خاص طور پر، ایک لمبا سگنل اس وقت شروع ہوتا ہے جب سب سے کم قیمت ہدف خرید بینڈ سے کم ہوتی ہے اور سب سے زیادہ قیمت بینڈ سے زیادہ ہوتی ہے؛ جب سب سے کم قیمت ہدف فروخت بینڈ سے کم ہوتی ہے اور سب سے زیادہ قیمت زیادہ ہوتی ہے۔ بینڈ کے مقابلے میں.

اسٹریٹجک فوائد

  1. مضبوط موافقت: حکمت عملی کو مختلف مارکیٹ کے ماحول کے مطابق بہتر بنانے کے لیے متحرک طور پر ATR کے ذریعے بینڈوتھ کو ایڈجسٹ کریں۔
  2. اعلی لچک: صارف اپنے تجارتی انداز کے مطابق مختلف فبونیکی بینڈ کو تجارتی سگنل کے طور پر منتخب کر سکتے ہیں۔
  3. پرفیکٹ رسک مینجمنٹ: بلٹ ان اسٹاپ پرافٹ، اسٹاپ لاس اور ٹائم فلٹرنگ فنکشنز مؤثر طریقے سے خطرات کو کنٹرول کرنے کے لیے
  4. بصری ادراک: تاجروں کو مارکیٹ کی ساخت کو سمجھنے میں مدد کے لیے مختلف شفافیت والے بینڈ دکھائے جاتے ہیں۔
  5. حساب کی منطق کو صاف کریں: کلاسک تکنیکی اشارے کا مجموعہ استعمال کریں، سمجھنے اور برقرار رکھنے میں آسان

اسٹریٹجک رسک

  1. غلط بریک آؤٹ کا خطرہ: بریک آؤٹ کے فوراً بعد قیمتیں واپس آ سکتی ہیں، غلط سگنل پیدا کر کے
  2. پیرامیٹر کی حساسیت: فبونیکی تناسب کے مختلف انتخاب حکمت عملی کی کارکردگی کو نمایاں طور پر متاثر کر سکتے ہیں۔
  3. وقت کا انحصار: اگر آپ ٹریڈنگ ٹائم ونڈوز کو فعال کرتے ہیں، تو آپ اہم تجارتی مواقع سے محروم ہو سکتے ہیں۔
  4. مارکیٹ کے ماحول کا انحصار: ایک غیر مستحکم مارکیٹ میں بہت زیادہ تجارتی سگنل پیدا کر سکتا ہے۔

حکمت عملی کی اصلاح کی سمت

  1. سگنل کی تصدیق کا طریقہ کار: پیش رفت کی تصدیق کے طور پر حجم یا رفتار کے اشارے شامل کرنے کی سفارش کی جاتی ہے۔
  2. متحرک پیرامیٹر کی اصلاح: مارکیٹ کے اتار چڑھاؤ کی بنیاد پر فبونیکی تناسب کو خود بخود ایڈجسٹ کیا جا سکتا ہے
  3. مارکیٹ کے ماحول کی فلٹرنگ: ٹرینڈ ججمنٹ فنکشن شامل کریں اور مارکیٹ کے مختلف ماحول میں مختلف پیرامیٹرز استعمال کریں۔
  4. سگنل وزن کا نظام: سگنل کی وشوسنییتا کو بہتر بنانے کے لیے متعدد ٹائم فریم تجزیہ قائم کریں۔
  5. پوزیشن مینجمنٹ آپٹیمائزیشن: مارکیٹ کے اتار چڑھاؤ اور سگنل کی طاقت کی بنیاد پر پوزیشن کے سائز کو متحرک طور پر ایڈجسٹ کریں۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// © sapphire_edge 

// # ========================================================================= #
// #                  
// #        _____                   __    _              ______    __         
// #      / ___/____ _____  ____  / /_  (_)_______     / ____/___/ /___ ____ 
// #      \__ \/ __ `/ __ \/ __ \/ __ \/ / ___/ _ \   / __/ / __  / __ `/ _ \
// #     ___/ / /_/ / /_/ / /_/ / / / / / /  /  __/  / /___/ /_/ / /_/ /  __/
// #    /____/\__,_/ .___/ .___/_/ /_/_/_/   \___/  /_____/\__,_/\__, /\___/ 
// #              /_/   /_/                                     /____/       
// #                                      
// # ========================================================================= #

strategy(shorttitle="⟡Sapphire⟡ FiboBands Strategy", title="[Sapphire] Fibonacci Bollinger Bands Strategy", initial_capital= 50000, currency= currency.USD,default_qty_value = 1,commission_type= strategy.commission.cash_per_contract,overlay= true )

// # ========================================================================= #
// #                       // Settings Menu //
// # ========================================================================= #

// --------------------    Main Settings    -------------------- //
groupFiboBands = "FiboBands"
length = input.int(20, minval = 1, title = 'Length', group=groupFiboBands)
src = input(close, title = 'Source', group=groupFiboBands)
offset = input.int(0, 'Offset', minval = -500, maxval = 500, group=groupFiboBands)

fibo1 = input(defval = 1.618, title = 'Fibonacci Ratio 1', group=groupFiboBands)
fibo2 = input(defval = 2.618, title = 'Fibonacci Ratio 2', group=groupFiboBands)
fibo3 = input(defval = 4.236, title = 'Fibonacci Ratio 3', group=groupFiboBands)

fiboBuy = input.string(options = ['Fibo 1', 'Fibo 2', 'Fibo 3'], defval = 'Fibo 1', title = 'Fibonacci Buy', group=groupFiboBands)
fiboSell = input.string(options = ['Fibo 1', 'Fibo 2', 'Fibo 3'], defval = 'Fibo 1', title = 'Fibonacci Sell', group=groupFiboBands)

showSignals = input.bool(true, title="Show Signals", group=groupFiboBands)
signalOffset = input.int(5, title="Signal Vertical Offset", group=groupFiboBands)

// --------------------    Trade Management Inputs    -------------------- //
groupTradeManagement = "Trade Management"
useProfitPerc    = input.bool(false, title="Enable Profit Target", group=groupTradeManagement)
takeProfitPerc  = input.float(1.0, title="Take Profit (%)", step=0.1, group=groupTradeManagement)
useStopLossPerc    = input.bool(false, title="Enable Stop Loss", group=groupTradeManagement)
stopLossPerc    = input.float(1.0, title="Stop Loss (%)", step=0.1, group=groupTradeManagement)

// --------------------    Time Filter Inputs    -------------------- //
groupTimeOfDayFilter = "Time of Day Filter"
useTimeFilter1  = input.bool(false, title="Enable Time Filter 1", group=groupTimeOfDayFilter)
startHour1      = input.int(0, title="Start Hour (24-hour format)", minval=0, maxval=23, group=groupTimeOfDayFilter)
startMinute1    = input.int(0, title="Start Minute", minval=0, maxval=59, group=groupTimeOfDayFilter)
endHour1        = input.int(23, title="End Hour (24-hour format)", minval=0, maxval=23, group=groupTimeOfDayFilter)
endMinute1      = input.int(45, title="End Minute", minval=0, maxval=59, group=groupTimeOfDayFilter)
closeAtEndTimeWindow = input.bool(false, title="Close Trades at End of Time Window", group=groupTimeOfDayFilter)

// --------------------    Trading Window    -------------------- //
isWithinTradingWindow(startHour, startMinute, endHour, endMinute) =>
    nyTime            = timestamp("America/New_York", year, month, dayofmonth, hour, minute)
    nyHour            = hour(nyTime)
    nyMinute          = minute(nyTime)
    timeInMinutes     = nyHour * 60 + nyMinute
    startInMinutes    = startHour * 60 + startMinute
    endInMinutes      = endHour * 60 + endMinute
    timeInMinutes    >= startInMinutes and timeInMinutes <= endInMinutes

timeCondition =  (useTimeFilter1 ? isWithinTradingWindow(startHour1, startMinute1, endHour1, endMinute1) : true)

// Check if the current bar is the last one within the specified time window
isEndOfTimeWindow() =>
    nyTime            = timestamp("America/New_York", year, month, dayofmonth, hour, minute)
    nyHour            = hour(nyTime)
    nyMinute          = minute(nyTime)
    timeInMinutes     = nyHour * 60 + nyMinute
    endInMinutes      = endHour1 * 60 + endMinute1
    timeInMinutes == endInMinutes

// Logic to close trades if the time window ends
if timeCondition and closeAtEndTimeWindow and isEndOfTimeWindow()
    strategy.close_all(comment="Closing trades at end of time window")

// # ========================================================================= #
// #                       // Calculations //
// # ========================================================================= #

sma = ta.sma(src, length)
atr = ta.atr(length)

ratio1 = atr * fibo1
ratio2 = atr * fibo2
ratio3 = atr * fibo3

upper3 = sma + ratio3
upper2 = sma + ratio2
upper1 = sma + ratio1

lower1 = sma - ratio1
lower2 = sma - ratio2
lower3 = sma - ratio3

// # ========================================================================= #
// #                       // Signal Logic //
// # ========================================================================= #

// --------------------    Entry Logic    -------------------- //
targetBuy = fiboBuy == 'Fibo 1' ? upper1 : fiboBuy == 'Fibo 2' ? upper2 : upper3
buy = low < targetBuy and high > targetBuy

// --------------------    User-Defined Exit Logic    -------------------- //
targetSell = fiboSell == 'Fibo 1' ? lower1 : fiboSell == 'Fibo 2' ? lower2 : lower3
sell = low < targetSell and high > targetSell

// # ========================================================================= #
// #                       // Strategy Management //
// # ========================================================================= #

// --------------------    Trade Execution Flags    -------------------- //
var bool buyExecuted = false
var bool sellExecuted = false

float labelOffset = ta.atr(14) * signalOffset

// --------------------    Buy Logic    -------------------- //
if buy and timeCondition 
    if useProfitPerc or useStopLossPerc
        strategy.entry("Buy", strategy.long, stop=(useStopLossPerc ? close * (1 - stopLossPerc / 100) : na), limit=(useProfitPerc ? close * (1 + takeProfitPerc / 100) : na))
    else
        strategy.entry("Buy", strategy.long)

    if showSignals and not buyExecuted
        buyExecuted := true  
        sellExecuted := false  
        label.new(bar_index, high - labelOffset, "◭", style=label.style_label_up, color = color.rgb(119, 0, 255, 20), textcolor=color.white)

// --------------------    Sell Logic    -------------------- //
if sell and timeCondition
    if useProfitPerc or useStopLossPerc
        strategy.entry("Sell", strategy.short, stop=(useStopLossPerc ? close * (1 + stopLossPerc / 100) : na), limit=(useProfitPerc ? close * (1 - takeProfitPerc / 100) : na))
    else
        strategy.entry("Sell", strategy.short)

    if showSignals and not sellExecuted
        sellExecuted := true 
        buyExecuted := false  
        label.new(bar_index, low + labelOffset, "⧩", style=label.style_label_down, color = color.rgb(255, 85, 0, 20), textcolor=color.white)



// # ========================================================================= #
// #                         // Plots and Charts //
// # ========================================================================= #

plot(sma, style = plot.style_line, title = 'Basis', color = color.new(color.orange, 0), linewidth = 2, offset = offset)

upp3 = plot(upper3, title = 'Upper 3', color = color.new(color.teal, 90), offset = offset)
upp2 = plot(upper2, title = 'Upper 2', color = color.new(color.teal, 60), offset = offset)
upp1 = plot(upper1, title = 'Upper 1', color = color.new(color.teal, 30), offset = offset)

low1 = plot(lower1, title = 'Lower 1', color = color.new(color.teal, 30), offset = offset)
low2 = plot(lower2, title = 'Lower 2', color = color.new(color.teal, 60), offset = offset)
low3 = plot(lower3, title = 'Lower 3', color = color.new(color.teal, 90), offset = offset)

fill(upp3, low3, title = 'Background', color = color.new(color.teal, 95))