
یہ ایک سمارٹ ٹریڈنگ حکمت عملی ہے جس میں بریک اسٹرکچر (BOS) اور ٹرانزیکشن حجم کی تصدیق کی گئی ہے۔ یہ حکمت عملی قیمتوں کی نگرانی کے ذریعے ابتدائی اونچائی یا نچلے حصے کو توڑ دیتی ہے اور ٹرانزیکشن حجم کو بڑھانے کے ساتھ مل کر ٹریڈنگ سگنل بناتی ہے۔ حکمت عملی میں متعدد شرائط کی توثیق کا طریقہ کار استعمال کیا گیا ہے ، جس میں لگاتار تصدیق کی تعداد کی ضرورت ہوتی ہے اور متحرک اسٹاپ نقصان کی ترتیب بھی شامل ہے ، تاکہ تجارت کی وشوسنییتا اور خطرے پر قابو پانے کی صلاحیت کو بہتر بنایا جاسکے۔
حکمت عملی کی بنیادی منطق میں درج ذیل کلیدی عناصر شامل ہیں:
یہ ایک حکمت عملی کا نظام ہے جو تکنیکی تجزیہ کے کلاسیکی نظریات اور جدید مقداری تجارتی طریقوں کو جوڑتا ہے۔ متعدد شرائط کی توثیق اور سخت خطرے کے کنٹرول کے ذریعہ ، حکمت عملی میں بہتر استحکام اور وشوسنییتا ہے۔ اگرچہ کچھ پہلوؤں کو بہتر بنانے کی ضرورت ہے ، لیکن مجموعی طور پر فریم ورک کا ڈیزائن معقول ہے اور اس کی عملی جنگ میں اطلاق کی اچھی قیمت ہے۔ تجویز کردہ اصلاحی سمت کے ذریعہ ، حکمت عملی کی کارکردگی کو مزید بہتر بنایا جاسکتا ہے۔
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("BOS and Volume Strategy with Confirmation", overlay=true)
// Parameters
swingLength = input.int(20, title="Swing Length", minval=1)
volumeMultiplier = input.float(1.1, title="Volume Multiplier", step=0.1)
volumeSMA_length = input.int(10, title="Volume SMA Length", minval=1)
takeProfitPercentage = input.float(0.02, title="Take Profit Percentage", step=0.01)
stopLossPercentage = input.float(0.15, title="Stop Loss Percentage", step=0.01) // New parameter for stop loss
atrLength = input.int(14, title="ATR Length")
confirmationBars = input.int(2, title="Confirmation Bars", minval=1)
// Calculate Swing Highs and Lows
swingHigh = ta.highest(high, swingLength)[1]
swingLow = ta.lowest(low, swingLength)[1]
// Calculate Volume Moving Average
volumeSMA = ta.sma(volume, volumeSMA_length)
highVolume = volume > (volumeSMA * volumeMultiplier)
// Break of Structure Detection with Confirmation
var int bullishCount = 0
var int bearishCount = 0
if (close > swingHigh and highVolume)
bullishCount := bullishCount + 1
bearishCount := 0
else if (close < swingLow and highVolume)
bearishCount := bearishCount + 1
bullishCount := 0
else
bullishCount := 0
bearishCount := 0
bullishBOSConfirmed = (bullishCount >= confirmationBars)
bearishBOSConfirmed = (bearishCount >= confirmationBars)
// Entry and Exit Conditions
var float entryPrice = na // Declare entryPrice as a variable
if (bullishBOSConfirmed and strategy.position_size <= 0)
entryPrice := close // Use ':=' for assignment
strategy.entry("Long", strategy.long)
if (strategy.position_size > 0)
// Calculate stop loss price
stopLossPrice = entryPrice * (1 - stopLossPercentage)
strategy.exit("Take Profit Long", from_entry="Long", limit=entryPrice * (1 + takeProfitPercentage), stop=stopLossPrice)
if (bearishBOSConfirmed and strategy.position_size >= 0)
entryPrice := close // Use ':=' for assignment
strategy.entry("Short", strategy.short)
if (strategy.position_size < 0)
// Calculate stop loss price
stopLossPrice = entryPrice * (1 + stopLossPercentage)
strategy.exit("Take Profit Short", from_entry="Short", limit=entryPrice * (1 - takeProfitPercentage), stop=stopLossPrice)
// Plot Swing Highs and Lows for Visualization
plot(swingHigh, title="Swing High", color=color.green, linewidth=1)
plot(swingLow, title="Swing Low", color=color.red, linewidth=1)