اڈاپٹیو اوپننگ رینج بریک آؤٹ مومینٹم اسٹریٹجی اور رسک آپٹمائزڈ پوزیشن مینجمنٹ

ORB SPY R-multiple POSITION SIZING risk management BREAKOUT momentum INTRADAY
تخلیق کی تاریخ: 2025-08-11 09:54:03 آخر میں ترمیم کریں: 2025-08-11 09:54:03
کاپی: 0 کلکس کی تعداد: 212
2
پر توجہ دیں
319
پیروکار

اڈاپٹیو اوپننگ رینج بریک آؤٹ مومینٹم اسٹریٹجی اور رسک آپٹمائزڈ پوزیشن مینجمنٹ اڈاپٹیو اوپننگ رینج بریک آؤٹ مومینٹم اسٹریٹجی اور رسک آپٹمائزڈ پوزیشن مینجمنٹ

جائزہ

خودکشی شدہ اوپننگ بینڈ بریک ڈیمینشیا حکمت عملی ایک دن کے اندر تجارتی نظام ہے جو مارکیٹ کے آغاز کے بعد پہلے 15 منٹ کے گرافک بریک کو پکڑنے پر مرکوز ہے۔ یہ حکمت عملی اوپننگ بینڈ بریک ڈیمینشیا ((ORB) اصول پر مبنی ہے ، جس میں خطرے کے انتظام اور پوزیشن کے حساب کتاب کے عین مطابق طریقے شامل ہیں ، جس کی وجہ سے یہ SPY جیسے اعلی لیکویڈیٹی اثاثوں پر عمدہ کارکردگی کا مظاہرہ کرتا ہے۔ اس کا بنیادی نظریہ مارکیٹ کے کھلنے کے بعد ابتدائی متحرک سمت کی نشاندہی کرنا اور اس سمت پر تجارت کرنا ہے ، اس شرط پر کہ اس میں سخت خطرے پر قابو رکھا جائے۔ یہ حکمت عملی جمع اور خالی کرنے کی اجازت دیتی ہے ، اور لچکدار منافع بخش طریقوں کی پیش کش کرتی ہے ، جس میں دوگنا خطرے پر مبنی قیمت کی تجارت شامل ہے (® ضرب یا دن کے اختتام پر خالی پوزیشن۔

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

اس حکمت عملی کا بنیادی اصول مارکیٹ کے کھلنے کے بعد پہلے 15 منٹ کی K لائن سے پیدا ہونے والی دشاتمک حرکیات کو استعمال کرنا ہے۔ اس کے لاگو ہونے کی منطق مندرجہ ذیل ہے۔

  1. مارکیٹ کے کھلنے کے وقت کا تعین کریں (مخصوص گھنٹوں اور منٹ کے پیرامیٹرز کو ترتیب دے کر)
  2. ٹریڈنگ شروع ہونے کے بعد پہلے 15 منٹ کے لئے K لائن کی قیمتوں کی شناخت اور ریکارڈ کریں
  3. K لائن کی سمت کا تعین کریں:
    • اگر اختتامی قیمت کھلنے والی قیمت سے زیادہ ہے (سبز K لائن) ، اور زیادہ کرنے کی اجازت ہے ، تو K لائن کے اختتام پر زیادہ کریں
    • اگر اختتامی قیمت کھلنے کی قیمت سے کم ہے (سرخ K لائن) ، اور خالی کرنے کی اجازت ہے ، تو K لائن کے اختتام پر خالی کریں
  4. خطرے کے انتظام کے پیرامیٹرز کی ترتیب:
    • زیادہ تجارت کرنے کے لئے کم سے کم K لائن پر سٹاپ نقصان کی حد مقرر کی گئی ہے
    • ٹریڈنگ کے لئے ٹریڈنگ کے لئے ٹریڈنگ کے لئے ٹریڈنگ کے لئے ٹریڈنگ کے لئے ٹریڈنگ کے لئے ٹریڈنگ کے لئے ٹریڈنگ کے لئے ٹریڈنگ کے لئے ٹریڈنگ کے لئے ٹریڈنگ کے لئے ٹریڈنگ کے لئے
    • خطرے کی رقم ® کو داخلہ قیمت اور اسٹاپ قیمت کے فرق کی مطلق قیمت کے طور پر شمار کیا جاتا ہے
  5. اکاؤنٹ کے سائز اور فی ٹرانزیکشن خطرہ فی صد کی بنیاد پر پوزیشن کا صحیح سائز:
    • پوزیشن = اکاؤنٹ کا سائز × خطرے کا فیصد ÷ خطرے کی رقم
  6. منافع بخش حکمت عملی کا تعین:
    • اگر “10R” موڈ کا انتخاب کیا جاتا ہے تو ، منافع کا ہدف 10 گنا خطرہ کی رقم ہے جس میں داخلے کی قیمت شامل ہے (زیادہ) یا کم (کم)
    • اگر آپ “EoDOnly” موڈ کا انتخاب کرتے ہیں تو ، آپ صرف دن کے اختتام پر تجارت کریں گے
  7. ایک ٹرانزیکشن فی دن کی حد کو نافذ کریں (اگر یہ اختیار فعال ہے)
  8. مقررہ ٹریڈنگ دن کے اختتام پر تمام غیر منقولہ پوزیشنوں کو لازمی طور پر ختم کرنا

یہ حکمت عملی روایتی تکنیکی اشارے پر انحصار نہیں کرتی ہے بلکہ خالص طور پر قیمت کے رویے اور وقت کی ساخت پر مبنی ہے۔ اس سے اوور فٹ ہونے کا خطرہ کم ہوتا ہے اور حکمت عملی کے تصور کو آسان اور موثر بنا دیتا ہے۔

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

کوڈ کا گہرائی سے تجزیہ کرنے کے بعد ، اس حکمت عملی میں درج ذیل نمایاں فوائد ہیں:

  1. واضح انٹری سگنل: حکمت عملی واضح اور غیر متزلزل انٹری سگنل فراہم کرنے کے لئے شروع ہونے کے بعد پہلے 15 منٹ کے لئے K لائن کی سمت پر مبنی ہے ، جس سے ذہنی فیصلے سے گریز کیا جاتا ہے۔

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

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

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

  5. وقت کی کارکردگی: حکمت عملی مارکیٹ کے کھلنے کے بعد پہلے وقت پر توجہ مرکوز کرتی ہے ، اس وقت عام طور پر اعلی اتار چڑھاؤ اور سمت کے مواقع ہوتے ہیں ، جو تجارت کے وقت کو موثر انداز میں استعمال کرنے میں معاون ہوتے ہیں۔

  6. تجارت سے زیادہ تحفظ“ایک تجارت روزانہ” آپشن زیادہ تجارت سے بچنے کے لئے موثر ہے ، جو بہت سے دن کے تاجروں کو درپیش ایک عام مسئلہ ہے۔

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

  8. سادہ منطقی ساختحکمت عملی پیچیدہ اشارے کے مجموعے پر انحصار نہیں کرتی ہے ، بلکہ قیمت کے سادہ اور واضح اصولوں پر مبنی ہے ، جس سے حکمت عملی کی ناکامی اور زیادہ فٹ ہونے کا خطرہ کم ہوجاتا ہے۔

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

اسٹریٹجک رسک

اس حکمت عملی کے عمدہ ڈیزائن کے باوجود ، مندرجہ ذیل ممکنہ خطرات اور چیلنجز موجود ہیں:

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

  2. جعلی دراندازی کا خطرہ: افتتاحی کے بعد پہلے 15 منٹ کے لئے K لائن کی سمت ایک غلط سگنل ہوسکتی ہے ، اس کے بعد قیمت تیزی سے الٹ سکتی ہے جس سے اسٹاپ نقصان کا سبب بنتا ہے۔ تصدیق کے طریقہ کار کو شامل کرنے پر غور کیا جاسکتا ہے ، مثال کے طور پر ، تجارت کو انجام دینے سے پہلے قیمت کی حد سے تجاوز کرنے کی ضرورت ہوتی ہے۔

  3. لیکویڈیٹی کا خطرہاس حکمت عملی کا اطلاق اعلی لیکویڈیٹی والے اثاثوں جیسے ایس پی وائی پر کیا جانا چاہئے اور مارکیٹ کے انتہائی اتار چڑھاؤ والے ماحول میں تجارت سے گریز کیا جانا چاہئے۔

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

  5. ٹائم زون انحصار: حکمت عملی تجارت کا وقت طے کرنے کے لئے مخصوص ٹائم زون ((یورپ / اسٹاک ہوم) کا استعمال کرتی ہے ، جس کی وجہ سے ٹائم زون کی غلط ترتیب پر غلط اندراج ہوسکتا ہے۔ ٹائم زون کی توثیق کا طریقہ کار شامل کرنے یا رشتہ دار وقت کی گنتی کا استعمال کرنے کی تجویز ہے۔

  6. واحد ٹائم فریم انحصار: حکمت عملی صرف 15 منٹ کے ٹائم فریم پر مبنی ہے ، جس میں ملٹی ٹائم فریم کی تصدیق کی کمی ہے۔ اعلی ٹائم فریم کے رجحان فلٹر کو شامل کیا جاسکتا ہے تاکہ اس بات کو یقینی بنایا جاسکے کہ تجارت کی سمت بڑے رجحانات کے مطابق ہے۔

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

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

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

کوڈ تجزیہ کی بنیاد پر ، اس حکمت عملی کے لئے کچھ اہم اصلاحات یہ ہیں:

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

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

  3. متحرک ایڈجسٹمنٹ R ضرب: مارکیٹ میں اتار چڑھاؤ کے مطابق منافع کے اہداف کو خود بخود ایڈجسٹ کرنے کے لئے آر کی ضرب۔ مثال کے طور پر ، اعلی اتار چڑھاؤ والے ماحول میں اعلی آر کی ضرب کا استعمال کریں (جیسے 12-15R) ، اور کم اتار چڑھاؤ والے ماحول میں زیادہ محتاط اہداف کا استعمال کریں (جیسے 6-8R) ۔ اس طرح کی موافقت کا طریقہ مارکیٹ کی حالت سے بہتر طور پر مل سکتا ہے۔

  4. کچھ منافع بخش میکانزم شامل کریں: مرحلہ وار منافع بخش حکمت عملی کو نافذ کریں ، جیسے 5R پر 50٪ پوزیشن کو صاف کرنا ، باقی پوزیشنوں کو تعاقب میں روکنے کے لئے یا 10R ہدف تک رکھنا۔ اس طرح کے طریقہ کار سے بڑے منافع کی صلاحیت کو برقرار رکھتے ہوئے کچھ منافع کو لاک کیا جاسکتا ہے۔

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

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

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

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

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

خلاصہ کریں۔

خود کار طریقے سے کھولنے کے وقفے کے وقفے کے وقفے کے وقفے کی حکمت عملی ایک اچھی طرح سے ڈیزائن کردہ intraday ٹریڈنگ سسٹم ہے جس میں واضح اندراج کی منطق، درست خطرے کے انتظام اور لچکدار منافع بخش میکانیزم شامل ہیں. حکمت عملی کا مرکز مارکیٹ کے کھلنے کے بعد پہلے 15 منٹ کے K لائن میں ظاہر ہونے والی دشاتمک حرکیات کو پکڑنے اور سخت خطرے کے کنٹرول اور پوزیشن مینجمنٹ کے ذریعے تجارت کے عمل کو بہتر بنانے میں ہے.

اس حکمت عملی کے اہم فوائد اس کے سادہ اور واضح تجارتی منطق ، پوزیشن کی حساب کتاب کے ل adaptable موزوں طریقہ کار اور سخت خطرے کے کنٹرول کے فریم ورک میں ہیں۔ اس کے علاوہ ، اس حکمت عملی نے روزانہ تجارت کی تعداد کو محدود کرکے اور تجارت کے اختتامی وقت کو طے کرکے ، اس سے زیادہ تجارت اور راتوں رات کے خطرے کو مؤثر طریقے سے کنٹرول کیا ہے۔

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

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

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

//@version=5
strategy("ORB 15m – SE First 15min Breakout (Long/Short)",
     overlay=true, initial_capital=25000, pyramiding=0,
     calc_on_every_tick=false, process_orders_on_close=true)

// ===== Inputs =====
accountSize     = input.float(25000, "Account Size", minval=1)
riskPct         = input.float(1.0,   "Risk per Trade (%)", minval=0.01, step=0.1)
oneTradePerDay  = input.bool(true,   "Limit to 1 Trade per Day?")
useLongs        = input.bool(true,   "Allow Longs?")
useShorts       = input.bool(true,   "Allow Shorts?")
tpMode          = input.string("10R","Take Profit Mode", options=["10R","EoDOnly"])
R_multiple      = input.float(10.0,  "TP = R multiple (if 10R)", minval=0.1, step=0.5)
sessEndHourSE   = input.int(22, "Session End Hour (Europe/Stockholm)", minval=0, maxval=23)
sessEndMinSE    = input.int(0,  "Session End Minute", minval=0, maxval=59)
sessionOpenHour = input.int(15, "Session Open Hour (Europe/Stockholm)", minval=0, maxval=23)
sessionOpenMin  = input.int(30, "Session Open Minute", minval=0, maxval=59)

// ===== Detect first 15-min candle after open =====
isSessionOpen = hour(time, "Europe/Stockholm") == sessionOpenHour and minute(time, "Europe/Stockholm") == sessionOpenMin
is15m         = timeframe.isintraday and timeframe.multiplier == 15
plotchar(not is15m, title="Timeframe Warning", char="X", location=location.top, color=color.red, size=size.tiny)

// Reference candle vars
var int   refBarIndex = na
var float refOpen     = na
var float refHigh     = na
var float refLow      = na
var float refClose    = na

if barstate.isnew and isSessionOpen
    refBarIndex := bar_index
    refOpen     := open
    refHigh     := high
    refLow      := low
    refClose    := close

if bar_index == refBarIndex
    refHigh  := math.max(refHigh, high)
    refLow   := math.min(refLow, low)
    refClose := close

// Direction
refIsGreen = not na(refOpen) and not na(refClose) and (refClose > refOpen)
refIsRed   = not na(refOpen) and not na(refClose) and (refClose < refOpen)

// One trade per day
var int lastTradeYmd = 0
todayYmd    = year * 10000 + month * 100 + dayofmonth
tradedToday = (lastTradeYmd == todayYmd)

// Trade vars
var float entry     = na
var float stopPrice = na
var float r         = na
var float tp        = na
var int   qty       = 0

// Entry at close of first 15-min candle
isRefBarClose = barstate.isconfirmed and (bar_index == refBarIndex)
if isRefBarClose and not tradedToday and strategy.position_size == 0
    entry := close

    // Long
    if refIsGreen and useLongs
        stopPrice := refLow
        r := math.abs(entry - stopPrice)
        qty := r > 0 ? int(math.floor((accountSize * (riskPct * 0.01)) / r)) : 1
        qty := qty < 1 ? 1 : qty
        strategy.entry("L", strategy.long, qty=qty)
        if tpMode == "10R"
            tp := entry + (R_multiple * r)
            strategy.exit("L-Exit", from_entry="L", stop=stopPrice, limit=tp)
        else
            strategy.exit("L-Exit", from_entry="L", stop=stopPrice)
        lastTradeYmd := todayYmd

    // Short
    if refIsRed and useShorts
        stopPrice := refHigh
        r := math.abs(entry - stopPrice)
        qty := r > 0 ? int(math.floor((accountSize * (riskPct * 0.01)) / r)) : 1
        qty := qty < 1 ? 1 : qty
        strategy.entry("S", strategy.short, qty=qty)
        if tpMode == "10R"
            tp := entry - (R_multiple * r)
            strategy.exit("S-Exit", from_entry="S", stop=stopPrice, limit=tp)
        else
            strategy.exit("S-Exit", from_entry="S", stop=stopPrice)
        lastTradeYmd := todayYmd

// Flatten at session end
sessEndTsSE = timestamp("Europe/Stockholm", year, month, dayofmonth, sessEndHourSE, sessEndMinSE)
if time_close == sessEndTsSE and strategy.position_size != 0
    strategy.close_all()