یہ حکمت عملی دوہری ای ایم اے اور اے ٹی آر متحرک اسٹاپ نقصان پر مبنی ایک رجحان کے بعد ٹریڈنگ کا نظام ہے۔ یہ مارکیٹ کے رجحانات کی نشاندہی کرنے کے لئے 38 مدت اور 62 مدت کے توسیعی متحرک اوسط (ای ایم اے) کا استعمال کرتا ہے ، تیز رفتار ای ایم اے کے ساتھ قیمت کراس اوور کے ذریعے انٹری سگنل کا تعین کرتا ہے ، اور متحرک اسٹاپ نقصان کے انتظام کے لئے اے ٹی آر اشارے کو شامل کرتا ہے۔ یہ حکمت عملی مختلف خطرہ ترجیحات والے تاجروں کو ایڈجسٹ کرنے کے لئے جارحانہ اور قدامت پسند دونوں تجارتی طریقوں کی پیش کش کرتی ہے۔
بنیادی منطق مندرجہ ذیل اہم عناصر پر مبنی ہے: رجحان کا تعین: مارکیٹ کے رجحان کی نشاندہی 38 پیریڈ اور 62 پیریڈ کے ای ایم اے کی متعلقہ پوزیشن کے ذریعے کی جاتی ہے۔ جب تیز ای ایم اے سست ای ایم اے سے اوپر ہوتا ہے تو اپ ٹرینڈ کی تصدیق ہوتی ہے ، اور اس کے برعکس۔ انٹری سگنل: لانگ سگنل اس وقت پیدا ہوتے ہیں جب قیمت اپ ٹرینڈز کے دوران تیز ای ایم اے سے اوپر ہوتی ہے۔ شارٹ سگنل اس وقت ہوتے ہیں جب قیمت ڈاؤن ٹرینڈز کے دوران تیز ای ایم اے سے نیچے ہوتی ہے۔ 3۔ رسک مینجمنٹ: اے ٹی آر پر مبنی متحرک اسٹاپ نقصان کا نظام استعمال کرتا ہے جو قیمت کے موافق ہونے کے ساتھ ہی اسٹاپ کی سطح کو ایڈجسٹ کرتا ہے ، جو قبل از وقت باہر نکلنے سے بچتے ہوئے منافع کی حفاظت کرتا ہے۔ مقررہ فیصد اسٹاپ نقصان اور منافع کے اہداف کو بھی نافذ کیا جاتا ہے۔
یہ حکمت عملی کلاسیکی ڈوئل ای ایم اے سسٹم کو جدید متحرک اسٹاپ نقصان کی تکنیکوں کے ساتھ جوڑ کر ایک مکمل رجحان کی پیروی کرنے والا تجارتی نظام تیار کرتی ہے۔ اس کی طاقت جامع رسک کنٹرول اور اعلی موافقت میں ہے۔ تاہم ، تاجروں کو ابھی بھی پیرامیٹرز کو بہتر بنانے اور مخصوص مارکیٹ کے حالات کے مطابق خطرات کا انتظام کرنے کی ضرورت ہے۔ تجویز کردہ اصلاح کی سمتوں کے ذریعے ، حکمت عملی کی استحکام اور منافع کو مزید بڑھا سکتا ہے۔
/*backtest start: 2024-12-10 00:00:00 end: 2025-01-08 08:00:00 period: 4h basePeriod: 4h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © aalapsharma //@version=5 strategy(title="CM_SlingShotSystem - Strategy", shorttitle="SlingShotSys_Enhanced_v5", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=1) // Inputs sae = input.bool(true, "Show Aggressive Entry Bars? (Highlight only)") sce = input.bool(true, "Show Conservative Entry Bars? (Highlight only)") st = input.bool(true, "Show Trend Arrows (Top/Bottom)?") def = input.bool(false, "(Unused) Only Choose 1 - Either Conservative Entry Arrows or 'B'-'S' Letters") pa = input.bool(true, "Show Conservative Entry Arrows?") sl = input.bool(false, "Show 'B'-'S' Letters?") useStopLoss = input.bool(true, "Use Stop-Loss?") stopLossPerc = input.float(5.0, "Stop-Loss (%)", step=0.1) useTakeProfit = input.bool(true, "Use Take-Profit?") takeProfitPerc = input.float(20.0, "Take-Profit (%)", step=0.1) useTrailingStop = input.bool(false, "Use ATR Trailing Stop?") atrLength = input.int(14, "ATR Length", minval=1) atrMult = input.float(2.0, "ATR Multiple for Trailing Stop", step=0.1) // Calculations emaSlow = ta.ema(close, 62) emaFast = ta.ema(close, 38) upTrend = emaFast >= emaSlow downTrend = emaFast < emaSlow pullbackUpT() => emaFast > emaSlow and close < emaFast pullbackDnT() => emaFast < emaSlow and close > emaFast entryUpT() => emaFast > emaSlow and close[1] < emaFast and close > emaFast entryDnT() => emaFast < emaSlow and close[1] > emaFast and close < emaFast entryUpTrend = entryUpT() ? 1 : 0 entryDnTrend = entryDnT() ? 1 : 0 atrValue = ta.atr(atrLength) // Trailing Stop Logic (Improved) var float trailStopLong = na var float trailStopShort = na if (strategy.position_size > 0) trailStopLong := math.max(close - (atrValue * atrMult), nz(trailStopLong[1], close)) trailStopLong := strategy.position_avg_price > trailStopLong ? strategy.position_avg_price : trailStopLong else trailStopLong := na if (strategy.position_size < 0) trailStopShort := math.min(close + (atrValue * atrMult), nz(trailStopShort[1], close)) trailStopShort := strategy.position_avg_price < trailStopShort ? strategy.position_avg_price : trailStopShort else trailStopShort := na // Plotting col = emaFast > emaSlow ? color.lime : emaFast < emaSlow ? color.red : color.yellow p1 = plot(emaSlow, "Slow MA (62)", linewidth=4, color=col) p2 = plot(emaFast, "Fast MA (38)", linewidth=2, color=col) fill(p1, p2, color=color.silver, transp=50) barcolor((sae and pullbackUpT()) ? color.yellow : (sae and pullbackDnT()) ? color.yellow : na) barcolor((sce and entryUpT()) ? color.aqua : (sce and entryDnT()) ? color.aqua : na) plotshape(st and upTrend, title="Trend UP", style=shape.triangleup, location=location.bottom, color=color.lime) plotshape(st and downTrend, title="Trend DOWN", style=shape.triangledown, location=location.top, color=color.red) plotarrow((pa and entryUpTrend == 1) ? 1 : na, title="Up Entry Arrow", colorup=color.lime, maxheight=30, minheight=30) plotarrow((pa and entryDnTrend == 1) ? -1 : na, title="Down Entry Arrow", colordown=color.red, maxheight=30, minheight=30) plotchar(sl and entryUpTrend ? (low - ta.tr) : na, title="Buy Entry (Letter)", char='B', location=location.absolute, color=color.lime) plotchar(sl and entryDnTrend ? (high + ta.tr) : na, title="Short Entry (Letter)", char='S', location=location.absolute, color=color.red) plot(useTrailingStop and strategy.position_size > 0 ? trailStopLong : na, "Trailing Stop Long", color=color.green, style=plot.style_linebr) plot(useTrailingStop and strategy.position_size < 0 ? trailStopShort : na, "Trailing Stop Short", color=color.red, style=plot.style_linebr) // Function to calculate stop and limit prices f_calcStops(_entryPrice, _isLong) => _stopLoss = _isLong ? _entryPrice * (1.0 - stopLossPerc / 100.0) : _entryPrice * (1.0 + stopLossPerc / 100.0) _takeProfit = _isLong ? _entryPrice * (1.0 + takeProfitPerc / 100.0) : _entryPrice * (1.0 - takeProfitPerc / 100.0) [_stopLoss, _takeProfit] // Entry and Exit Logic (Simplified using strategy.close) if (entryUpT() and strategy.position_size == 0) strategy.entry("Long", strategy.long) if (entryDnT() and strategy.position_size == 0) strategy.entry("Short", strategy.short) // Exit conditions based on Stop-loss and Take-profit [slPrice, tpPrice] = f_calcStops(strategy.position_avg_price, strategy.position_size > 0) if (strategy.position_size > 0) strategy.exit("Exit Long", "Long", stop=slPrice, limit=tpPrice, trail_price = trailStopLong, trail_offset = atrValue * atrMult) if (strategy.position_size < 0) strategy.exit("Exit Short", "Short", stop=slPrice, limit=tpPrice, trail_price = trailStopShort, trail_offset = atrValue * atrMult) // Close opposite position on new entry signal if (entryUpT() and strategy.position_size < 0) strategy.close("Short", comment="Close Short on Long Signal") if (entryDnT() and strategy.position_size > 0) strategy.close("Long", comment="Close Long on Short Signal")