মাল্টি-ইন্ডিকেটর ট্রেন্ড ব্রেকথ্রু ডায়নামিক স্টপ লস ট্রেডিং সিস্টেম

EMA supertrend 趋势突破 摇摆点 动态止损 ATR
সৃষ্টির তারিখ: 2025-07-08 14:24:30 অবশেষে সংশোধন করুন: 2025-07-08 14:24:30
অনুলিপি: 1 ক্লিকের সংখ্যা: 270
2
ফোকাস
319
অনুসারী

মাল্টি-ইন্ডিকেটর ট্রেন্ড ব্রেকথ্রু ডায়নামিক স্টপ লস ট্রেডিং সিস্টেম মাল্টি-ইন্ডিকেটর ট্রেন্ড ব্রেকথ্রু ডায়নামিক স্টপ লস ট্রেডিং সিস্টেম

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটির মূল নীতিটি একাধিক সূচকের সমন্বিত নিশ্চিতকরণের উপর ভিত্তি করে তৈরি করা হয়েছে, যা মূলত নিম্নলিখিত কয়েকটি মূল উপাদান দ্বারা গঠিতঃ

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

  2. ট্রেন্ড ব্রেকিং নিশ্চিতকরণ ব্যবস্থা

  3. সুপারট্রেন্ড নিশ্চিত: কৌশলটি সুপারট্রেন্ড সূচককে অন্তর্ভুক্ত করে, এটি একটি সুস্পষ্ট প্রবণতা দিক নির্দেশনা সরবরাহ করতে পারে, এটি এটিআর ওঠানামা হারের সামঞ্জস্যের উপর ভিত্তি করে একটি চ্যানেল তৈরি করে। দাম যখন সুপারট্রেন্ড লাইনের উপরে থাকে তখন এটি একটি উচ্চতর প্রবণতা দেখায়। যখন দাম নীচের লাইনে থাকে তখন এটি একটি নিম্নমুখী প্রবণতা দেখায়।

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

  5. একতরফা লেনদেনের বিকল্প: কৌশলটি “শুধু আরও কিছু করুন” বিকল্প প্রদান করে, যা কেবলমাত্র মুদ্রাস্ফীতি বা একটি ষাঁড়ের বাজারের পরিবেশে ব্যবহার করা ব্যবসায়ীদের জন্য উপযুক্ত।

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

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

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

  1. একাধিক নিশ্চিতকরণ ব্যবস্থাকৌশলটি সমান্তরাল ব্রেকিং, মূল্য ব্রেকিং এবং সুপারট্রেন্ড সূচকের ট্রিপল কনফার্মেশনের সাথে মিলিত হয়, যা মিথ্যা সংকেতের সম্ভাবনাকে ব্যাপকভাবে হ্রাস করে। কেবলমাত্র একাধিক প্রযুক্তিগত শর্তাবলী একই সাথে পূরণ হলে ট্রেডিং সংকেত ট্রিগার করা হয়, যা সংকেতের গুণমানকে উন্নত করে।

  2. গতিশীল ক্ষতি প্রতিরোধ ব্যবস্থা: একটি গতিশীল স্টপ-ওভার সেট করুন যা বাজারের অস্থিরতার সাথে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করতে পারে, মুনাফা রক্ষা করে এবং দামের জন্য পর্যাপ্ত শ্বাসের জায়গা দেয়, যা স্থির স্টপ-ওভারগুলির সমস্যাগুলিকে এড়াতে পারে যা খুব তাড়াতাড়ি ট্রিগার হতে পারে।

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

  4. বিলম্বিত নিশ্চিতকরণ ব্যবস্থাকৌশলঃ সংকেত প্রকাশিত হওয়ার সাথে সাথে রুট কে লাইনে অবিলম্বে প্রবেশ না করে, পরবর্তী কে লাইনের ব্রেকথ্রু নিশ্চিতকরণের জন্য অপেক্ষা করা, এই নকশাটি কার্যকরভাবে বাজারের গোলমালের কারণে ভুল লেনদেনকে হ্রাস করে।

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

  6. একমুখী লেনদেন বিকল্প“শুধু বেশি কর” মোডটি কৌশলগুলিকে বিভিন্ন বাজার পছন্দগুলির সাথে খাপ খাইয়ে দেয়, বিশেষত ঐতিহ্যবাহী শেয়ার বাজারের মতো উত্থান-পতনের বাজার পরিবেশে।

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

