ট্রেডিং সেশনের উপর ভিত্তি করে রেঞ্জ ব্রেকআউট মোমেন্টাম কৌশল এবং গতিশীল ঝুঁকি ব্যবস্থাপনা

Moving Average EMA SMA Range Breakout Session Trading Risk-Reward Ratio BREAK-EVEN
সৃষ্টির তারিখ: 2025-05-26 13:03:40 অবশেষে সংশোধন করুন: 2025-05-26 13:03:40
অনুলিপি: 2 ক্লিকের সংখ্যা: 232
2
ফোকাস
319
অনুসারী

ট্রেডিং সেশনের উপর ভিত্তি করে রেঞ্জ ব্রেকআউট মোমেন্টাম কৌশল এবং গতিশীল ঝুঁকি ব্যবস্থাপনা ট্রেডিং সেশনের উপর ভিত্তি করে রেঞ্জ ব্রেকআউট মোমেন্টাম কৌশল এবং গতিশীল ঝুঁকি ব্যবস্থাপনা

ওভারভিউ

এই কৌশলটি একটি নির্দিষ্ট ট্রেডিং সময়ের উপর ভিত্তি করে একটি ব্যাচ ব্রেকিং কৌশল, যা মূলত বাজারের সংজ্ঞায়িত ট্রেডিং সময়ের মধ্যে গঠিত মূল্যের ব্যাচগুলির উপর ভিত্তি করে ট্রেডিং করে। এই কৌশলটি সময়কাল বিশ্লেষণ, গতিশীল ব্রেকিং, চলমান গড় ফিল্টারিং এবং একটি সূক্ষ্ম ঝুঁকি ব্যবস্থাপনা সিস্টেমকে সংযুক্ত করে, যা বাজারের পরিবর্তনের সময় ট্রেডিংয়ের সুযোগগুলিকে কম ওঠানামা থেকে উচ্চ ওঠানামা অবস্থায় নিয়ে যায়। কৌশলটি বিশেষত পূর্বনির্ধারিত ট্রেডিং সময়ের মধ্যে (যেমন এশিয়ান, ইউরোপীয় বা আমেরিকান স্টক) প্রতিষ্ঠিত মূল্যের উচ্চতা এবং নিম্নের দিকে মনোযোগ দেয় এবং যখন দামগুলি এই মূল স্তরগুলি অতিক্রম করে তখন বাজারে প্রবেশ করে।

কৌশল নীতি

