یہ متحرک ٹرینڈ لائنز اور حجم کی تصدیق پر مبنی ایک طویل عرصے سے صرف بریک آؤٹ ٹریڈنگ حکمت عملی ہے۔ حکمت عملی حقیقی وقت میں قیمت کی نقل و حرکت کو ٹریک کرکے اہم سوئنگ ہائی کی نشاندہی کرتی ہے اور متحرک طور پر ٹرینڈ لائنز کی تعمیر کرتی ہے۔ جب قیمت نمایاں حجم کے ساتھ اوپری ٹرینڈ لائن سے تجاوز کرتی ہے تو ، حکمت عملی فیصد پر مبنی منافع ، اسٹاپ نقصان ، اور ٹریلنگ اسٹاپ میکانزم کے ذریعے خطرے کا انتظام کرتے ہوئے طویل پوزیشن میں داخل ہوتی ہے۔
بنیادی منطق تین اہم ستونوں پر مبنی ہے: متحرک ٹرینڈ لائن کی تعمیر ، حجم کی تصدیق ، اور رسک مینجمنٹ سسٹم۔ سب سے پہلے ، حکمت عملی ta.pivothigh فنکشن کا استعمال کرتے ہوئے متحرک طور پر قیمت کے جھولوں کی اونچائیوں کی نشاندہی کرتی ہے اور دو حالیہ جھولوں کی اونچائیوں سے حساب کتاب کرنے والے ڈھلوان اور انٹرسیپٹ کی بنیاد پر اوپری ٹرینڈ لائنز کی تعمیر کرتی ہے۔ دوسرا ، انٹری سگنلز کے ساتھ بریک آؤٹ کی موزونیت کو یقینی بنانے کے لئے 20 پیریڈ اوسط سے 1.5 گنا زیادہ حجم ہونا ضروری ہے۔ آخر میں ، حکمت عملی منافع میں مقفل کرنے کے لئے 1٪ ٹریلنگ اسٹاپ کے ساتھ مقررہ فیصد منافع (2٪) اور اسٹاپ نقصان (1٪) استعمال کرتی ہے۔
یہ ایک اچھی طرح سے ڈیزائن کردہ رجحان کی پیروی کرنے والی حکمت عملی ہے جس میں مضبوط منطق ہے۔ متحرک رجحان لائنوں اور حجم کی تصدیق کے امتزاج کے ساتھ ساتھ ایک جامع رسک مینجمنٹ سسٹم کے ذریعہ ، حکمت عملی میں اچھی موافقت اور قابل اعتماد کا مظاہرہ کیا گیا ہے۔ اگرچہ اس میں کچھ مارکیٹ انحصار ہے ، لیکن تجویز کردہ اصلاح کی سمتوں کے ذریعے بہتری کی گنجائش ہے۔ تاجروں کو مشورہ دیا جاتا ہے کہ وہ براہ راست نفاذ سے پہلے پیرامیٹر کی مکمل اصلاح اور بیک ٹیسٹنگ کریں۔
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-09 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Long Only Strategy with Dynamic Trend Lines, Fixed TP/SL, and Trailing SL+", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, pyramiding=0, // Prevent multiple entries calc_on_order_fills=true, calc_on_every_tick=true) // === Parameters === swingThreshold = input.int(5, title="Swing Detection Threshold") tpPercent = input.float(2.0, title="Take Profit (%)") slPercent = input.float(1.0, title="Stop Loss (%)") trailPercent = input.float(1.0, title="Trailing Stop (%)") volumeThresholdMultiplier = input.float(1.5, title="Volume Spike Threshold (x MA)") // === Volume Indicator === avgVolume = ta.sma(volume, 20) volumeSpike = volume > (avgVolume * volumeThresholdMultiplier) // === Detect Swing High === isSwingHigh = ta.pivothigh(high, swingThreshold, swingThreshold) // Variables to store swing highs var float swingHigh1 = na var float swingHigh2 = na var int swingHighBar1 = na var int swingHighBar2 = na // Update swing highs if (isSwingHigh) swingHigh2 := swingHigh1 swingHighBar2 := swingHighBar1 swingHigh1 := high[swingThreshold] swingHighBar1 := bar_index - swingThreshold // === Calculate Upper Trend Line === var float upperSlope = na var float upperIntercept = na // Calculate slope and intercept for upper trend line if there are two swing highs if (not na(swingHigh1) and not na(swingHigh2)) deltaX = swingHighBar1 - swingHighBar2 if (deltaX != 0) upperSlope := (swingHigh1 - swingHigh2) / deltaX upperIntercept := swingHigh1 - (upperSlope * swingHighBar1) else upperSlope := 0 upperIntercept := swingHigh1 // Calculate trend line price for the current bar var float upperTrendPrice = na if (not na(upperSlope) and not na(upperIntercept)) upperTrendPrice := upperSlope * bar_index + upperIntercept // Calculate trend line price for the previous bar var float upperTrendPrice_prev = na if (not na(upperSlope) and not na(upperIntercept)) upperTrendPrice_prev := upperSlope * (bar_index - 1) + upperIntercept // === Buy Condition Based on Trend Line Breakout === // Buy Signal: Price breaks above Upper Trend Line with volume spike breakoutBuyCondition = (not na(upperTrendPrice)) and (close > upperTrendPrice) and (not na(upperTrendPrice_prev)) and (close[1] <= upperTrendPrice_prev) and volumeSpike // === Manage Single Position === // Calculate Take Profit and Stop Loss levels based on percentage longTakeProfit = close * (1 + tpPercent / 100) longStopLoss = close * (1 - slPercent / 100) // Calculate Trailing Stop as trail_offset (in price) trail_offset = close * (trailPercent / 100) // Execute Trade with Single Position Management if (breakoutBuyCondition) // Close existing short position if any if (strategy.position_size < 0) strategy.close("Sell") // Open long position strategy.entry("Buy", strategy.long) // Set Take Profit, Stop Loss, and Trailing Stop Loss for long position strategy.exit("Take Profit Buy", from_entry="Buy", limit=longTakeProfit, stop=longStopLoss, trail_offset=trail_offset) // Plot Buy Signal plotshape(breakoutBuyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")