
سپورٹ مزاحمت توڑنے کی حکمت عملی اور رجحانات - اے ڈی ایکس فلٹر کی کوانٹائزڈ ٹریڈنگ سسٹم ایک جامع تجارتی حکمت عملی ہے جو تکنیکی تجزیہ میں سپورٹ مزاحمت کی شناخت ، رجحان کی تصدیق اور مارکیٹ کی طاقت کی توثیق کو یکجا کرتی ہے۔ یہ حکمت عملی مارکیٹ کی قیمتوں پر مبنی ہے جس میں اہم قیمت کی سطح کو توڑ دیا جاتا ہے ، اور ٹریڈنگ سگنل کی وشوسنییتا کو بڑھاتا ہے جس میں متحرک اوسط اور اوسط سمت اشاریہ ((ADX) کو فلٹر کے طور پر استعمال کیا جاتا ہے۔ نظام 1 گھنٹے کے وقت کے فریم ورک کو اپناتا ہے ، جس میں محوری اونچائی اور کم کی نشاندہی کرکے متحرک سپورٹ مزاحمت کو توڑنے والے علاقوں کی تعمیر کی جاتی ہے ، اور جب قیمت ان علاقوں میں ٹوٹ جاتی ہے تو ٹریڈنگ سگنل جاری ہوتا ہے ، جبکہ خطرے کو کنٹرول کرنے کے لئے ایک مقررہ فیصد اسٹاپ نقصان کا طریقہ کار بھی قائم کیا جاتا ہے۔
اس حکمت عملی کے بنیادی اصولوں کی بنیاد پر قیمتوں میں اہم معاون مزاحمت کی سطحوں پر توڑنے والے رویے پر مبنی ہے ، جس میں رجحان کی سمت اور مارکیٹ کی طاقت کو فلٹر کرنے کے ساتھ مل کر ایک مکمل تجارتی نظام تشکیل دیا گیا ہے۔ اس کے عملی اصولوں میں شامل ہیں:
مزاحمت کی حمایت کی شناختسسٹم اہم قیمتوں کی سطحوں کی نشاندہی کرنے کے لئے محور پوائنٹس کا استعمال کرتا ہے۔ta.pivothighاورta.pivotlowایک فنکشن جو 5 دوروں کو بطور ڈیفالٹ پیرامیٹرز محور کے اعلی اور کم پوائنٹس کے طور پر استعمال کرتا ہے اور ان پوائنٹس کو ممکنہ مزاحمت اور حمایت کے طور پر استعمال کرتا ہے۔
متحرک علاقائی انتظامسسٹم کا استعمال کرتے ہوئے:supportLevelsاورresistanceLevelsسٹوریج کی حمایت کی مزاحمت بٹس، اور اپنی مرضی کے مطابق افعال کے ذریعےf_add_levelان قیمتوں کی سطحوں کا ذہین انتظام کریں۔ یہ فنکشن اس بات کو یقینی بناتا ہے کہ نئی سطحوں کو موجودہ سطحوں سے کافی فاصلہ دیا جائے (ڈیفالٹ 2٪) ، علاقوں میں زیادہ سے زیادہ ہجوم کو روکنے کے لئے ، جبکہ 5 تازہ ترین سطحوں کو برقرار رکھنے کی حد تک محدود ہے۔
رجحان کی تصدیق فلٹر: حکمت عملی 50 دوروں کی سادہ حرکت پذیری اوسط ((ایس ایم اے) کو رجحان کی سمت کے اشارے کے طور پر استعمال کرتی ہے۔ صرف اس صورت میں زیادہ غور کریں جب قیمت اوسط سے اوپر ہو ، اور اس کے نیچے ہونے پر ہی غور کریں ، اور اس طرح مجموعی طور پر مارکیٹ کے رجحانات پر عمل کریں۔
مارکیٹ کی طاقت کی تصدیق: اپنی مرضی کے مطابق ADX ((اوسط سمت انڈیکس) فنکشن کے ذریعہ مارکیٹ کی طاقت کا اندازہ لگائیں۔ ADX کی قیمت طے شدہ حد سے زیادہ ہونی چاہئے ((پہلے سے طے شدہ 25) ، اس بات کو یقینی بنانا کہ صرف مارکیٹ میں کافی مضبوطی کے ساتھ ہی تجارت میں داخل ہوں ، اور کمزور مارکیٹ کے ماحول میں جعلی توڑ سے بچیں۔
ان پٹ سگنل پیدا:
خطرے کے انتظام کے طریقہ کاراسٹریٹجی میں فکسڈ فی صد اسٹاپ اور نقصان کی ترتیب ہے ، کثیر سر ڈیفالٹ میں 15٪ اسٹاپ اور 10٪ اسٹاپ ہے ، اور خالی سر ڈیفالٹ میں 10٪ اسٹاپ اور 10٪ اسٹاپ ہے۔ جب قیمت ان سطحوں تک پہنچ جاتی ہے تو ، نظام خود بخود صفائی کرتا ہے اور تجارت کی حالت کو دوبارہ ترتیب دیتا ہے۔
کوڈ کے گہرے تجزیے کے مطابق، اس حکمت عملی کے درج ذیل نمایاں فوائد ہیں:
ایک سے زیادہ توثیق کا طریقہ کار: سپورٹ کے خلاف مزاحمت کی توڑ ، رجحان کی سمت اور ADX کی طاقت کے ساتھ مل کر تین بار تصدیق ، جعلی توڑنے کے خطرے کو مؤثر طریقے سے کم کرتی ہے۔ ایک ہی اشارے کے مقابلے میں ، ایک سے زیادہ تصدیق کے طریقہ کار سے ٹریڈنگ سگنل کی وشوسنییتا میں اضافہ ہوتا ہے۔
متحرک سپورٹ مزاحمت زون: نظام متحرک طور پر معاونت اور مزاحمت کی سطح کی شناخت اور انتظام کرتا ہے ، جو مختلف مارکیٹ کے حالات کے مطابق ڈھال سکتا ہے۔ حکمت عملی کو سب سے زیادہ متعلقہ قیمت کی سطح پر توجہ دینے کو یقینی بنانے کے لئے ، زیادہ سے زیادہ 5 تازہ ترین معاونت اور مزاحمت کی سطحوں کو برقرار رکھنا۔
ذہین علاقائی گروہ بندی: زیادہ سے زیادہ زون کی چوڑائی فی صد پیرامیٹرز ((maxZoneWidthPct) کے ذریعے ، سپورٹ مزاحمت کی جگہ کو دوبارہ گنتی سے بچنے سے بچنے کے لئے ، اضافی سگنل کو کم کریں۔
اپنی مرضی کے مطابق ADX حساب: حکمت عملی اپنی مرضی کے مطابق ADX فنکشن کا استعمال کرتے ہوئے، براہ راست اصل طول و عرض، سمت منتقل اور ہموار کرنے کے لئے، اشارے کے حساب کی درستگی اور لچک کو یقینی بنانے کے لئے.
لچکدار پیرامیٹرز ترتیب: حکمت عملی میں متعدد ایڈجسٹ پیرامیٹرز مہیا کیے جاتے ہیں ، بشمول محور کی لمبائی ، واپسی کا دورانیہ ، زیادہ سے زیادہ علاقائی چوڑائی ، اسٹاپ اسٹاپ نقصان کی فیصد اور ADX کی حد وغیرہ۔ صارف مختلف مارکیٹ کے حالات اور تجارت کی ترجیحات کے مطابق اصلاح کرسکتا ہے۔
واضح طور پر خطرے کا کنٹرول: اسٹاپ اسٹاپ نقصان کی پیش وضاحتی فیصد کے ذریعہ ، ہر تجارت کے لئے ایک واضح رسک مینجمنٹ فریم ورک فراہم کریں ، تاکہ کسی بھی تجارت میں زیادہ نقصان سے بچایا جاسکے ، اور معقول منافع کو لاک کیا جاسکے۔
بصری بصیرتحکمت عملی: سپورٹ مزاحمت اور تجارتی سگنل کو چارٹ پر نشان زد کریں ، رنگین کوڈنگ ((سپورٹ گرین ، مزاحمت ریڈ) اور لیبل ((لانگ ، شارٹ ، ایگزٹ) کے ذریعہ بصری آراء فراہم کریں ، جس سے بیک اپ تجزیہ اور ریئل ٹائم مانیٹرنگ کی سہولت ملے۔
اس حکمت عملی کے معقول ڈیزائن کے باوجود ، مندرجہ ذیل ممکنہ خطرات اور حدود موجود ہیں:
غیر مستحکم مارکیٹ میں جعلی کامیابی: اعلی اتار چڑھاؤ والے بازار کے ماحول میں ، قیمتیں اکثر سپورٹ مزاحمت کی سطح کو توڑنے کے بعد واپس اپنی اصل حد میں جاسکتی ہیں ، جس سے جعلی توڑنے والے سگنل میں اضافہ ہوتا ہے۔ حل: تصدیق کی مدت میں اضافے پر غور کیا جاسکتا ہے ، جس سے قیمتوں کو توڑنے کے بعد کچھ وقت تک برقرار رکھنے کی ضرورت ہوتی ہے۔
تاریخی حمایت اور مزاحمت پر زیادہ انحصار: حکمت عملی تاریخی حمایت اور مزاحمت کی سطح پر مبنی ہے ، جب مارکیٹ کی ساخت میں بنیادی تبدیلی آتی ہے (جیسے اہم خبروں کے واقعات) ، تو یہ تاریخی سطحیں غیر موثر ہوسکتی ہیں۔ حل: متحرک ایڈجسٹمنٹ میکانزم کو شامل کرنے پر غور کیا جاسکتا ہے ، جو مارکیٹ میں اتار چڑھاؤ کے مطابق حمایت اور مزاحمت کی سطح کو خود بخود ایڈجسٹ کرتا ہے۔
فکسڈ فیصد سٹاپ نقصان کی حدحل: اسٹاپ نقصان کی سطح کو متحرک طور پر ایڈجسٹ کرنے پر غور کیا جاسکتا ہے جو اے ٹی آر (حقیقی طول و عرض) پر مبنی ہے۔
رجحان کے الٹ جانے کا خطرہ: 50 سائیکل ایس ایم اے کو رجحان کے اشارے کے طور پر استعمال کرنے سے رجحان کی تبدیلی کے ابتدائی ردعمل میں تاخیر ہوسکتی ہے ، جس کے نتیجے میں جب رجحان ختم ہونے والا ہے تو ابھی بھی آگے بڑھ رہا ہے۔ حل: ایک زیادہ حساس قلیل مدتی رجحان کے اشارے یا حرکیات کے اشارے کو معاون فیصلے کے طور پر شامل کرنے پر غور کیا جاسکتا ہے۔
کمپیوٹنگ کی گہری حکمت عملی: حکمت عملی کو متعدد صفوں اور اشارے کی اصل وقت میں حساب کتاب اور دیکھ بھال کی ضرورت ہوتی ہے ، اور اعلی تعدد تجارت یا وسائل سے محدود ماحول میں کارکردگی کے چیلنجوں کا سامنا کرنا پڑ سکتا ہے۔ حل: الگورتھم کی کارکردگی کو بہتر بنانا ، غیر ضروری حساب کو کم کرنا ، یا اپ ڈیٹ کی تعدد کو کم کرنے پر غور کرنا۔
پیرامیٹر کی حساسیت: حکمت عملی کی کارکردگی پیرامیٹرز کی ترتیبات (جیسے محور کی لمبائی ، ADX threshold) کے لئے حساس ہے ، پیرامیٹرز کا غلط انتخاب زیادہ تجارت یا کھوئے ہوئے مواقع کا سبب بن سکتا ہے۔ حل: مختلف مارکیٹ کے حالات میں پیرامیٹرز کی کارکردگی کا جائزہ لے کر ، پیرامیٹرز کی اصلاح کا فریم ورک قائم کریں۔
پالیسی کوڈ کے گہرائی سے تجزیہ کے مطابق ، ممکنہ اصلاحات یہ ہیں:
موافقت پذیر پیرامیٹرز کا طریقہ کار: مارکیٹ میں اتار چڑھاؤ کی شرح کے مطابق کلیدی پیرامیٹرز کو خود بخود ایڈجسٹ کرنے کا طریقہ کار متعارف کرایا گیا ہے۔ مثال کے طور پر ، اعلی اتار چڑھاؤ کے دوران ADX کی حد یا معاون مزاحمت والے علاقوں کی چوڑائی میں اضافہ کریں ، اور کم اتار چڑھاؤ کے دوران ان پیرامیٹرز کو کم کریں ، تاکہ حکمت عملی مختلف مارکیٹ کے حالات کے مطابق بہتر طور پر ڈھال سکے۔ اس طرح غیر مناسب مارکیٹ کے حالات میں غلط تجارت کو کم کیا جاسکتا ہے۔
ملٹی ٹائم فریم تجزیہ: اعلی ٹائم فریموں کی حمایت کی مزاحمت کی سطح کی توثیق میں اضافہ کریں۔ سگنل کے معیار کو بہتر بنانے کے لئے ، ایک مضبوط ، کثیر ٹائم فریم کی حمایت والے اہم قیمت والے علاقوں کی نشاندہی کی جاسکتی ہے ، اس بات کی جانچ پڑتال کرکے کہ آیا دن کی لائن یا گھڑی کے چارٹ پر حمایت کی مزاحمت کی سطح موجودہ 1 گھنٹہ کے چارٹ پر موجود سطح سے مماثل ہے۔
ٹرانزیکشن کی تصدیق: ٹرانزیکشن حجم کے تجزیہ کے ساتھ مل کر توڑنے کی توثیق کریں۔ واقعی موثر توڑ عام طور پر ٹرانزیکشن حجم میں نمایاں اضافے کے ساتھ ہوتا ہے ، اور ٹرانزیکشن حجم فلٹرنگ شرائط کو شامل کرکے ، کم ٹرانزیکشن حجم کے نتیجے میں جھوٹے توڑنے کے خطرے کو کم کیا جاسکتا ہے۔
متحرک سٹاپ نقصان: مارکیٹ میں اتار چڑھاؤ کی شرح (جیسے اے ٹی آر) کی بنیاد پر اسٹاپ نقصان کی سطح کو متحرک طور پر ترتیب دیں ، نہ کہ ایک مقررہ فیصد۔ اس سے خطرے کے انتظام میں زیادہ لچک پیدا ہوتی ہے ، جو موجودہ مارکیٹ کے حالات کے مطابق خود بخود تحفظ کی سطح کو ایڈجسٹ کرنے کے قابل ہوتا ہے ، زیادہ اتار چڑھاؤ والی مارکیٹوں میں زیادہ نرمی سے روکنے اور کم اتار چڑھاؤ والی مارکیٹوں میں زیادہ سخت روکنے کے لئے۔
جزوی منافع کو لاک کرنے کا طریقہ کار: مرحلہ وار منافع کا طریقہ کار متعارف کرایا گیا ، جس سے منافع کی ایک خاص سطح پر پہنچنے کے بعد نقصانات کو لاگت کی قیمت پر منتقل کرنے یا منافع میں سے کچھ کو لاک کرنے کی اجازت دی جاتی ہے۔ اس طرح کے طریقہ کار سے واپسی کا خطرہ کم ہوسکتا ہے جبکہ اعلی واپسی کا امکان برقرار رہتا ہے۔
جذباتی اشارے کو ضم کرنا: مارکیٹ کے جذبات کے اشارے (جیسے وی آئی ایکس یا نسبتا strong مضبوط اشارے) کو اضافی فلٹرنگ شرائط کے طور پر شامل کرنے پر غور کریں۔ مارکیٹ کے جذبات اکثر بریک کی پائیداری پر اثر انداز ہوتے ہیں ، جذبات کی تجزیاتی جہت کو بڑھا کر حکمت عملی کی مارکیٹ کی حالت کی تفہیم کو بہتر بنایا جاسکتا ہے۔
حمایت مزاحمت کی طاقت درجہ بندی: سپورٹ مزاحمت کی سطح کی طاقت کی تشخیص کا طریقہ کار متعارف کرایا گیا ، جس میں تاریخی ٹیسٹ کی تعداد ، تشکیل وقت کی لمبائی جیسے عوامل کی بنیاد پر ہر سطح کی طاقت کی درجہ بندی کی جاتی ہے۔ اس طرح قیمت کی سطح پر ترجیح دی جاسکتی ہے جس میں زیادہ مضبوط اور موثر ردعمل پیدا کرنے کا امکان ہے۔
مشین لرننگ کی اصلاح: پیرامیٹرز کے انتخاب اور سگنل کی پیداوار کو بہتر بنانے کے لئے مشین لرننگ کے طریقوں کا استعمال کرنے پر غور کریں۔ مشین لرننگ الگورتھم تاریخی اعداد و شمار میں کامیاب اور ناکام تجارتی نمونوں کا تجزیہ کرکے سب سے زیادہ موثر پیرامیٹرز کے مجموعے اور مارکیٹ کے حالات کی شناخت میں مدد کرسکتے ہیں۔
سپورٹ مزاحمت توڑنے کی حکمت عملی اور رجحانات - اے ڈی ایکس فلٹرز کی مقدار میں تجارت کا نظام ایک اچھی طرح سے ڈیزائن کیا گیا جامع تجارتی نظام ہے جس میں تکنیکی تجزیہ میں متعدد اہم عناصر شامل ہیں۔ اس حکمت عملی نے رجحانات کی سمت اور مارکیٹ کی طاقت کو فلٹر کرنے کے ساتھ ساتھ سپورٹ مزاحمت کی سطح کو متحرک طور پر شناخت اور نگرانی کرکے ایک نسبتا reliable قابل اعتماد سگنل ٹریڈنگ میکانزم پیدا کیا ہے۔
اس حکمت عملی کا بنیادی فائدہ یہ ہے کہ اس کے متعدد تصدیق کے میکانزم اور ایک بہتر خطرے کے انتظام کے فریم ورک نے جھوٹے توڑنے کے خطرے کو مؤثر طریقے سے کم کیا ہے اور ایک ہی تجارت میں ممکنہ نقصان کو محدود کیا ہے۔ اس کے علاوہ ، حکمت عملی میں متعدد پیرامیٹرز کی تشکیل کے اختیارات فراہم کیے گئے ہیں ، جس سے تاجر کو ذاتی خطرے کی ترجیحات اور مارکیٹ کے ماحول کے مطابق لچکدار ایڈجسٹمنٹ کی اجازت ملتی ہے۔
تاہم ، اس حکمت عملی کو کچھ چیلنجوں کا بھی سامنا کرنا پڑتا ہے ، جیسے کہ اعلی اتار چڑھاؤ والی منڈیوں میں جھوٹے بریک آؤٹ کا خطرہ ، فکسڈ اسٹاپ نقصانات کی حدود اور پیرامیٹرز کی حساسیت وغیرہ۔ حکمت عملی کی کارکردگی کو مزید بہتر بنانے کے لئے متوقع ہے جیسے موافقت پذیر پیرامیٹرز کے طریقہ کار ، ملٹی ٹائم فریم تجزیہ ، تجارتی حجم کی تصدیق اور متحرک خطرے کے انتظام جیسے اصلاحاتی اقدامات کو متعارف کرانا۔
مجموعی طور پر ، یہ ایک منطقی طور پر واضح ، معقول انداز میں تیار کردہ ، اور تکنیکی تجزیہ اور مارکیٹ کی ساخت کی کچھ سمجھ رکھنے والے تاجروں کے لئے موزوں تجارتی حکمت عملی ہے۔ اس حکمت عملی میں مسلسل اصلاح اور مارکیٹ میں تبدیلیوں کے مطابق ڈھالنے کی صلاحیت ہے تاکہ مارکیٹ کے مختلف ماحول میں مستحکم کارکردگی کو برقرار رکھا جاسکے۔
/*backtest
start: 2024-05-30 00:00:00
end: 2025-05-29 00:00:00
period: 3d
basePeriod: 3d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("S/R Breakout Strategy (1H) with Trend and ADX Filter", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// ─────────────────────────────────────────────────────────────
// INPUTS
// ─────────────────────────────────────────────────────────────
pivotLen = input.int(5, title="Pivot Length")
lookbackBars = input.int(300, title="Lookback Bars")
maxZoneWidthPct = input.float(2.0, title="Max Zone Width %")
tpLong = input.float(0.15, title="Take Profit % (Long)")
slLong = input.float(0.10, title="Stop Loss % (Long)")
tpShort = input.float(0.10, title="Take Profit % (Short)")
slShort = input.float(0.10, title="Stop Loss % (Short)")
allowLong = input.bool(true, title="Allow Long Trades")
allowShort = input.bool(true, title="Allow Short Trades")
// ADX settings
adxThreshold = input.float(25.0, title="ADX Threshold")
adxLen = input.int(14, title="ADX Length")
// Trend filter: 50-period moving average
ma50 = ta.sma(close, 50)
// ─────────────────────────────────────────────────────────────
// CUSTOM ADX FUNCTION
// ─────────────────────────────────────────────────────────────
// This function calculates ADX using the common method based on true range,
// directional movement and smoothing it with the RMA.
f_adx(len) =>
// true range for the current bar
tr = ta.tr
// Calculate upward and downward moves
upMove = high - high[1]
downMove = low[1] - low
// Determine directional movements
plusDM = (upMove > downMove and upMove > 0) ? upMove : 0.0
minusDM = (downMove > upMove and downMove > 0) ? downMove : 0.0
// Smooth the values using RMA (running moving average)
smPlusDM = ta.rma(plusDM, len)
smMinusDM = ta.rma(minusDM, len)
smTR = ta.rma(tr, len)
// Calculate the directional indicators, avoid division by zero
plusDI = (smTR != 0) ? 100 * smPlusDM / smTR : 0.0
minusDI = (smTR != 0) ? 100 * smMinusDM / smTR : 0.0
diSum = plusDI + minusDI
dx = (diSum != 0) ? 100 * math.abs(plusDI - minusDI) / diSum : 0.0
// Smooth the DX to get ADX
ta.rma(dx, len)
// Compute ADX value using the custom function
adxValue = f_adx(adxLen)
// ─────────────────────────────────────────────────────────────
// PIVOT DETECTION & SUPPORT/RESISTANCE LEVELS
// ─────────────────────────────────────────────────────────────
pivotHigh = ta.pivothigh(high, pivotLen, pivotLen)
pivotLow = ta.pivotlow(low, pivotLen, pivotLen)
// Declare arrays for support and resistance levels
var float[] supportLevels = array.new_float()
var float[] resistanceLevels = array.new_float()
// Function to add a level into the provided array if it meets the criteria.
// Always returns a float (0.0) for consistency.
f_add_level(arr, newLevel) =>
if array.size(arr) == 0
array.push(arr, newLevel)
else
shouldAdd = true
for i = 0 to (array.size(arr) - 1)
existing = array.get(arr, i)
if math.abs(existing - newLevel) / newLevel * 100 <= maxZoneWidthPct
shouldAdd := false
if shouldAdd
array.push(arr, newLevel)
if array.size(arr) > 5
array.shift(arr)
0.0
// Update support and resistance arrays once sufficient bars have formed
if bar_index > pivotLen * 2
if not na(pivotLow)
f_add_level(supportLevels, pivotLow)
if not na(pivotHigh)
f_add_level(resistanceLevels, pivotHigh)
// ─────────────────────────────────────────────────────────────
// TRADE MANAGEMENT VARIABLES
// ─────────────────────────────────────────────────────────────
var bool inTrade = false
var bool isLong = false
var float entryPrice = na
// Signal flags
longSignal = false
shortSignal = false
// Detect long signal: price crosses above support level
if array.size(supportLevels) > 0
for i = 0 to (array.size(supportLevels) - 1)
lvl = array.get(supportLevels, i)
if low < lvl and close > lvl
longSignal := true
// Detect short signal: price crosses below resistance level
if array.size(resistanceLevels) > 0
for i = 0 to (array.size(resistanceLevels) - 1)
lvl = array.get(resistanceLevels, i)
if high > lvl and close < lvl
shortSignal := true
// ─────────────────────────────────────────────────────────────
// ENTRY CONDITIONS & EXECUTION
// ─────────────────────────────────────────────────────────────
if not inTrade
// Long entry: require long signal, price above 50MA, and ADX above threshold
if allowLong and longSignal and close > ma50 and adxValue > adxThreshold
strategy.entry("Long", strategy.long)
label.new(x=bar_index, y=low, text="LONG", xloc=xloc.bar_index, style=label.style_label_up, color=color.green, textcolor=color.white)
entryPrice := close
isLong := true
inTrade := true
// Short entry: require short signal, price below 50MA, and ADX above threshold
else if allowShort and shortSignal and close < ma50 and adxValue > adxThreshold
strategy.entry("Short", strategy.short)
label.new(x=bar_index, y=high, text="SHORT", xloc=xloc.bar_index, style=label.style_label_down, color=color.red, textcolor=color.white)
entryPrice := close
isLong := false
inTrade := true
// ─────────────────────────────────────────────────────────────
// EXIT CONDITIONS
// ─────────────────────────────────────────────────────────────
if inTrade
ret = isLong ? (close - entryPrice) / entryPrice : (entryPrice - close) / entryPrice
tp = isLong ? tpLong : tpShort
sl = isLong ? slLong : slShort
if ret >= tp or ret <= -sl
strategy.close_all()
label.new(x=bar_index, y=close, text="EXIT", xloc=xloc.bar_index, style=label.style_label_left, color=color.orange, textcolor=color.black)
inTrade := false
entryPrice := na
// ─────────────────────────────────────────────────────────────
// ALERT CONDITIONS
// ─────────────────────────────────────────────────────────────
alertcondition(longSignal and allowLong, title="Long Breakout", message="🚀 Long breakout on {{ticker}} at {{close}}")
alertcondition(shortSignal and allowShort, title="Short Breakout", message="🔻 Short breakout on {{ticker}} at {{close}}")