কৌশলটির মূল নীতিটি একটি নির্দিষ্ট সময়ের মধ্যে বাজারে প্রতিষ্ঠিত সমর্থন এবং প্রতিরোধের অবস্থার উপর ভিত্তি করে। নির্দিষ্ট কার্যকর যুক্তিটি নিম্নরূপঃ

  1. সময়সীমার সংজ্ঞা এবং সময়সীমার গঠনকৌশলঃ ব্যবহারকারীকে নির্দিষ্ট ট্রেডিং সময় নির্ধারণ করার অনুমতি দেয়। এই সময়ের মধ্যে, সিস্টেমটি ক্রমাগত ট্র্যাক করে এবং দামের সর্বোচ্চ এবং সর্বনিম্ন পয়েন্টগুলি আপডেট করে, ট্রেডিং অঞ্চল তৈরি করে।

  2. ব্রেক কন্ডিশন সনাক্তকরণ

    • একাধিক শর্তঃ মূল্য বন্ধের সময়কালের সর্বোচ্চ পয়েন্টের উপরে
    • শূন্য শর্তঃ মূল্য বন্ধের সময়কালের সর্বনিম্ন পয়েন্টের নিচে
  3. চলমান গড় ফিল্টার করুন: নীতিটি একটি অপশনাল মুভিং এভারেজ ফিল্টারিং ব্যবস্থা প্রদান করে, যা সূচকীয় মুভিং এভারেজ (EMA) বা সাধারণ মুভিং এভারেজ (SMA) হতে পারে। এটি চালু হলে, সিস্টেমটি জিজ্ঞাসা করবেঃ

    • মাল্টিপ্লেয়ার ট্রেডিংঃ দাম অবশ্যই চলমান গড়ের উপরে থাকতে হবে
    • শূন্যপদ ট্রেডিংঃ দাম চলমান গড়ের নীচে থাকতে হবে এই ফিল্টারটি ট্রেডিংয়ের দিকনির্দেশনাকে সামগ্রিক প্রবণতার সাথে সামঞ্জস্যপূর্ণ করে তোলার লক্ষ্যে তৈরি করা হয়েছে।
  4. ঝুঁকি ব্যবস্থাপনা সেটিং

    • স্টপ লস (এসএল) সেটিং এর জন্য দুটি বিকল্প রয়েছেঃ
      • উচ্চ-নিম্ন-ভিত্তিকঃ মাল্টি-হেড ট্রেডিংয়ের জন্য স্টপ লস সেট করা হয় সময়ের নিম্নতম সময়ে, খালি হেড ট্রেডিংয়ের জন্য স্টপ লস সেট করা হয় সময়ের উচ্চতম সময়ে
      • মধ্যবর্তী পরিসরের উপর ভিত্তি করেঃ স্টপ লস টাইমফ্রেমের মধ্যবর্তী স্থানে অবস্থিত
    • স্টপ লস আরও সমন্বয় করা হবে যাতে পয়েন্টের পার্থক্যের কারণগুলি বিবেচনা করা যায়
    • স্টপ থামানো (টিপি) একটি পূর্বনির্ধারিত রিস্ক-রিটার্ন অনুপাতের উপর ভিত্তি করে গণনা করা হয়
    • লাভ-ক্ষতি ভারসাম্য ফাংশন উপলব্ধ, যখন ট্রেডিং নির্দিষ্ট ঝুঁকি-লাভের স্তরে পৌঁছে যায় তখন স্টপ লস সরানো হয়
  5. লেনদেন ব্যবস্থাপনা

    • দৈনিক সর্বোচ্চ লেনদেনের সীমা
    • প্রতিটি সেশনের শুরুতে কাউন্টার এবং ব্যবধানের মান পুনরায় সেট করুন
    • সেশনের শেষে সেশন ট্র্যাকিং বন্ধ করুন

এই কৌশলটি বাজারের প্রবণতার উপর ভিত্তি করে ডিজাইন করা হয়েছে যা নিম্ন ওঠানামার সময় শক্তি জমা করে এবং তারপরে সমালোচনামূলক মূল্যের স্তরটি ভেঙে দেওয়ার সময় মুক্তি দেয়। নিশ্চিতকরণের জন্য অপেক্ষা করে, কৌশলটি মিথ্যা ব্রেকআউটের ঝুঁকি হ্রাস করার চেষ্টা করে, এবং একটি বিকল্প চলমান গড় ফিল্টার সংকেতের নির্ভরযোগ্যতা আরও বাড়ায়।

কৌশলগত সুবিধা

