ট্রেন্ড পুলব্যাক ঝুঁকিপূর্ণ গতিশীল প্রবেশ কৌশল সামঞ্জস্য করতে পারে

SMA EMA 移动平均线交叉 回调策略 风险管理 止损止盈 突破点保护 趋势确认
সৃষ্টির তারিখ: 2025-03-26 13:29:16 অবশেষে সংশোধন করুন: 2025-03-26 13:29:16
অনুলিপি: 0 ক্লিকের সংখ্যা: 276
2
ফোকাস
319
অনুসারী

ট্রেন্ড পুলব্যাক ঝুঁকিপূর্ণ গতিশীল প্রবেশ কৌশল সামঞ্জস্য করতে পারে ট্রেন্ড পুলব্যাক ঝুঁকিপূর্ণ গতিশীল প্রবেশ কৌশল সামঞ্জস্য করতে পারে

ওভারভিউ

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

কৌশলটির মূল অংশটি ছিল ট্রেন্ডের দিকনির্দেশ নিশ্চিত করার জন্য 10 এবং 25 চক্রের সহজ চলমান গড় (এসএমএ) ক্রস ব্যবহার করা এবং 150 চক্রের ইন্ডেক্সের চলমান গড় (ইএমএ) এর সাথে যুক্ত একটি অতিরিক্ত ফিল্টারিং শর্ত হিসাবে খালি হাতে লেনদেনের জন্য। মাল্টিহেড ট্রেডগুলি এসএমএ ক্রস করার পরে অবিলম্বে প্রবেশ করে না, তবে দামটি নির্দিষ্ট শতাংশে ফিরে আসার পরে প্রবেশের জন্য অপেক্ষা করে, এই পদ্ধতিটি প্রবেশের মূল্যকে অনুকূল করে তোলে এবং ঝুঁকি-ফিট-রেট অনুপাতকে বাড়িয়ে তোলে।

কৌশল নীতি

