
اس حکمت عملی میں برن بینڈ اور ٹرپل سپر ٹرینڈ اشارے کے ساتھ مل کر ٹریڈنگ کا طریقہ استعمال کیا گیا ہے۔ برن بینڈ کے اتار چڑھاؤ کے فاصلے کے فیصلے اور ٹرپل سپر ٹرینڈ کی رجحان کی تصدیق کے ذریعے ، ایک مضبوط رجحان سے باخبر رہنے کا نظام تشکیل دیا گیا ہے۔ برن بینڈ قیمتوں میں انتہائی اتار چڑھاؤ کی شناخت کے لئے استعمال کیا جاتا ہے ، جبکہ ٹرپل سپر ٹرینڈ مختلف پیرامیٹرز کی ترتیب کے ذریعہ رجحان کی سمت کی متعدد تصدیق فراہم کرتا ہے۔ جب تمام سگنل متفق ہوں تو تجارت کریں ، تاکہ جعلی سگنل کا خطرہ کم ہوجائے۔ یہ مجموعہ دونوں رجحانات کی پیروی کے فوائد کو برقرار رکھتا ہے اور تجارت کی وشوسنییتا میں اضافہ کرتا ہے۔
حکمت عملی کی بنیادی منطق میں درج ذیل اہم حصے شامل ہیں:
یہ ایک رجحان سے باخبر رہنے کی حکمت عملی ہے جس میں برن بینڈ اور ٹرپل سپر ٹرینڈ کا امتزاج کیا گیا ہے تاکہ متعدد تکنیکی اشارے کی تصدیق کے ذریعہ تجارت کی وشوسنییتا کو بہتر بنایا جاسکے۔ حکمت عملی میں رجحانات کی گرفتاری کی مضبوط صلاحیت اور خطرے پر قابو پانے کی صلاحیت ہے ، لیکن حکمت عملی کی کارکردگی پر مارکیٹ کے ماحول کے اثرات پر بھی توجہ دینے کی ضرورت ہے۔ مسلسل اصلاح اور بہتری کے ذریعہ ، حکمت عملی کو مختلف مارکیٹ کے حالات میں مستحکم کارکردگی برقرار رکھنے کی امید ہے۔
//@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")