এই কৌশলটির কোড বাস্তবায়ন বিশ্লেষণ করে, আমরা নিম্নলিখিত প্রধান সুবিধাগুলির সংক্ষিপ্তসার করতে পারিঃ

  1. বাজারের কাঠামোর উপর ভিত্তি করে বস্তুনিষ্ঠ প্রবেশ: কৌশলটি সময়ের মধ্যে গঠিত দামের ব্যাপ্তিকে বাজার কাঠামোর একটি উদ্দেশ্যমূলক প্রতিফলন হিসাবে ব্যবহার করে, এটি বিষয়গত বিচার বা স্থির প্যারামিটারের উপর নির্ভর করে না। এটি কৌশলটিকে বিভিন্ন বাজার পরিস্থিতি এবং অস্থিরতার সাথে খাপ খাইয়ে নিতে সক্ষম করে।

  2. নমনীয় সময় সেটিং: ব্যবহারকারীরা বিভিন্ন বাজারের বৈশিষ্ট্য এবং ব্যক্তিগত ট্রেডিং স্টাইলের উপর ভিত্তি করে ট্রেডিংয়ের সময়কে সামঞ্জস্য করতে পারে, যা কৌশলগুলিকে বিভিন্ন বাজার এবং সময় অঞ্চলগুলিতে প্রয়োগ করতে দেয়।

  3. মাল্টিলেয়ার ফিল্টারিং: ব্রেকিং এবং মুভিং এভারেজ ফিল্টারিংয়ের সমন্বয়ে, কৌশলটি সংকেতের গুণমানকে উল্লেখযোগ্যভাবে উন্নত করে এবং ভুয়া ব্রেকিংয়ের সম্ভাবনা হ্রাস করে। বিশেষত ট্রেন্ডিং বাজারে, মুভিং এভারেজ ফিল্টারগুলি বিপরীতমুখী লেনদেন রোধ করতে পারে।

  4. সুনির্দিষ্ট ঝুঁকি ব্যবস্থাপনা

    • প্রকৃত বাজার ওঠানামার উপর ভিত্তি করে গতিশীল স্টপ লস সেটিং
    • একটি পূর্বনির্ধারিত রিস্ক-রিটার্ন অনুপাত যা ট্রেডিং ব্যবস্থাপনাকে সুসংগত করে
    • লাভ-ক্ষতি ভারসাম্যতা ব্যবসায়ের ক্ষতির সম্ভাবনা হ্রাস করে
    • লেনদেনের সীমাবদ্ধতা অত্যধিক লেনদেন এবং ঝুঁকি জমা হতে বাধা দেয়
  5. অভিযোজনযোগ্য: কৌশলগত পরামিতিগুলি বিভিন্ন সময়কাল, বাজার এবং সম্পদ শ্রেণীর জন্য ব্যাপকভাবে অভিযোজিত হতে পারে। চলমান গড়ের ধরণ, দৈর্ঘ্য, ঝুঁকি-ফেরতের অনুপাত এবং অন্যান্য মূল পরামিতিগুলি নির্দিষ্ট অবস্থার সাথে সামঞ্জস্য রেখে অপ্টিমাইজ করা যেতে পারে।

  6. সহজেই মনিটর এবং অপ্টিমাইজ করা যায়: কোড বাস্তবায়ন সুস্পষ্ট দৃশ্যমান উপাদান (যেমন ব্যাপ্তি উচ্চ এবং নিম্ন পয়েন্ট এবং চলমান গড়ের গ্রাফিকাল উপস্থাপনা) এবং সতর্কতা শর্তাবলী অন্তর্ভুক্ত করে, যা পর্যবেক্ষণ এবং পরবর্তী অপ্টিমাইজেশানকে সহজ করে তোলে।

কৌশলগত ঝুঁকি