কৌশলগত ঝুঁকি

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

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

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

  3. প্যারামিটার অপ্টিমাইজেশান ফাঁদওভার-অপ্টিমাইজেশন প্যারামিটারগুলির কারণে কৌশলগুলি ঐতিহাসিক ডেটাতে ভাল পারফরম্যান্স করতে পারে, কিন্তু বাস্তব জীবনে এটি ভাল কাজ করে না। একাধিক সময়কাল এবং বাজার পরিবেশে প্যারামিটারগুলির স্থায়িত্ব পরীক্ষা করার পরামর্শ দেওয়া হয়, যাতে অতিরিক্ত ফিট করা যায় না।

  4. ট্রেন্ড সনাক্তকরণ বিলম্বসুপারট্রেন্ড এবং ইএমএ সমন্বয়গুলি প্রবণতা পাল্টানোর সময় ধীর প্রতিক্রিয়াশীল হতে পারে, যার ফলে প্রবেশের জায়গাটি অনুপযুক্ত বা গুরুত্বপূর্ণ পাল্টানোর জায়গাটি মিস করা যায়। প্রবণতা পরিবর্তনের লক্ষণগুলি আগে থেকে ধরার জন্য একটি সহায়ক হিসাবে গতির পরিমাপকে যুক্ত করার বিষয়টি বিবেচনা করা যেতে পারে।

  5. বাজারের অস্থিরতাট্রেন্ড ট্র্যাকিং কৌশল হিসাবে, একটি ট্র্যাশ বাজারে প্রায়শই ভুল সংকেত তৈরি হতে পারে, যার ফলে ক্রমাগত ক্ষতি হয়। এর সমাধান হল মার্কেট এনভায়রনমেন্ট ফিল্টার যুক্ত করা, ট্রেডিং স্থগিত করা বা স্ট্রাইক মার্কেট হিসাবে চিহ্নিত হলে প্যারামিটারগুলি সামঞ্জস্য করা।

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

  7. সিস্টেমিক ঝুঁকি প্রকাশ: বাজারের তীব্র অস্থিরতা বা তরলতা হ্রাসের সময়, দামগুলি আকাশচুম্বী হতে পারে, যার ফলে স্টপ লসটি প্রত্যাশিত মূল্যে কার্যকর করা যায় না। এই ধরনের ঝুঁকি নিয়ন্ত্রণের জন্য সর্বোচ্চ ক্ষতির সীমা এবং যুক্তিসঙ্গত পজিশনের আকার নির্ধারণ করার পরামর্শ দেওয়া হয়।

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

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

  1. লেনদেনের পরিসরের পরিসরে বৃদ্ধিবর্তমান কৌশল শুধুমাত্র মূল্যের তথ্যের উপর নির্ভর করে, একটি ট্রেডিং ভলিউম নিশ্চিতকরণ ব্যবস্থা যোগ করার কথা বিবেচনা করা যেতে পারে, শুধুমাত্র ট্রেডিং ভলিউম বৃদ্ধি পেলে একটি ব্রেকিং সিগন্যাল কার্যকর বলে নিশ্চিত করা হয়, যা মিথ্যা ব্রেকিং কমাতে সহায়তা করে। অপ্টিমাইজেশনের কারণঃ ট্রেডিং ভলিউম মূল্যের পরিবর্তনের চালক, বড় ট্রেডিং ভলিউমের সাথে ব্রেকিংয়ের অর্থ প্রায়শই আরও নির্ভরযোগ্য প্রবণতা শুরু হয়।

  2. মার্কেটপ্লেস ফিল্টার যুক্ত করুন: ADX বা অস্থিরতার সূচকগুলি বাজারে প্রবণতা বা ঝড়ের মধ্যে রয়েছে কিনা তা নির্ধারণ করতে এবং বিভিন্ন বাজারের অবস্থার সাথে সামঞ্জস্য রেখে কৌশলগত প্যারামিটারগুলি সামঞ্জস্য করতে বা ট্রেডিং স্থগিত করতে পারে। অপ্টিমাইজেশনের কারণঃ প্রবণতা কৌশলটি ঝড়ের বাজারে দুর্বলভাবে কাজ করে, বাজার পরিবেশ সনাক্তকরণের মাধ্যমে প্রতিকূল অবস্থার অধীনে লেনদেন এড়ানো যায়।

  3. মুনাফা সুরক্ষার ব্যবস্থা

  4. মাল্টি টাইম ফ্রেম নিশ্চিতকরণ

  5. অপ্টিমাইজেশান প্যারামিটার স্বনির্ধারিত: EMA দৈর্ঘ্য এবং সুপারট্রেন্ড প্যারামিটারগুলি বাজারের অস্থিরতা বা সাম্প্রতিক প্রবণতা শক্তির উপর ভিত্তি করে গতিশীলভাবে সামঞ্জস্য করা যেতে পারে, যাতে কৌশলগুলি বিভিন্ন বাজারের পরিবেশে আরও ভালভাবে মানিয়ে নিতে পারে। অপ্টিমাইজেশনের কারণঃ স্থির প্যারামিটারগুলি বিভিন্ন বাজারের পরিবেশে আরও বেশি বৈচিত্র্যপূর্ণ পারফরম্যান্স করে, স্বয়ংক্রিয় প্যারামিটারগুলি কৌশলগুলির স্থিতিশীলতা বাড়িয়ে তুলতে পারে।

  6. মৌসুমী বা সময় ফিল্টার যুক্ত করুন: কিছু বাজারে স্পষ্ট মৌসুমী বৈশিষ্ট্য বা intraday প্রভাব রয়েছে, সময় ফিল্টার যুক্ত করা যেতে পারে, ঐতিহাসিকভাবে দুর্বল পারফরম্যান্সের সময়গুলি এড়ানো যায়। অপ্টিমাইজেশনের কারণঃ নিম্ন কার্যকারিতা সময়গুলি এড়ানো সামগ্রিক বিজয়ী হার এবং তহবিলের দক্ষতা উন্নত করতে পারে।

  7. মেশিন লার্নিং মডেল ইন্টিগ্রেশন: মেশিন লার্নিং অ্যালগরিদম ব্যবহার করে সক্রিয়ভাবে সংকেত মানের মূল্যায়ন করা বা প্যারামিটার অপ্টিমাইজেশন পছন্দগুলি বিবেচনা করা যেতে পারে, কৌশলগত অভিযোজনযোগ্যতা বাড়ানোর জন্য। অপ্টিমাইজেশনের কারণঃ মেশিন লার্নিং ঐতিহাসিক তথ্য থেকে মডেলগুলি সনাক্ত করতে পারে যা কৃত্রিমভাবে সনাক্ত করা কঠিন, সহায়ক সংকেত নির্বাচন এবং প্যারামিটার অপ্টিমাইজেশন।

