یہ حکمت عملی بولنگر بینڈ کو ٹریڈنگ کے لئے ٹرپل سپر ٹرینڈ اشارے کے ساتھ جوڑتی ہے۔ یہ اتار چڑھاؤ کی حد کی تشخیص کے لئے بولنگر بینڈ اور رجحان کی تصدیق کے لئے ٹرپل سپر ٹرینڈ کا استعمال کرتے ہوئے ایک مضبوط رجحان کی پیروی کرنے والا نظام تشکیل دیتا ہے۔ بولنگر بینڈ انتہائی قیمت کی نقل و حرکت کی نشاندہی کرتے ہیں ، جبکہ ٹرپل سپر ٹرینڈ مختلف پیرامیٹر کی ترتیبات کے ذریعہ رجحان کی سمت کی متعدد تصدیق فراہم کرتا ہے۔ تجارت صرف اس وقت عمل میں آتی ہے جب تمام سگنل سیدھ میں آتے ہیں ، غلط سگنل کے خطرے کو کم کرتے ہیں۔ یہ امتزاج تجارتی وشوسنییتا کو بڑھانے کے ساتھ ساتھ رجحان کی پیروی کے فوائد کو برقرار رکھتا ہے۔
بنیادی منطق میں مندرجہ ذیل اہم اجزاء شامل ہیں:
یہ بولنگر بینڈ اور ٹرپل سپر ٹرینڈ کو جوڑنے والی رجحان کی پیروی کرنے والی حکمت عملی ہے ، جس سے متعدد تکنیکی اشارے کی تصدیق کے ذریعے تجارتی وشوسنییتا میں اضافہ ہوتا ہے۔ حکمت عملی میں رجحان کی گرفتاری اور رسک کنٹرول کی مضبوط صلاحیت کا مظاہرہ کیا گیا ہے ، لیکن مارکیٹ کے حالات اس کی کارکردگی کو نمایاں طور پر متاثر کرتے ہیں۔ مسلسل اصلاح اور اصلاح کے ذریعے ، حکمت عملی مختلف مارکیٹ کے حالات میں مستحکم کارکردگی برقرار رکھ سکتی ہے۔ براہ راست تجارت سے پہلے مکمل بیک ٹیسٹنگ اور پیرامیٹر کی اصلاح کرنے کی سفارش کی جاتی ہے ، اور اصل مارکیٹ کے حالات کی بنیاد پر مناسب ایڈجسٹمنٹ کی جاتی ہے۔
//@version=5 strategy("Demo GPT - Bollinger + Triple Supertrend Combo", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3) // ------------------------------- // User Input for Date Range // ------------------------------- startDate = input(title="Start Date", defval=timestamp("2018-01-01 00:00:00")) endDate = input(title="End Date", defval=timestamp("2069-12-31 23:59:59")) // ------------------------------- // Bollinger Band Inputs // ------------------------------- lengthBB = input.int(20, "Bollinger Length") multBB = input.float(2.0, "Bollinger Multiplier") // ------------------------------- // Supertrend Inputs for 3 lines // ------------------------------- // Line 1 atrPeriod1 = input.int(10, "ATR Length (Line 1)", minval = 1) factor1 = input.float(3.0, "Factor (Line 1)", minval = 0.01, step = 0.01) // Line 2 atrPeriod2 = input.int(10, "ATR Length (Line 2)", minval = 1) factor2 = input.float(4.0, "Factor (Line 2)", minval = 0.01, step = 0.01) // Line 3 atrPeriod3 = input.int(10, "ATR Length (Line 3)", minval = 1) factor3 = input.float(5.0, "Factor (Line 3)", minval = 0.01, step = 0.01) // ------------------------------- // Bollinger Band Calculation // ------------------------------- basis = ta.sma(close, lengthBB) dev = multBB * ta.stdev(close, lengthBB) upperBand = basis + dev lowerBand = basis - dev // Plot Bollinger Bands plot(upperBand, "Upper BB", color=color.new(color.blue, 0)) plot(basis, "Basis", color=color.new(color.gray, 0)) plot(lowerBand, "Lower BB", color=color.new(color.blue, 0)) // ------------------------------- // Supertrend Calculation Line 1 // ------------------------------- [supertrendLine1, direction1] = ta.supertrend(factor1, atrPeriod1) supertrendLine1 := barstate.isfirst ? na : supertrendLine1 upTrend1 = plot(direction1 < 0 ? supertrendLine1 : na, "Up Trend 1", color = color.green, style = plot.style_linebr) downTrend1 = plot(direction1 < 0 ? na : supertrendLine1, "Down Trend 1", color = color.red, style = plot.style_linebr) // ------------------------------- // Supertrend Calculation Line 2 // ------------------------------- [supertrendLine2, direction2] = ta.supertrend(factor2, atrPeriod2) supertrendLine2 := barstate.isfirst ? na : supertrendLine2 upTrend2 = plot(direction2 < 0 ? supertrendLine2 : na, "Up Trend 2", color = color.new(color.green, 0), style = plot.style_linebr) downTrend2 = plot(direction2 < 0 ? na : supertrendLine2, "Down Trend 2", color = color.new(color.red, 0), style = plot.style_linebr) // ------------------------------- // Supertrend Calculation Line 3 // ------------------------------- [supertrendLine3, direction3] = ta.supertrend(factor3, atrPeriod3) supertrendLine3 := barstate.isfirst ? na : supertrendLine3 upTrend3 = plot(direction3 < 0 ? supertrendLine3 : na, "Up Trend 3", color = color.new(color.green, 0), style = plot.style_linebr) downTrend3 = plot(direction3 < 0 ? na : supertrendLine3, "Down Trend 3", color = color.new(color.red, 0), style = plot.style_linebr) // ------------------------------- // Middle line for fill (used as a reference line) // ------------------------------- bodyMiddle = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle", display = display.none) // Fill areas for each supertrend line fill(bodyMiddle, upTrend1, color.new(color.green, 90), fillgaps = false) fill(bodyMiddle, downTrend1, color.new(color.red, 90), fillgaps = false) fill(bodyMiddle, upTrend2, color.new(color.green, 90), fillgaps = false) fill(bodyMiddle, downTrend2, color.new(color.red, 90), fillgaps = false) fill(bodyMiddle, upTrend3, color.new(color.green, 90), fillgaps = false) fill(bodyMiddle, downTrend3, color.new(color.red, 90), fillgaps = false) // Alerts for the first line only (as an example) alertcondition(direction1[1] > direction1, title='Downtrend to Uptrend (Line 1)', message='Supertrend Line 1 switched from Downtrend to Uptrend') alertcondition(direction1[1] < direction1, title='Uptrend to Downtrend (Line 1)', message='Supertrend Line 1 switched from Uptrend to Downtrend') alertcondition(direction1[1] != direction1, title='Trend Change (Line 1)', message='Supertrend Line 1 switched trend') // ------------------------------- // Strategy Logic // ------------------------------- inDateRange = true // Long Conditions longEntryCondition = inDateRange and close > upperBand and direction1 < 0 and direction2 < 0 and direction3 < 0 longExitCondition = direction1 > 0 or direction2 > 0 or direction3 > 0 // Short Conditions shortEntryCondition = inDateRange and close < lowerBand and direction1 > 0 and direction2 > 0 and direction3 > 0 shortExitCondition = direction1 < 0 or direction2 < 0 or direction3 < 0 // Execute Long Trades if longEntryCondition and strategy.position_size <= 0 strategy.entry("Long", strategy.long) if strategy.position_size > 0 and longExitCondition strategy.close("Long") // Execute Short Trades if shortEntryCondition and strategy.position_size >= 0 strategy.entry("Short", strategy.short) if strategy.position_size < 0 and shortExitCondition strategy.close("Short")