যদিও এই কৌশলটির অনেক সুবিধা রয়েছে, তবে এর কিছু অন্তর্নিহিত ঝুঁকি এবং সম্ভাব্য ত্রুটি রয়েছেঃ

  1. ভুয়া সংকেতের ঝুঁকি: বাজারে প্রায়শই মিথ্যা ব্রেকিং দেখা যায়, অর্থাৎ দামগুলি একটি সংক্ষিপ্ত ব্রেকিংয়ের পরে দ্রুত প্রত্যাহার করে। যদিও কৌশলটি ক্লোজিং মূল্য নিশ্চিতকরণ এবং একটি বিকল্প চলমান গড় ফিল্টার দিয়ে এই ঝুঁকিটি হ্রাস করে, তবে এটি সম্পূর্ণরূপে মুছে ফেলা যায় না।

    • সমাধান: অতিরিক্ত নিশ্চিতকরণ সূচক যুক্ত করার কথা বিবেচনা করা যেতে পারে, যেমন ট্রেডিং ভলিউম ব্রেকডাউন বা ওঠানামার হার ফিল্টার, বা ব্রেকডাউনের পরে নির্দিষ্ট সময়ের জন্য দাম বজায় রাখার জন্য অনুরোধ করা যেতে পারে।
  2. সময় নির্ভরতা: কৌশলটির কার্যকারিতা অত্যন্ত নির্বাচিত সময়ের বৈশিষ্ট্য উপর নির্ভর করে। যদি নির্বাচিত সময়কালগুলি ধারাবাহিকভাবে অর্থপূর্ণ মূল্যের ব্যাপ্তি তৈরি করতে না পারে তবে কৌশলটির কার্যকারিতা প্রভাবিত হতে পারে।

    • সমাধান: বিভিন্ন বাজার এবং সম্পদ বিশ্লেষণের বিস্তারিত সময়সীমা নির্ধারণ করুন যাতে কার্যকর ব্যবসায়ের সময়সীমা তৈরি করা যায়।
  3. স্টপ লস সেটিং ঝুঁকিউচ্চ অস্থিরতার বাজারে, সময়কালের উচ্চ-নিম্নের উপর ভিত্তি করে স্টপ-ওভারগুলি অত্যধিক প্রশস্ত হতে পারে, যার ফলে ঝুঁকি বেশি হয়; এবং নিম্ন অস্থিরতার বাজারে, স্টপ-ওভারগুলি খুব সংকীর্ণ হতে পারে, যার ফলে অপ্রয়োজনীয়ভাবে ট্রিগার করা হয়।

    • সমাধান: অস্থিরতার উপর ভিত্তি করে ডায়নামিক স্টপ লস অ্যাডজাস্টমেন্ট, অথবা সর্বনিম্ন/সর্বোচ্চ স্টপ লস রেঞ্জের সীমাবদ্ধতা যোগ করা।
  4. ফিক্সড রিস্ক-রিটার্ন অনুপাত সমস্যাস্থির রিটার্ন-রিস্ক অনুপাত সব বাজার অবস্থার জন্য সর্বোত্তম নাও হতে পারে। শক্তিশালী প্রবণতা বাজারগুলিতে, উচ্চতর রিস্ক-রিস্ক অনুপাত আরও উপযুক্ত হতে পারে, এবং ক্রস বাজারগুলিতে, নিম্নতর অনুপাত আরও উপযুক্ত হতে পারে।

    • সমাধান: বাজারের অবস্থার উপর ভিত্তি করে স্বনির্ধারিত রিস্ক-রিটার্ন অনুপাত অর্জন বিবেচনা করুন (যেমন ওঠানামা বা প্রবণতার শক্তি) ।
  5. বাজারের অভাব: এই কৌশলটিতে বিভিন্ন বাজার পরিস্থিতির মধ্যে পার্থক্য করার জন্য কোন সুস্পষ্ট প্রক্রিয়া নেই (যেমন ট্রেন্ডিং বাজার বনাম ট্রান্সপ্ল্যান্ট বাজার) এবং এটি এমন বাজার পরিস্থিতিতে সংকেত তৈরি করতে পারে যা একটি ব্রেকিং কৌশলটির জন্য উপযুক্ত নয়।

    • সমাধান: বাজার পরিবেশে ফিল্টার যুক্ত করুন, যেমন ট্রেন্ড স্ট্যান্ডার্ড বা ওঠানামা বিশ্লেষণ, প্রতিকূল পরিস্থিতিতে কৌশলগুলিকে সামঞ্জস্য বা নিষ্ক্রিয় করুন।
  6. ট্রেডিং ফ্রিকোয়েন্সিযদিও প্রতিদিনের লেনদেনের সীমাবদ্ধতা অতিরিক্ত লেনদেনের প্রতিরোধ করে, তবে কার্যকর সংকেতগুলি মিস করা সম্ভব, বিশেষত উচ্চ অস্থিরতার দিনগুলিতে।

    • সমাধান: আরও বুদ্ধিমান লেনদেনের ফ্রিকোয়েন্সি নিয়ন্ত্রণের জন্য বিবেচনা করুন, যেমন বাজারের অস্থিরতা বা পূর্ববর্তী লেনদেনের সাফল্যের উপর ভিত্তি করে স্ব-অনুকূলিতকরণ সীমাবদ্ধতা।

কৌশল অপ্টিমাইজেশনের দিকনির্দেশনা