সারসংক্ষেপ

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

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

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

কৌশল সোর্স কোড
/*backtest
start: 2024-07-07 00:00:00
end: 2024-11-10 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/


// © prisminvest48

//@version=6
strategy("MULTI INDICATOR BY DEEPANINDIA", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === Inputs ===
emaHighLen    = input.int(26, title="EMA High Length")
emaHighSrc    = input.source(high, title="EMA High Source")
emaLowLen     = input.int(26, title="EMA Low Length")
emaLowSrc     = input.source(low, title="EMA Low Source")
swingLookback = input.int(5, title="Swing High/Low Lookback", minval=1)
longOnly      = input.bool(false, title="Long Only Mode")

// SuperTrend inputs
showSuperTrend = input.bool(true, title="Show SuperTrend")
atrLen         = input.int(10, title="SuperTrend ATR Length")
atrMultiplier  = input.float(3.0, title="SuperTrend ATR Multiplier")

// === EMA Calculations ===
emaHigh = ta.ema(emaHighSrc, emaHighLen)
emaLow  = ta.ema(emaLowSrc, emaLowLen)
plot(emaHigh, title="EMA High", color=color.orange)
plot(emaLow, title="EMA Low", color=color.teal)

// === SuperTrend Calculation ===
atr = ta.atr(atrLen)
hl2 = (high + low) / 2
var float superTrend = na
var int direction = 1  // 1 = uptrend, -1 = downtrend

upperBand = hl2 + atrMultiplier * atr
lowerBand = hl2 - atrMultiplier * atr

if na(superTrend)
    superTrend := lowerBand

if direction == 1
    if close > superTrend
        superTrend := math.max(superTrend, lowerBand)
    else
        direction := -1
        superTrend := upperBand
else
    if close < superTrend
        superTrend := math.min(superTrend, upperBand)
    else
        direction := 1
        superTrend := lowerBand

// Plot SuperTrend if enabled
plot(showSuperTrend ? superTrend : na, title="SuperTrend", color=direction == 1 ? color.green : color.red, linewidth=2)

// === Signal Tracking ===
var float signalHigh = na
var float signalLow = na
var bool waitLongConfirm = false
var bool waitShortConfirm = false

// === Detect Long Signal ===
if close[1] > emaHigh[1]
    signalHigh := high[1]
    waitLongConfirm := true
    waitShortConfirm := false

// === Detect Short Signal ===
if not longOnly and close[1] < emaLow[1]
    signalLow := low[1]
    waitShortConfirm := true
    waitLongConfirm := false

// === Confirm Long Entry on Next Candle ===
longBreakout = waitLongConfirm and high > signalHigh
if longBreakout
    strategy.entry("Long", strategy.long)
    waitLongConfirm := false

// === Confirm Short Entry on Next Candle ===
shortBreakout = not longOnly and waitShortConfirm and low < signalLow
if shortBreakout
    strategy.entry("Short", strategy.short)
    waitShortConfirm := false

// === Exit Logic for Long ===
swingLow = ta.lowest(low, swingLookback)
longExit = close < emaLow or low < swingLow
if strategy.position_size > 0 and longExit
    strategy.close("Long")

// === Exit Logic for Short ===
swingHigh = ta.highest(high, swingLookback)
shortExit = close > emaHigh or high > swingHigh
if not longOnly and strategy.position_size < 0 and shortExit
    strategy.close("Short")