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