নীতি কোডের গভীর বিশ্লেষণের উপর ভিত্তি করে, নিম্নলিখিত কয়েকটি সম্ভাব্য অপ্টিমাইজেশনের দিক রয়েছেঃ

  1. স্বনির্ধারিত সময় সেট করুন

    • বর্তমান কৌশলটি একটি নির্দিষ্ট সময়সীমার শুরু এবং শেষ সময় ব্যবহার করে। একটি মূল্যবান উন্নতি হ’ল স্বনির্ধারিত সময়সীমা সনাক্তকরণ, যা স্বয়ংক্রিয়ভাবে ইতিহাসের ওঠানামা প্যাটার্নের উপর ভিত্তি করে সর্বোত্তম সময়সীমা সেটিং নির্ধারণ করে।
    • এই অপ্টিমাইজেশানটি বিভিন্ন বাজারের মৌসুমী প্যাটার্ন এবং ক্রমাগত পরিবর্তনশীল প্রকৃতির সাথে সামঞ্জস্যপূর্ণ কৌশলগুলিকে সক্ষম করবে।
  2. উন্নতিতে ব্রেকথ্রু স্বীকৃতি

    • লেনদেনের পরিমাণ নিশ্চিতকরণের প্রয়োজনীয়তা বৃদ্ধি করুন, যাতে লেনদেনের পরিমাণ উল্লেখযোগ্যভাবে বৃদ্ধি পায়
    • ডায়নামিক ব্রেকআউট থ্রেশহোল্ড অর্জন, সাম্প্রতিক ওঠানামার উপর ভিত্তি করে প্রয়োজনীয় ব্রেকআউট প্রস্থ
    • যোগ করা হয়েছে মূল্য আন্দোলন নিশ্চিতকরণ, যেমন একটি ব্রেকডাউন পরে একটি নির্দিষ্ট স্ক্রিনশট ফর্ম্যাট অনুরোধ করা হয়
    • এই উন্নতিগুলি প্রতারণামূলক ব্যবসায়ের সংখ্যা উল্লেখযোগ্যভাবে হ্রাস করতে পারে এবং সামগ্রিকভাবে লাভজনকতা বাড়িয়ে তুলতে পারে।
  3. গতিশীল ঝুঁকি ব্যবস্থাপনা

    • বাজারের অস্থিরতার উপর ভিত্তি করে রিস্ক রিটার্নের অনুপাত
    • মার্কেট শর্তের উপর ভিত্তি করে আংশিক লাভের সেটআপের মতো আরও জটিল লেজ ঝুঁকি ব্যবস্থাপনা
    • সময় ভিত্তিক স্টপ লস যুক্ত করুন, দীর্ঘ সময়ের জন্য বিকশিত না হওয়া লেনদেনের জন্য প্লেইন করুন
    • এই অপ্টিমাইজেশানগুলি কৌশলগুলির ঝুঁকি-সমন্বিত রিটার্নকে উল্লেখযোগ্যভাবে উন্নত করতে পারে।
  4. বাজার পরিবেশ ফিল্টার

    • বাজার পরিবেশের শ্রেণিবদ্ধকরণ, প্রবণতা, পরিধি এবং রূপান্তরকারী বাজার অবস্থার পার্থক্য
    • চিহ্নিত বাজার পরিস্থিতির উপর ভিত্তি করে কৌশল প্যারামিটারগুলি সামঞ্জস্য করুন বা সম্পূর্ণরূপে সক্ষম / অক্ষম করুন
    • অস্বাভাবিক উচ্চ ওঠানামা চলাকালীন ট্রেডিং সামঞ্জস্য বা স্থগিত করার জন্য ওঠানামা ভিত্তিক ফিল্টার যুক্ত করুন
    • এই অপ্টিমাইজেশানটি অপ্রত্যাশিত ট্রেডিং এড়ানোর জন্য গুরুত্বপূর্ণ এবং দীর্ঘমেয়াদী পারফরম্যান্সকে উল্লেখযোগ্যভাবে উন্নত করতে পারে।
  5. মাল্টি টাইম ফ্রেম বিশ্লেষণ

    • ট্রেডিংয়ের দিকনির্দেশনাকে বৃহত্তর প্রবণতার সাথে সামঞ্জস্যপূর্ণ করার জন্য উচ্চতর সময়সীমার প্রবণতা সম্পর্কিত তথ্য একত্রিত করা
    • নিম্ন সময়ের ফ্রেমের দামের আচরণ ব্যবহার করে সঠিক প্রবেশের অপ্টিমাইজেশন
    • এই অপ্টিমাইজেশানটি ভর্তির সঠিকতা এবং সামগ্রিক সাফল্যের হার বাড়িয়ে তুলতে পারে।
  6. মেশিন লার্নিং

    • মেশিন লার্নিং অ্যালগরিদম ব্যবহার করে অপ্টিমাইজেশন প্যারামিটার
    • প্যাটার্ন সনাক্তকরণ সিস্টেম বাস্তবায়ন করা হয়েছে যাতে সফল হওয়ার সম্ভাবনা রয়েছে এমন বিপর্যয়গুলি সনাক্ত করা যায়
    • একটি নির্দিষ্ট ব্রেকআউটের সাফল্যের সম্ভাব্যতা অনুমান করার জন্য একটি পূর্বাভাস মডেল তৈরি করা
    • এই উন্নত অপ্টিমাইজেশানগুলি কৌশলকে নতুন স্তরে নিয়ে যেতে পারে, ডেটা-চালিত অন্তর্দৃষ্টি ব্যবহার করে ঐতিহ্যগত প্রযুক্তিগত বিশ্লেষণকে শক্তিশালী করতে পারে।

