ڈبل انڈیکس موونگ اوسط ٹرینڈ ٹریکنگ اور اتار چڑھاؤ ذہین فلٹرنگ حکمت عملی

EMA ATR SAR 趋势跟踪 波动率过滤 区间检测 动态风险管理 突破交易
تخلیق کی تاریخ: 2025-08-01 09:41:48 آخر میں ترمیم کریں: 2025-08-01 09:41:48
کاپی: 0 کلکس کی تعداد: 232
2
پر توجہ دیں
319
پیروکار

ڈبل انڈیکس موونگ اوسط ٹرینڈ ٹریکنگ اور اتار چڑھاؤ ذہین فلٹرنگ حکمت عملی ڈبل انڈیکس موونگ اوسط ٹرینڈ ٹریکنگ اور اتار چڑھاؤ ذہین فلٹرنگ حکمت عملی

جائزہ

یہ حکمت عملی ایک اعلی درجے کی رجحان ٹریکنگ سسٹم ہے جس میں دوہری اشاریہ حرکت پذیر اوسط ((EMA) فلٹرز کو ذہین وقفے اور شور کا پتہ لگانے کے طریقہ کار کے ساتھ ملایا گیا ہے ، جس کا مقصد واضح ، قابل عمل تجارتی سگنل فراہم کرنا ہے۔ اس کا بنیادی ڈیزائن خیال یہ ہے کہ وہ اتار چڑھاؤ کی منڈیوں سے بچنے ، تجارت کی درستگی کو بہتر بنانے اور مارکیٹ کے مختلف حالات کے مطابق ڈھالنے کے قابل ہو۔ یہ حکمت عملی ای ایم اے کی اعلی لائن اور ای ایم اے کی کم لائن کے کراس سے رجحان کی سمت کا فیصلہ کرتی ہے ، جبکہ زون فلٹر اور اتار چڑھاؤ کے فلٹر کا استعمال کرتے ہوئے کراس ڈسک یا کم اتار چڑھاؤ والے ماحول میں تجارت سے بچنے کے لئے ، جس سے تجارت کی کامیابی میں نمایاں اضافہ ہوتا ہے۔

حکمت عملی کا اصول

اس حکمت عملی کا بنیادی طریقہ کار مندرجہ ذیل اہم اجزاء پر مبنی ہے:

  1. ڈبل ای ایم اے فلٹرنگ سسٹمحکمت عملی: مارکیٹ کے رجحانات کی نشاندہی کرنے کے لئے دو اشاریہ متحرک اوسط ((اعلی قیمت EMA اور کم قیمت EMA) کا استعمال کریں۔ جب قیمت ایک ہی وقت میں دو EMA لائنوں کے اوپر ہوتی ہے تو ، ایک سے زیادہ سگنل پیدا ہوتا ہے۔ جب قیمت ایک ہی وقت میں دو EMA لائنوں کے نیچے ہوتی ہے تو ، ایک سے کم سگنل پیدا ہوتا ہے۔ اس دوہری تصدیق کے طریقہ کار نے جھوٹے ٹوٹ پھوٹ کو مؤثر طریقے سے کم کردیا ہے۔

  2. بینڈ ٹسٹنگ میکانزم: حکمت عملی میں قیمت کی حد کے فیصد پر مبنی بینچ کی شناخت کا الگورتھم استعمال کیا جاتا ہے ، اور جب مارکیٹ افقی صفائی کے مرحلے میں داخل ہوتا ہے (یعنی قیمت کی اتار چڑھاؤ کی حد مقررہ حد سے کم ہے) تو ، تجارت کو خود بخود روک دیا جاتا ہے۔ نظام مسلسل مسلسل بینچ بار کی تعداد کی نگرانی کرتا ہے ، اور صرف اس وقت بینچ فلٹر کو چالو کرتا ہے جب اس بات کی تصدیق کی جاتی ہے کہ مارکیٹ حقیقی حد کی حالت میں ہے ، تاکہ ابتدائی توڑ کے مواقع سے محروم نہ ہوں۔

  3. اتار چڑھاؤ کی شرح فلٹریہ حکمت عملی کم اتار چڑھاؤ والے ماحول کی نشاندہی کرنے اور ان حالات میں تجارت سے بچنے کے قابل بناتی ہے۔ یہ طریقہ کار صرف اس وقت تجارت کو یقینی بناتا ہے جب مارکیٹ میں کافی متحرک ہو۔

  4. فی رجحان ایک تجارت کا اصول: حکمت عملی میں ایک رجحان کی حیثیت کا طریقہ کار لاگو کیا گیا ہے ، جس سے یہ یقینی بنایا جاتا ہے کہ ایک ہی رجحان کی سمت میں صرف ایک ہی تجارت کی جائے ، جب تک کہ رجحان کی سمت میں کوئی تبدیلی نہ آجائے۔ اس سے ایک ہی رجحان میں زیادہ تجارت اور سگنل کی تکرار سے بچا جاتا ہے۔

  5. غیر ٹوٹا ہوا بینڈوڈتھحکمت عملی انضمام کے علاقوں کا پتہ لگانے اور ظاہر کرنے کے قابل ہے جو ممکنہ طور پر ایک بریک اپ کا سبب بن سکتے ہیں ، تاجر کو ممکنہ طور پر اعلی امکانات والے تجارتی مواقع کی نشاندہی کرنے میں مدد کرتے ہیں۔

  6. متحرک خطرے کے انتظام: حکمت عملی اے ٹی آر پر مبنی اسٹاپ یا فکسڈ فی صد اسٹاپ ، اور اختیاری پیرالی لائن ایس اے آر ٹریکنگ اسٹاپ کی پیش کش کرتی ہے ، جس سے خطرے کا انتظام زیادہ لچکدار اور مارکیٹ میں تبدیلیوں کے مطابق ہوتا ہے۔

اسٹریٹجک فوائد

  1. اعلی موافقت پذیرییہ حکمت عملی خود بخود مختلف مارکیٹ کے حالات کے مطابق ڈھال لیتی ہے ، رجحانات کی مارکیٹ میں رجحانات کو پکڑتی ہے ، جبکہ ہلچل کی مارکیٹ میں نگرانی کرتی ہے۔ اس کی موافقت نے اسے مختلف مارکیٹ کے ماحول میں مستحکم رہنے کی اجازت دی ہے۔

  2. ملٹی فلٹرنگ میکانزماس حکمت عملی نے ٹریڈنگ سگنل کے معیار کو نمایاں طور پر بہتر بنایا ہے اور غلط سگنل اور جعلی بریک ٹریڈنگ کو کم کیا ہے۔

  3. انٹیلجنٹ اتار چڑھاو کی شرح ایڈجسٹمنٹحکمت عملی: مارکیٹ میں اتار چڑھاؤ کی رفتار کے مطابق پوزیشن کا سائز ایڈجسٹ کریں ، اعلی اتار چڑھاؤ والے ماحول میں رسک کے سوراخ کو کم کریں ، اور اعتدال پسند اتار چڑھاؤ والے ماحول میں منافع کے امکانات کو زیادہ سے زیادہ کریں۔

  4. مکمل بصری ٹولزحکمت عملی: اسٹریٹجیز میں بصری معاونت کی ایک وسیع رینج موجود ہے جس میں فاصلہ نشانات، غیر ٹوٹے ہوئے فاصلہ خانے، ای ایم اے لائنز اور ایس اے آر پوائنٹس شامل ہیں۔ اس سے تاجر کو مارکیٹ کی حالت اور حکمت عملی کی منطق کے بارے میں بصری طور پر سمجھنے میں مدد ملتی ہے۔

  5. لچکدار خطرے کا کنٹرول: متعدد اسٹاپ نقصان کی حکمت عملیوں کی حمایت کریں ((فکسڈ فی صد ، اے ٹی آر ضرب ، ایس اے آر ٹریکنگ) ، تاجر کو ذاتی خطرے کی ترجیحات اور مارکیٹ کی خصوصیات کے مطابق سب سے زیادہ مناسب خطرے کے انتظام کے طریقہ کار کا انتخاب کرنے کی اجازت دیں۔

  6. ایک بار کے سودے کا اصولٹرینڈ اسٹیٹ میکانزم کے ذریعے اس بات کو یقینی بنایا جائے کہ ہر ٹرینڈ سمت میں صرف ایک ہی تجارت کی جائے۔ اس سے زیادہ تجارت اور زیادہ فنڈز کو ایک ہی سمت کے خطرے سے بچایا جائے۔

اسٹریٹجک رسک

  1. رجحان میں تبدیلی: EMA کو اہم رجحاناتی اشارے کے طور پر استعمال کرنے کی وجہ سے ، حکمت عملی تیزی سے رجحانات میں ردعمل میں سست ہوسکتی ہے ، جس کے نتیجے میں ردوبدل کے آغاز میں کچھ پیچھے ہٹنا پڑتا ہے۔ اس کا حل EMA لمبائی کے پیرامیٹرز کو ایڈجسٹ کرنا ہے ، جس میں زیادہ اتار چڑھاؤ والی مارکیٹوں میں مختصر EMA لمبائی کا استعمال کیا جاسکتا ہے۔

  2. افقی مارکیٹ کی ناکامی: اگرچہ حکمت عملی نے ایک وقفہ فلٹر ڈیزائن کیا ہے ، لیکن طویل عرصے سے افقی مارکیٹوں میں طویل عرصے تک کوئی تجارت کا موقع نہیں مل سکتا ہے ، جس سے فنڈز کے استعمال کی کارکردگی متاثر ہوتی ہے۔ اس کا حل ملٹی ٹائم فریم تجزیہ کے ساتھ مل کر ہے ، یا اس حکمت عملی کو مختلف مارکیٹوں کے مابین باری باری استعمال کرنا ہے۔

  3. پیرامیٹرز کو بہتر بنانے کے لئے انحصار: حکمت عملی کی کارکردگی پیرامیٹرز کی ترتیبات پر بہت زیادہ انحصار کرتی ہے ، جیسے ای ایم اے کی لمبائی ، وقفہ کی حد اور اے ٹی آر ضرب۔ مختلف مارکیٹوں اور ٹائم فریموں کے لئے مختلف پیرامیٹرز کے مجموعے کی ضرورت ہوسکتی ہے۔ پیرامیٹرز کو مخصوص مارکیٹ اور ٹائم فریموں پر بیک اپ کرکے بہتر بنانے کی تجویز ہے۔

  4. اچانک بڑے اتار چڑھاو کا خطرہ: مارکیٹ میں اچانک ہونے والے واقعات (جیسے اہم پریس ریلیز) کی وجہ سے قیمتوں میں اضافے کی صورت میں ، اسٹاپ نقصانات متوقع قیمت پر عملدرآمد نہیں کرسکتے ہیں ، جس کی وجہ سے اصل نقصانات متوقع سے زیادہ ہوجاتے ہیں۔ اضافی فنڈ مینجمنٹ قواعد کو استعمال کرنے کی سفارش کی جاتی ہے جو ایک ہی تجارت کے خطرے کی نالی کو محدود کرتی ہے۔

  5. تکنیکی اشارے پر زیادہ انحصار: حکمت عملی مکمل طور پر تکنیکی اشارے پر مبنی ہے اور بنیادی عوامل کو نظرانداز کرتی ہے۔ بنیادی تجزیہ میں اہم تبدیلیوں کے دوران خالص تکنیکی تجزیہ ناکام ہوسکتا ہے۔ بنیادی تجزیہ کے ساتھ مل کر یا خطرے کے واقعات کا کیلنڈر ترتیب دینے کی سفارش کی جاتی ہے ، اہم معاشی اعداد و شمار کے اجراء سے پہلے پوزیشنوں کو کم کرنا یا تجارت کو معطل کرنا۔

حکمت عملی کی اصلاح کی سمت

  1. ملٹی ٹائم فریم تصدیق نظام: ایک سے زیادہ ٹائم فریم تجزیہ متعارف کرانے سے حکمت عملی کی درستگی میں نمایاں اضافہ ہوسکتا ہے۔ اعلی ٹائم فریم کے رجحان کی تصدیق کی شرائط کو شامل کرنے کی تجویز ہے ، اور صرف اس وقت تجارت پر عملدرآمد کیا جاتا ہے جب اعلی ٹائم فریم کے رجحان کی سمت موجودہ تجارت کی سمت سے مماثل ہو ، جس سے منفی تجارت کو کم کیا جاسکتا ہے اور جیت کی شرح میں اضافہ ہوتا ہے۔

  2. متحرک پیرامیٹرز خود کو اپنانے: حکمت عملی میں خود کار طریقے سے پیرامیٹرز ایڈجسٹمنٹ میکانزم شامل کیا جاسکتا ہے ، جس میں مارکیٹ میں اتار چڑھاؤ کی شرح اور رجحان کی طاقت کے مطابق خود بخود ای ایم اے کی لمبائی ، رینج کی کمی اور اے ٹی آر کے ضارب جیسے پیرامیٹرز کو ایڈجسٹ کیا جاسکتا ہے۔ اس سے حکمت عملی کو مارکیٹ کے مختلف مراحل میں بہتر طور پر ڈھالنے کے قابل بنایا جاسکتا ہے۔

  3. مشین لرننگ ماڈل کو ضم کرنا: مشین لرننگ ماڈل متعارف کرانے کے لئے انٹری ٹائمنگ کو بہتر بنانے کے لئے اور بینچ بریک کی سمت کی پیش گوئی کرنے کے لئے حکمت عملی کی کارکردگی کو نمایاں طور پر بڑھا سکتا ہے۔ مثال کے طور پر ، درجہ بندی کے الگورتھم کا استعمال کرتے ہوئے بینچ بریک کی پیش گوئی کی سچائی ، یا رجعت ماڈل کا استعمال کرتے ہوئے بریک کے بعد قیمت کے اہداف کی پیش گوئی کریں۔

  4. فلٹر کو بہتر بنائیں: موجودہ اتار چڑھاؤ کی شرح فلٹر ایک سادہ اے ٹی آر فی صد تھرویل کی بنیاد پر ہے ، جس کو رشتہ دار اتار چڑھاؤ کی شرح کے اشارے میں اپ گریڈ کیا جاسکتا ہے ، موجودہ اتار چڑھاؤ کی شرح کو تاریخی اتار چڑھاؤ کی شرح کی تقسیم کے ساتھ موازنہ کیا جاسکتا ہے ، اور حقیقی طور پر کم اتار چڑھاؤ والے ماحول کی زیادہ درست شناخت کی جاسکتی ہے۔

  5. ٹرانزیکشن کی تصدیق میں اضافہ: ٹریڈنگ سگنل کی پیداوار کے دوران حجم کی تصدیق کی شرائط میں اضافہ ، اور صرف اس وقت تجارت پر عملدرآمد جب قیمت میں اضافے کے ساتھ ہی حجم میں اضافہ ہوتا ہے ، جس سے جعلی توڑنے کا خطرہ کم ہوتا ہے۔ یہ بہتری خاص طور پر اسٹاک اور اجناس کی منڈیوں پر لاگو ہوتی ہے۔

  6. فنڈ مینجمنٹ الگورتھم کو بہتر بنانا: کیلی گائیڈ لائن یا دیگر اعلی درجے کی فنڈ مینجمنٹ الگورتھم کو حکمت عملی میں ضم کریں ، اور تاریخی جیت اور منافع نقصان کے تناسب کے مطابق پوزیشن کی سائز کو متحرک طور پر ایڈجسٹ کریں ، طویل مدتی منافع کو زیادہ سے زیادہ کرنے اور خطرے کو کم سے کم کرنے کے لئے۔

خلاصہ کریں۔

ڈبل انڈیکس ایکویڈیٹ ٹرینڈ ٹریکنگ اور اتار چڑھاؤ کی اسمارٹ فلٹرنگ حکمت عملی ایک جامع ، مستحکم تجارتی نظام ہے جو رجحان سے باخبر رہنے ، وقفہ کی کھوج اور اتار چڑھاؤ کی فلٹرنگ کی تکنیک کو ملا کر تجارتی سگنل کے معیار اور تجارت کی کامیابی کی شرح کو مؤثر طریقے سے بہتر بناتا ہے۔ اس کا منفرد فی رجحان ایک بار ٹریڈنگ اصول اور متحرک رسک مینجمنٹ میکانزم اس کو خطرے پر قابو پانے کے ساتھ ساتھ اچھی منافع بخش صلاحیت کو برقرار رکھنے کی اجازت دیتا ہے۔ حکمت عملی کے متعدد فلٹرنگ میکانزم اور بصری اوزار تجارتی فیصلوں کو زیادہ بدیہی اور قابل اعتماد بناتے ہیں۔

اگرچہ حکمت عملی میں رجحان الٹ تاخیر اور پیرامیٹر پر انحصار جیسے خطرات بھی موجود ہیں ، لیکن ان خطرات کو موثر انداز میں منظم کیا جاسکتا ہے ، جس میں متعدد ٹائم فریم کی تصدیق ، متحرک پیرامیٹرز کی خود کو اپنانے اور مشین لرننگ ماڈل انٹیگریشن جیسے تجویز کردہ اصلاح کی سمت شامل ہیں۔ مناسب پیرامیٹرز کی اصلاح اور رسک مینجمنٹ کے ذریعہ ، حکمت عملی مختلف مارکیٹ کے حالات میں مستحکم کارکردگی کو برقرار رکھ سکتی ہے ، ایک تجارتی نظام ہے جو طویل مدتی استعمال اور مستقل بہتری کے قابل ہے۔

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-08-01 00:00:00
end: 2025-07-30 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Dubic EMA Strategy", overlay=true, 
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100,
     initial_capital=10000,
     currency=currency.USD,
     commission_value=0.1,
     pyramiding=0,
     calc_on_every_tick=true)

// Inputs
ema_length = input.int(40, "EMA Length")
tp_percent = input.float(2.0, "Take Profit %", step=0.1, minval=0.1) / 100
sl_offset = input.float(0.5, "Stop Loss Offset %", step=0.1, minval=0.1) / 100

// Toggles for SL/TP
use_take_profit = input.bool(true, "Use Take Profit")
use_stop_loss = input.bool(true, "Use Stop Loss")

// Range Detection
range_length = input.int(20, "Range Detection Length", minval=5)
range_threshold = input.float(2.0, "Range Threshold %", step=0.1) / 100
min_range_bars = input.int(3, "Min Range Bars", minval=1)

// Parabolic SAR
use_parabolic_sar = input.bool(true, "Use Parabolic SAR Trailing Stop")
sar_start = input.float(0.02, "SAR Start", step=0.01)
sar_increment = input.float(0.02, "SAR Increment", step=0.01)
sar_max = input.float(0.2, "SAR Maximum", step=0.01)

// ATR Stop Configuration
use_atr_stop = input.bool(true, "Use ATR Stop Instead of Fixed %")
atr_length = input.int(14, "ATR Length")
atr_mult = input.float(1.5, "ATR Multiplier", minval=0.5)

// Volatility Filter
min_atr = input.float(0.5, "Min ATR % for Trading", step=0.1) / 100
use_volatility_filter = input.bool(true, "Enable Volatility Filter")

// Unbroken Range Visualization
show_unbroken_range = input.bool(true, "Show Unbroken Range Visualization", group="Unbroken Range")
unbroken_length = input.int(20, 'Minimum Range Length', minval=2, group="Unbroken Range")
unbroken_mult = input.float(1., 'Range Width', minval=0, step=0.1, group="Unbroken Range")
unbroken_atrLen = input.int(500, 'ATR Length', minval=1, group="Unbroken Range")
upCss = input.color(#089981, 'Broken Upward', group="Unbroken Range")
dnCss = input.color(#f23645, 'Broken Downward', group="Unbroken Range")
unbrokenCss = input.color(#2157f3, 'Unbroken', group="Unbroken Range")

// Calculate Indicators
ema_high = ta.ema(high, ema_length)
ema_low = ta.ema(low, ema_length)
ema_200 = ta.ema(close, 200)
sar = ta.sar(sar_start, sar_increment, sar_max)
atr = ta.atr(atr_length)

// Volatility Filter
atr_percentage = (atr / close) * 100
sufficient_volatility = not use_volatility_filter or (atr_percentage >= min_atr * 100)

// Range Detection Logic
range_high = ta.highest(high, range_length)
range_low = ta.lowest(low, range_length)
range_size = range_high - range_low
range_percentage = (range_size / close) * 100
range_condition = range_percentage <= (range_threshold * 100)

// Consecutive range bars counter
var int range_bars_count = 0
range_bars_count := range_condition ? range_bars_count + 1 : 0
in_range = range_bars_count >= min_range_bars

// Visualize Range
bgcolor(in_range ? color.new(color.purple, 85) : na, title="Range Zone")
plot(in_range ? range_high : na, "Range High", color=color.purple, linewidth=2, style=plot.style_linebr)
plot(in_range ? range_low : na, "Range Low", color=color.purple, linewidth=2, style=plot.style_linebr)

// Trading Conditions
buy_condition = (close > ema_high) and (close > ema_low)
sell_condition = (close < ema_high) and (close < ema_low)

// Apply Filters
buy_signal = buy_condition and not in_range and sufficient_volatility
sell_signal = sell_condition and not in_range and sufficient_volatility

// Trend State Machine
var int currentTrend = 0  // 0=neutral, 1=long, -1=short
var bool showBuy = false
var bool showSell = false

trendChanged = false
if buy_signal and currentTrend != 1
    currentTrend := 1
    trendChanged := true
    showBuy := true
    showSell := false
else if sell_signal and currentTrend != -1
    currentTrend := -1
    trendChanged := true
    showBuy := false
    showSell := true

// Reset signals
showBuy := nz(showBuy[1]) and not trendChanged ? false : showBuy
showSell := nz(showSell[1]) and not trendChanged ? false : showSell

// Plot Indicators
plot(ema_high, "EMA High", color=color.blue, linewidth=2)
plot(ema_low, "EMA Low", color=color.orange, linewidth=2)
plot(ema_200, "200 EMA", color=color.white, linewidth=3)

// Plot SAR with color coding
color sarColor = strategy.position_size > 0 ? color.red : 
               strategy.position_size < 0 ? color.green : 
               color.gray
plot(use_parabolic_sar ? sar : na, "SAR", style=plot.style_circles, color=sarColor, linewidth=2)

// Plot signals
plotshape(showBuy, title="Buy Signal", text="BUY", style=shape.labelup, 
          location=location.belowbar, color=color.green, textcolor=color.white, size=size.tiny)
plotshape(showSell, title="Sell Signal", text="SELL", style=shape.labeldown, 
          location=location.abovebar, color=color.red, textcolor=color.white, size=size.tiny)

// Strategy Logic
var float long_sl = na
var float long_tp = na
var float short_sl = na
var float short_tp = na
var float long_trail_stop = na
var float short_trail_stop = na

// Position Sizing with Volatility Scaling
position_size = use_volatility_filter ? math.min(100, 100 * (min_atr * 100) / atr_percentage) : 100

// Execute trades
if (showBuy)
    // Calculate stop loss and take profit
    long_sl := use_atr_stop ? close - atr * atr_mult : ema_low * (1 - sl_offset)
    long_tp := close * (1 + tp_percent)
    long_trail_stop := use_parabolic_sar ? sar : na
    
    strategy.close("Short", comment="Exit Short")
    strategy.entry("Long", strategy.long, qty=position_size)
    
    // Set exit orders with toggle support
    if use_stop_loss or use_take_profit
        strategy.exit("Long SL/TP", "Long", 
             stop=use_stop_loss ? long_sl : na, 
             limit=use_take_profit ? long_tp : na)
    
    if use_parabolic_sar
        strategy.exit("Long SAR", "Long", stop=long_trail_stop)
    
    alert("BUY: " + syminfo.ticker, alert.freq_once_per_bar)
    
if (showSell)
    // Calculate stop loss and take profit
    short_sl := use_atr_stop ? close + atr * atr_mult : ema_high * (1 + sl_offset)
    short_tp := close * (1 - tp_percent)
    short_trail_stop := use_parabolic_sar ? sar : na
    
    strategy.close("Long", comment="Exit Long")
    strategy.entry("Short", strategy.short, qty=position_size)
    
    // Set exit orders with toggle support
    if use_stop_loss or use_take_profit
        strategy.exit("Short SL/TP", "Short", 
             stop=use_stop_loss ? short_sl : na, 
             limit=use_take_profit ? short_tp : na)
    
    if use_parabolic_sar
        strategy.exit("Short SAR", "Short", stop=short_trail_stop)
    
    alert("SELL: " + syminfo.ticker, alert.freq_once_per_bar)

// Update SAR trailing stops
if barstate.isrealtime and use_parabolic_sar
    if strategy.position_size > 0
        strategy.exit("Long SAR", "Long", stop=long_trail_stop)
    else if strategy.position_size < 0
        strategy.exit("Short SAR", "Short", stop=short_trail_stop)

// Plot SL/TP levels with toggle support
plot(strategy.position_size > 0 and use_stop_loss ? long_sl : na, "Long Stop", color=color.red, style=plot.style_linebr, linewidth=2)
plot(strategy.position_size > 0 and use_take_profit ? long_tp : na, "Long Take Profit", color=color.green, style=plot.style_linebr, linewidth=2)
plot(strategy.position_size < 0 and use_stop_loss ? short_sl : na, "Short Stop", color=color.red, style=plot.style_linebr, linewidth=2)
plot(strategy.position_size < 0 and use_take_profit ? short_tp : na, "Short Take Profit", color=color.green, style=plot.style_linebr, linewidth=2)

// Plot SAR trailing stops
plot(strategy.position_size > 0 and use_parabolic_sar ? long_trail_stop : na, 
     "Long Trail Stop", color=color.orange, style=plot.style_circles, linewidth=2)
plot(strategy.position_size < 0 and use_parabolic_sar ? short_trail_stop : na, 
     "Short Trail Stop", color=color.orange, style=plot.style_circles, linewidth=2)

// Alerts
alertcondition(showBuy, title="Buy Alert", message="BUY: {{ticker}}")
alertcondition(showSell, title="Sell Alert", message="SELL: {{ticker}}")