এই কৌশলটি মূলত নিম্নোক্ত কয়েকটি অংশে কাজ করেঃ

  1. প্রবণতা সনাক্তকরণ:

    • যখন 10 পিরিয়ডের এসএমএ 25 পিরিয়ডের এসএমএ অতিক্রম করে তখন সিস্টেমটি একটি বিজোড় প্রবণতা রূপান্তর সংকেত হিসাবে চিহ্নিত করে
    • যখন 10 চক্রের এসএমএ 25 চক্রের এসএমএ অতিক্রম করে তখন সিস্টেমটি এটিকে বিপরীতমুখী প্রবণতা রূপান্তর সংকেত হিসাবে চিহ্নিত করে
    • শূন্যপদ ট্রেডিং শুধুমাত্র যখন দাম 150 চক্রের EMA এর নীচে থাকে তখনই কার্যকর করা হয়, যাতে এটি বিস্তৃত প্রবণতার সাথে সামঞ্জস্যপূর্ণ থাকে
  2. মাল্টি-হেড রিডমেনশন প্রক্রিয়া:

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

    • যদি 10 চক্রের এসএমএ এর নিচে 25 চক্রের এসএমএ অতিক্রম করে এবং দাম 150 চক্রের ইএমএর নিচে থাকে, তাহলে অবিলম্বে শূন্যে প্রবেশ করুন
  4. ঝুঁকি ব্যবস্থাপনা এবং প্রস্থান কৌশল:

    • থামানো (টিপি) - বিন্যাসযোগ্য পয়েন্ট মুনাফা লক্ষ্য (ডিফল্টঃ 1000 পয়েন্ট)
    • স্টপ লস (SL) - বিন্যাসযোগ্য পয়েন্ট স্টপ লস স্তর (ডিফল্টঃ ২50 পয়েন্ট)
    • বেস পয়েন্ট ((BE) - যখন দাম সুবিধাজনক দিকে চলে যায় তখন স্টপ লস বেস পয়েন্টে চলে যায়
    • মাল্টি-হোল্ডার অতিরিক্ত প্রস্থান শর্তঃ যদি আপনি একটি মাল্টি-হোল্ডার পজিশন ধরে থাকেন তবে 10-চক্রের এসএমএ-এর অধীনে 25-চক্রের এসএমএ অতিক্রম করে এবং দাম 150-চক্রের ইএমএর নিচে থাকে, তাহলে প্রবণতা বিপরীত হওয়ার ফলে ক্ষতি এড়াতে মাল্টি-হোল্ডারকে বাধ্যতামূলকভাবে প্রস্থান করুন

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

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

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

  1. অনুকূলিত প্রবেশাধিকার:

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

    • সুনির্দিষ্ট স্টপ লস এবং স্টপ স্টপ প্যারামিটারগুলি প্রতিটি লেনদেনের জন্য সুস্পষ্ট ঝুঁকি নিয়ন্ত্রণ নিশ্চিত করে
    • সুরক্ষা ব্যবস্থার মাধ্যমে লাভজনক লেনদেন সুরক্ষিত হয় এবং সামগ্রিক প্রত্যাহার হ্রাস পায়
    • বিভিন্ন বাজারের অস্থিরতার সাথে সামঞ্জস্য রেখে সমস্ত ঝুঁকির প্যারামিটারগুলি সামঞ্জস্য করা যায়
  3. প্রবণতা সমন্বয় ফিল্টার:

    • দীর্ঘমেয়াদী প্রবণতার সাথে সামঞ্জস্যপূর্ণ স্বল্পমেয়াদী লেনদেন নিশ্চিত করার জন্য EMA150-কে অতিরিক্ত ফিল্টারিং শর্ত হিসাবে ব্যবহার করা
    • প্রবণতা বিপরীত হওয়ার সময় অতিরিক্ত প্রস্থান নিয়মগুলি মূলধন ক্ষতি থেকে রক্ষা করে
  4. ভিজ্যুয়াল ফিডব্যাক:

    • সিস্টেম একটি চার্ট উপর রিডাউন স্তর এবং সংকেত আঁকা, পরিষ্কার চাক্ষুষ নির্দেশিকা প্রদান
    • ট্রেডিং কার্যকরকরণ পয়েন্ট এবং প্রস্থান পয়েন্টগুলি স্পষ্টভাবে চিহ্নিত করা হয়েছে, যা প্রতিক্রিয়া এবং কৌশলগত উন্নতিতে সহায়তা করে
  5. অভিযোজনযোগ্য:

    • বিভিন্ন সম্পদ শ্রেণীর জন্য কৌশল, স্টক, ফরেক্স এবং সূচক সহ
    • বিভিন্ন বাজার পরিবেশ এবং ট্রেডিং স্টাইলের জন্য প্যারামিটারগুলিকে সামঞ্জস্য করা যায়

কৌশলগত ঝুঁকি

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

  1. দ্রুত বাজার ঝুঁকি:

    • উচ্চ অস্থিরতার বাজারে, দামগুলি পরিকল্পিত প্রবেশের পয়েন্ট বা স্টপ লস স্তরগুলিকে ছাড়িয়ে যেতে পারে
    • চরম বাজার ইভেন্টগুলি স্লাইড পয়েন্ট বৃদ্ধি করতে পারে যা প্রকৃত বাস্তবায়ন মূল্যকে প্রভাবিত করে
    • সমাধানঃ উচ্চ অস্থিরতার সময় রিটার্নের শতাংশ এবং ঝুঁকি প্যারামিটারগুলি সামঞ্জস্য করুন বা সাময়িকভাবে লেনদেন বন্ধ করার বিষয়ে বিবেচনা করুন
  2. বাজারের অস্থিরতা:

    • ট্রেন্ড নির্ভরতা নিশ্চিতকরণ কৌশল, যা বাজারকে ঘূর্ণিঝড়ের দিকে নিয়ে যেতে পারে
    • ঘন ঘন এসএমএ ক্রসিংয়ের ফলে ধারাবাহিক ক্ষতিগ্রস্ত লেনদেন হতে পারে
    • সমাধানঃ ADX সূচকের মতো অতিরিক্ত প্রবণতা-শক্তি ফিল্টার যুক্ত করা বা অস্থির বাজারে লেনদেন স্থগিত করা
  3. ফিক্সড পয়েন্ট ঝুঁকি ব্যবস্থাপনার সীমাবদ্ধতা:

    • স্থির পয়েন্ট ব্যবহার করে স্টপ এবং স্টপ-আপগুলি বিভিন্ন বাজারের অস্থিরতার সাথে খাপ খাইয়ে নিতে পারে না
    • যখন অস্থিরতা প্রসারিত হয়, এটি অকাল বিরতি বা স্টপ-আউট লক্ষ্যমাত্রা থেকে অনেক দূরে হতে পারে
    • সমাধানঃ ATR (আসল ওভাররাইডিং রেঞ্জ) এর উপর ভিত্তি করে গতিশীল স্টপ লস এবং স্টপ লেভেল বিবেচনা করুন
  4. প্রযুক্তিগত সূচকগুলির উপর অত্যধিক নির্ভরশীলতা:

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

    • ওভার-অপ্টিমাইজেশন প্যারামিটারগুলি কার্ভ ফিট হতে পারে এবং ভবিষ্যতে বাজারে খারাপ পারফরম্যান্স করতে পারে
    • সমাধানঃ যথেষ্ট দীর্ঘ ঐতিহাসিক তথ্য ব্যবহার করে ব্যাক-টেস্টিং করা এবং বিভিন্ন বাজার অবস্থার মধ্যে কৌশলটির স্থায়িত্ব যাচাই করা

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

কোড বিশ্লেষণের উপর ভিত্তি করে, এই কৌশলটির কয়েকটি মূল দিক যা অনুকূলিতকরণ করা যেতে পারেঃ

  1. গতিশীল ঝুঁকি ব্যবস্থাপনা:

    • স্থির পয়েন্টের স্টপ লস এবং স্টপস্টপকে ATR-ভিত্তিক গতিশীল স্তরে রূপান্তর করুন
    • এটি ঝুঁকি ব্যবস্থাপনাকে বর্তমান বাজারের অস্থিরতার সাথে খাপ খাইয়ে নিতে পারে, নিম্ন ওঠানামা চলাকালীন একটি ছোট স্টপ লস এবং উচ্চ ওঠানামা চলাকালীন একটি বড় স্টপ লস সেট করে
    • বাস্তবায়ন পদ্ধতিঃstopDistance = input.float(2.0) * ta.atr(14)কিভাবে গণনা করা হয়
  2. প্রবণতা শক্তি ফিল্টার করুন:

    • ট্রেন্ডের শক্তি পরিমাপ করার জন্য ADX (অর্ধমুখী সূচক) বা অনুরূপ সূচক যুক্ত করুন
    • ট্রেডিং শুধুমাত্র যখন প্রবণতা যথেষ্ট শক্তিশালী হয় (যেমন ADX > 25), বাজারের ঝাঁকুনিতে মিথ্যা সংকেত এড়াতে
    • এটি ভুল সংকেত হ্রাস করবে এবং বিজয়ী হওয়ার সম্ভাবনা বাড়িয়ে তুলবে।
  3. মাল্টি টাইম ফ্রেম বিশ্লেষণ:

    • ট্রেডিংকে বৃহত্তর প্রবণতাগুলির সাথে সামঞ্জস্যপূর্ণ করার জন্য উচ্চতর সময়সীমার প্রবণতা সম্পর্কিত তথ্যকে একত্রিত করা
    • উদাহরণস্বরূপ, ট্রেডিং শুধুমাত্র তখনই করা হয় যখন দিনের লাইন এবং 4 ঘন্টার চার্ট একই প্রবণতা নির্দেশ করে
    • এই পদ্ধতিটি ট্রেডিং সাফল্যের হার বাড়ায় এবং বিপরীতমুখী ট্রেডিংয়ের ঝুঁকি হ্রাস করে
  4. স্মার্ট রিটার্ন সনাক্তকরণ:

    • সহজ স্থির শতাংশের পরিবর্তে আরো জটিল রিডাউন সনাক্তকরণ পদ্ধতি ব্যবহার করা হয়েছে
    • ফিবোনাচি রিডাউন লেভেল বা মূল সমর্থন প্রতিরোধের ব্যবহার বিবেচনা করুন
    • এটি বাজার কাঠামোর সাথে আরও ভালভাবে সামঞ্জস্য রেখে আরও অর্থবহ প্রবেশের পয়েন্ট সরবরাহ করবে
  5. লেনদেনের পরিমাণ:

    • নিশ্চিতকরণ সংকেতের অংশ হিসাবে লেনদেনের পরিমাণ বিশ্লেষণ যোগ করা
    • কম লেনদেনের রিবাউন্ড এবং উচ্চ লেনদেনের লেনদেনের মধ্যে উচ্চ মানের প্রবেশের পয়েন্টগুলি সন্ধান করুন
    • লেনদেনের ভলিউম নিশ্চিতকরণ সিগন্যালের গুণমানকে উল্লেখযোগ্যভাবে উন্নত করতে পারে এবং লেনদেনের গোলমাল হ্রাস করতে পারে
  6. স্বনির্ধারিত প্যারামিটার:

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

সারসংক্ষেপ

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

এই কৌশলটির মূল সুবিধা হল এটির নমনীয়তা এবং সামঞ্জস্যতা, যা ব্যবসায়ীদের ব্যক্তিগত ঝুঁকি পছন্দ এবং বাজারের অবস্থার উপর ভিত্তি করে প্যারামিটারগুলিকে সামঞ্জস্য করতে দেয়। একই সাথে, সমন্বিত ঝুঁকি ব্যবস্থাপনা বৈশিষ্ট্যগুলি (স্টপ লস, স্টপ স্টপ এবং পয়েন্ট পয়েন্ট সহ) সম্পূর্ণ তহবিল সুরক্ষা প্রদান করে।

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

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

কৌশল সোর্স কোড
/*backtest
start: 2024-08-01 00:00:00
end: 2025-03-25 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("BTCUSD with adjustable sl,tp", 
     overlay=true, 
     initial_capital=10000, 
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=10, 
     calc_on_every_tick=true)

// ─────────────────────────────────────────────────────────────────────────────
//  ▌ USER INPUTS
// ─────────────────────────────────────────────────────────────────────────────
longSignalStyle  = input.string("Label Up", title="Long Signal Style", options=["Label Up", "Arrow Up", "Cross"])
shortSignalStyle = input.string("Label Down", title="Short Signal Style", options=["Label Down", "Arrow Down", "Cross"])

// Adjustable exit parameters (in points)
tpDistance    = input.int(1000, "Take Profit Distance (points)", minval=1)
slDistance    = input.int(250, "Stop Loss Distance (points)",   minval=1)
beTrigger     = input.int(500, "Break-Even Trigger Distance (points)", minval=1)

// Adjustable retracement percentage for long pullback entry (e.g. 0.01 = 1%)
retracementPct = input.float(0.01, "Retracement Percentage (e.g. 0.01 for 1%)", step=0.001)

// ─────────────────────────────────────────────────────────────────────────────
//  ▌ INDICATORS: SMA & EMA
// ─────────────────────────────────────────────────────────────────────────────
sma10  = ta.sma(close, 10)
sma25  = ta.sma(close, 25)
ema150 = ta.ema(close, 150)

plot(sma10,  color=color.blue,   title="SMA 10")
plot(sma25,  color=color.red,    title="SMA 25")
plot(ema150, color=color.orange, title="EMA 150")

// ─────────────────────────────────────────────────────────────────────────────
//  ▌ ENTRY CONDITIONS
// ─────────────────────────────────────────────────────────────────────────────
longCondition  = ta.crossover(sma10, sma25)
shortCondition = ta.crossunder(sma10, sma25)
shortValid     = close < ema150  // Only take shorts if price is below EMA150

// Plot immediate entry signals (for visual reference)
plotshape(longCondition and (strategy.position_size == 0), title="Long Signal", 
     style=(longSignalStyle == "Label Up" ? shape.labelup : (longSignalStyle == "Arrow Up" ? shape.triangleup : shape.cross)), 
     location=location.belowbar, color=color.green, text="Long", size=size.small)
plotshape(shortCondition and shortValid and (strategy.position_size == 0), title="Short Signal", 
     style=(shortSignalStyle == "Label Down" ? shape.labeldown : (shortSignalStyle == "Arrow Down" ? shape.triangledown : shape.cross)), 
     location=location.abovebar, color=color.red, text="Short", size=size.small)

// ─────────────────────────────────────────────────────────────────────────────
//  ▌ LONG PULLBACK ENTRY USING FIXED PERCENTAGE RETRACEMENT
// ─────────────────────────────────────────────────────────────────────────────
// We use persistent variables to track the pullback signal.
var bool longSignalActive = false
var float pullHigh = na        // highest high since long signal activation
var float retraceLevel = na    // level = pullHigh * (1 - retracementPct)

// Only consider new entries when no position is open.
if strategy.position_size == 0
    // When a long crossover occurs, activate the signal and initialize pullHigh.
    if longCondition
        longSignalActive := true
        pullHigh := high

    // If signal active, update pullHigh and compute retracement level.
    if longSignalActive
        pullHigh := math.max(pullHigh, high)
        retraceLevel := pullHigh * (1 - retracementPct)

        // When price bounces upward and crosses above the retracement level, enter long
        if ta.crossover(close, retraceLevel)
            strategy.entry("Long", strategy.long)
            longSignalActive := false

    // Short entries: enter immediately if conditions are met
    if shortCondition and shortValid
        strategy.entry("Short", strategy.short)

// ─────────────────────────────────────────────────────────────────────────────
//  ▌ EXIT CONDITIONS WITH ADJUSTABLE TP, SL & BE
// ─────────────────────────────────────────────────────────────────────────────
var bool beLong  = false
var bool beShort = false

// LONG EXIT LOGIC
if strategy.position_size > 0 and strategy.position_avg_price > 0
    longEntry = strategy.position_avg_price

    // Additional exit: if SMA(10) crosses below SMA(25) while price < EMA150, exit long
    if ta.crossunder(sma10, sma25) and close < ema150
        label.new(bar_index, low, "SMA Exit", style=label.style_label_down, color=color.red, textcolor=color.white)
        strategy.close("Long", comment="SMA Cross Exit")

    // Break-even trigger if price moves in favor by beTrigger points
    if close >= longEntry + beTrigger
        beLong := true

    effectiveLongStop = beLong ? longEntry : (longEntry - slDistance)
    if close <= effectiveLongStop
        label.new(bar_index, low, (beLong ? "BE Hit" : "SL Hit"), style=label.style_label_down, color=color.red, textcolor=color.white)
        strategy.close("Long", comment=(beLong ? "BE Hit" : "SL Hit"))

    if close >= longEntry + tpDistance
        label.new(bar_index, high, "TP Hit", style=label.style_label_up, color=color.green, textcolor=color.white)
        strategy.close("Long", comment="TP Hit")

// SHORT EXIT LOGIC
if strategy.position_size < 0 and strategy.position_avg_price > 0
    shortEntry = strategy.position_avg_price

    // Basic stop logic
    if close >= shortEntry + slDistance
        label.new(bar_index, high, (beShort ? "BE Hit" : "SL Hit"), style=label.style_label_up, color=color.red, textcolor=color.white)
        strategy.close("Short", comment=(beShort ? "BE Hit" : "SL Hit"))

    // Take profit logic
    if close <= shortEntry - tpDistance
        label.new(bar_index, low, "TP Hit", style=label.style_label_down, color=color.green, textcolor=color.white)
        strategy.close("Short", comment="TP Hit")

    // Break-even trigger
    if close <= shortEntry - beTrigger
        beShort := true

    effectiveShortStop = beShort ? shortEntry : (shortEntry + slDistance)
    if close >= effectiveShortStop
        label.new(bar_index, high, (beShort ? "BE Hit" : "SL Hit"), style=label.style_label_up, color=color.red, textcolor=color.white)
        strategy.close("Short", comment=(beShort ? "BE Hit" : "SL Hit"))

// Reset BE flags when no position is open
if strategy.position_size == 0
    beLong  := false
    beShort := false
    // Reset the pullback signal
    if not longSignalActive
        pullHigh := na
        retraceLevel := na