সারসংক্ষেপ

ট্রেডিং সময়ের উপর ভিত্তি করে ব্রেকডাউন গতিশীলতা কৌশল একটি বিস্তৃত ট্রেডিং সিস্টেম যা সময়ের বিশ্লেষণ, মূল্য ব্রেকডাউন, প্রবণতা নিশ্চিতকরণ এবং ঝুঁকি ব্যবস্থাপনার উপাদানগুলিকে একত্রিত করে। এর মূল সুবিধা হ’ল প্রবেশের পয়েন্ট সনাক্তকরণ এবং বস্তুনিষ্ঠ বাজার কাঠামোর উপর ভিত্তি করে সূক্ষ্ম ঝুঁকি নিয়ন্ত্রণ ব্যবস্থা।

এই কৌশলটি বিশেষত বাজারে প্রয়োগের জন্য উপযুক্ত যেখানে ট্রেডিংয়ের সময় নির্দিষ্ট, যেমন বৈদেশিক মুদ্রার বাজার এবং গ্লোবাল সূচক যা আঞ্চলিক ট্রেডিংয়ের সময় নির্দিষ্ট। কৌশলটি মূল মূল্যের স্তরগুলি সংজ্ঞায়িত করে এবং নিশ্চিতকরণের জন্য অপেক্ষা করে, যা মূল্যের ধারাবাহিকতা থেকে দিকনির্দেশের দিকে পরিবর্তনের চেষ্টা করে।

ভুয়া ব্রেকআউট ঝুঁকি এবং সময় নির্ভরতার মতো চ্যালেঞ্জ থাকা সত্ত্বেও, সুপারিশকৃত অপ্টিমাইজেশনের দিকনির্দেশনা যেমন স্বনির্ধারিত প্যারামিটার সেটিং, উন্নত ব্রেকআউট নিশ্চিতকরণ এবং গতিশীল ঝুঁকি ব্যবস্থাপনা দ্বারা এই ঝুঁকিগুলি কার্যকরভাবে পরিচালনা করা যেতে পারে।

এই কৌশলটির নমনীয়তা এবং কাস্টমাইজযোগ্যতা এটিকে বিভিন্ন ট্রেডিং স্টাইল এবং বাজারের অবস্থার জন্য উপযুক্ত করে তোলে। এটি একটি শক্তিশালী ভিত্তি সরবরাহ করে যা ব্যক্তিগত প্রয়োজন অনুসারে আরও কাস্টমাইজ এবং অপ্টিমাইজ করা যায়।

