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

موافقت پذیر فبونیکی بولنگر بینڈس حکمت عملی تجزیہ

مصنف:چاؤ ژانگ، تاریخ: 2025-01-06 16:41:48
ٹیگز:اے ٹی آربی بیایس ایم اےایف آئی بی

img

جائزہ

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

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

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

حکمت عملی کے فوائد

  1. مضبوط موافقت: اے ٹی آر کے ذریعہ بینڈ کی چوڑائی کو متحرک طور پر ایڈجسٹ کرتا ہے ، مختلف مارکیٹ کے حالات میں بہتر موافقت رکھتا ہے
  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))


متعلقہ

مزید