অবশেষে, এই কৌশলটির কার্যকারিতা নির্দিষ্ট বাজারের বৈশিষ্ট্যগুলির সাথে নিখুঁত সমন্বয় এবং কঠোর ট্রেডিং শৃঙ্খলার উপর নির্ভর করবে। ক্রমাগত পর্যবেক্ষণ, প্রতিক্রিয়া এবং অপ্টিমাইজেশনের মাধ্যমে, ব্যবসায়ীরা এই কৌশলটির কার্যকারিতা আরও বাড়িয়ে তুলতে পারে এবং এটিকে একটি শক্তিশালী ট্রেডিং সরঞ্জাম হিসাবে পরিণত করতে পারে।

কৌশল সোর্স কোড
/*backtest
start: 2025-05-21 00:00:00
end: 2025-05-25 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("Session Breakout Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1)

// === User Inputs ===
startHour = input.int(2, "Session Start Hour (UAE Time)")
endHour = input.int(4, "Session End Hour (UAE Time)")
useMA = input.bool(true, "Use Moving Average Confluence")
maType = input.string("EMA", "MA Type", options=["EMA", "SMA"])
maLength = input.int(50, "MA Length")
riskReward = input.float(3.0, "Risk-Reward Ratio")
breakEvenRR = input.float(1.0, "Break-even After X RR")
slType = input.string("LowHigh", "SL Type", options=["LowHigh", "MidRange"])
extraPips = input.float(5.0, "Extra Pips for Spread") * syminfo.mintick
maxTrades = input.int(3, "Max Trades per Day")

// === Time Calculations ===
t = time("30", "Etc/GMT-4") // UAE time in GMT+4
tHour = hour(t)
tMin = minute(t)

sessionOpen = (tHour == startHour and tMin == 0)
sessionClose = (tHour == endHour and tMin == 0)

var float sessionHigh = na
var float sessionLow = na
var int tradeCount = 0
var bool inSession = false

if sessionOpen
    sessionHigh := high
    sessionLow := low
    inSession := true
    tradeCount := 0
else if inSession and not sessionClose
    sessionHigh := math.max(sessionHigh, high)
    sessionLow := math.min(sessionLow, low)
else if sessionClose
    inSession := false

// === MA Filter ===
ma = maType == "EMA" ? ta.ema(close, maLength) : ta.sma(close, maLength)

// === Entry Conditions ===
longCondition = close > sessionHigh and (not useMA or close > ma)
shortCondition = close < sessionLow and (not useMA or close < ma)

// === SL and TP ===
rangeMid = (sessionHigh + sessionLow) / 2
sl = slType == "LowHigh" ? (shortCondition ? sessionHigh : sessionLow) : rangeMid
sl := shortCondition ? sl + extraPips : sl - extraPips
entry = close
risk = math.abs(entry - sl)
tp = shortCondition ? entry - risk * riskReward : entry + risk * riskReward
beLevel = shortCondition ? entry - risk * breakEvenRR : entry + risk * breakEvenRR

// === Trade Execution ===
canTrade = tradeCount < maxTrades

if longCondition and canTrade
    strategy.entry("Long", strategy.long)
    strategy.exit("TP/SL", from_entry="Long", limit=tp, stop=sl)
    tradeCount += 1

if shortCondition and canTrade
    strategy.entry("Short", strategy.short)
    strategy.exit("TP/SL", from_entry="Short", limit=tp, stop=sl)
    tradeCount += 1

// === Plotting ===
plot(inSession ? sessionHigh : na, title="Session High", color=color.blue)
plot(inSession ? sessionLow : na, title="Session Low", color=color.orange)
plot(useMA ? ma : na, title="Moving Average", color=color.gray)

// === Alerts ===
alertcondition(longCondition, title="Long Breakout Alert", message="Session breakout long signal")
alertcondition(shortCondition, title="Short Breakout Alert", message="Session breakout short signal")