মাল্টিপল কনভার্জিং সুইং হান্টার কৌশল: উন্নত স্কোরিং সিস্টেমের উপর ভিত্তি করে কম সময়ের ফ্রেম ট্রেন্ড ক্যাপচারিং

MACD RSI 多重会聚 趋势捕捉 摆动交易 计分系统 交易策略 低时间框架 价格行为 技术分析 动量指标 趋势识别 风险管理
সৃষ্টির তারিখ: 2025-06-30 13:46:39 অবশেষে সংশোধন করুন: 2025-06-30 13:46:39
অনুলিপি: 0 ক্লিকের সংখ্যা: 239
2
ফোকাস
319
অনুসারী

মাল্টিপল কনভার্জিং সুইং হান্টার কৌশল: উন্নত স্কোরিং সিস্টেমের উপর ভিত্তি করে কম সময়ের ফ্রেম ট্রেন্ড ক্যাপচারিং মাল্টিপল কনভার্জিং সুইং হান্টার কৌশল: উন্নত স্কোরিং সিস্টেমের উপর ভিত্তি করে কম সময়ের ফ্রেম ট্রেন্ড ক্যাপচারিং

ওভারভিউ

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

এই কৌশলটি ব্যাপকভাবে পরীক্ষিত এবং অপ্টিমাইজড সূচক প্যারামিটারগুলি ব্যবহার করে, যার মধ্যে রয়েছে বিশেষভাবে কনফিগার করা MACD ((3,10,3) এবং RSI ((21)), যা স্ট্যান্ডার্ড কনফিগারেশনের চেয়ে দ্রুত বাজার পরিবর্তনের সাথে আরও ভালভাবে খাপ খাইয়ে নেয়। এই কৌশলটি প্রবেশ এবং প্রস্থান উভয়ই কমপক্ষে 13 পয়েন্টের উচ্চ স্কোরের থ্রেশহোল্ডের প্রয়োজন, যাতে নিশ্চিত হয় যে কেবলমাত্র উচ্চ-নির্ভরযোগ্য সংকেতই একটি লেনদেনকে ট্রিগার করে। এই কৌশলটি 200% এরও বেশি লাভজনক পারফরম্যান্স প্রদর্শন করে, যা বাজারের ওঠানামা করার প্যাটার্নগুলি ধরার ক্ষেত্রে এর কার্যকারিতা প্রমাণ করে।

কৌশল নীতি

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

  1. RSI সংকেত(সর্বোচ্চ ৫)

    • RSI < 30: + 2 পয়েন্ট
    • RSI < 25: + ২ পয়েন্ট
    • RSI: +১ পয়েন্ট
  2. MACD সংকেত(সর্বোচ্চ ৮)

    • MACD শূন্যের নিচে: +১ পয়েন্ট
    • ম্যাকডির উচ্চতা বেড়েছে ২ পয়েন্ট
    • ম্যাকডির কলামে উন্নতিঃ +২ পয়েন্ট
    • ম্যাকডির পূর্বাভাসঃ +৩ পয়েন্ট
  3. দামের আচরণ(সর্বোচ্চ ৪)

    • লম্বা ছায়া রেখা ((> 50%): + 2 পয়েন্ট
    • ক্ষুদ্র সত্তা (<30%): +১ পয়েন্ট
    • সূর্যের সাথে সমাপ্তিঃ + 1 মিনিট
  4. মডেল সনাক্তকরণ(সর্বোচ্চ ৮)

    • আরএসআই: +৪ পয়েন্ট
    • দ্রুত পুনরুদ্ধার মোডঃ +২ পয়েন্ট
    • +৪ পয়েন্ট

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

কৌশলটির আরেকটি গুরুত্বপূর্ণ অংশ হল এর অপ্টিমাইজড প্যারামিটারঃ

  • MACD কনফিগারেশন[১২, ২৬, ৯] স্ট্যান্ডার্ডের চেয়ে দ্রুততর, সংকেতটি প্রথম দিকে সনাক্ত করতে পারে এবং একই সাথে নির্ভরযোগ্যতা বজায় রাখে
  • RSI কনফিগারেশন (২১ চক্র): 14 চক্রের RSI-এর তুলনায় কম মিথ্যা সংকেত, এবং এখনও ওভারসোল্ডের অবস্থাকে কার্যকরভাবে ধরা যায়

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

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

  1. বস্তুনিষ্ঠভাবে সিদ্ধান্ত গ্রহণের প্রক্রিয়া: এই কৌশলটি পয়েন্ট-ভিত্তিক রেটিং সিস্টেমের মাধ্যমে স্বতন্ত্র বিচারকে সরিয়ে দেয় এবং স্পষ্ট লেনদেনের মানদণ্ড সরবরাহ করে। এই পদ্ধতিটি লেনদেনের সিদ্ধান্তগুলিকে আবেগের পরিবর্তে ডেটা ভিত্তিক করে তোলে এবং লেনদেনের শৃঙ্খলাকে ব্যাপকভাবে উন্নত করে।

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

  3. অপ্টিমাইজড সময় সংবেদনশীলতা: অপ্টিমাইজড MACD (৩,১০,৩) এবং RSI (২১) প্যারামিটার ব্যবহার করে, কৌশলটি মূল্যের গতিশীলতার পরিবর্তনগুলিকে আরও আগে ধরতে সক্ষম হয় এবং বাজারের শব্দকে ফিল্টার করে, যা আরও ভাল সময় সংবেদনশীলতা সরবরাহ করে।

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

  5. অত্যন্ত দৃশ্যমান ট্রেডিং সিস্টেমকৌশলটি একটি স্কোর প্রদর্শন ব্যবস্থা প্রদান করে, যার মধ্যে রয়েছে সবুজ ট্যাগ ((ইনপুট স্কোর ≥১০) এবং লাল ট্যাগ ((এক্সট্রুড স্কোর ≥১০), এবং ট্রেডিং এন্ট্রি/এক্সট্রুড মার্কআপ যা ব্যবসায়ীদের সিস্টেমের কাজকর্ম পরিষ্কারভাবে দেখতে দেয়।

  6. অভিযোজনযোগ্য: যদিও কৌশলগত প্যারামিটারগুলি অপ্টিমাইজ করা হয়েছে, তবে তারা বিভিন্ন বাজার পরিস্থিতি এবং লেনদেনের জাতের সাথে সামঞ্জস্য করতে পারে, যা কৌশলটিকে ব্যাপকভাবে প্রয়োগযোগ্য করে তোলে।

কৌশলগত ঝুঁকি

  1. উচ্চ পজিশনের ঝুঁকি বন্টনকৌশলঃ ডিফল্টরূপে ১০০% তহবিল বরাদ্দ করা হয়, এই ধরনের কেন্দ্রীভূত বিনিয়োগ একক লেনদেনের জন্য ঝুঁকিপূর্ণ প্রান্তিকতা বৃদ্ধি করে। বাজারের তীব্র অস্থিরতা বা অপ্রত্যাশিত ঘটনাগুলির ক্ষেত্রে, এটি উল্লেখযোগ্য অ্যাকাউন্টের অস্থিরতা সৃষ্টি করতে পারে।

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

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

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

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

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

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

  2. সমন্বিত মূল্য-মান বিশ্লেষণ: বর্তমান কৌশল মূলত মূল্যের আচরণ এবং গতিশীলতার সূচকগুলির উপর ভিত্তি করে, ট্র্যাফিক বিশ্লেষণকে সংহত করে সংকেতের গুণমান বাড়ানো যেতে পারে। বিশেষত বিপরীত প্যাটার্ন নিশ্চিতকরণে, ট্র্যাফিক নিশ্চিতকরণ অতিরিক্ত নির্ভরযোগ্যতা সরবরাহ করতে পারে। ট্র্যাফিক সম্পর্কিত রেটিং মানদণ্ড যুক্ত করার বিষয়টি বিবেচনা করুন, যেমন ট্র্যাফিক বৃদ্ধি, ট্র্যাফিক বিচ্যুতি ইত্যাদি।

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

  4. তহবিল ব্যবস্থাপনার অপ্টিমাইজেশানবর্তমান কৌশলটি ১০০% পজিশন বরাদ্দ ব্যবহার করে, যা আরও জটিল তহবিল পরিচালনার সিস্টেমগুলিকে সিগন্যাল শক্তি, বাজার অস্থিরতা বা ঐতিহাসিক পারফরম্যান্সের উপর ভিত্তি করে পজিশন আকারের গতিশীলতাকে সামঞ্জস্য করতে পারে। উদাহরণস্বরূপ, স্কোর যত বেশি হবে তত বেশি তহবিল বরাদ্দ করা হবে, বা ধারাবাহিক ক্ষতির পরে পজিশন আকার হ্রাস করা হবে।

  5. মাল্টি টাইম ফ্রেম বিশ্লেষণ ইন্টিগ্রেশন: উচ্চতর সময়সীমার প্রবণতা নিশ্চিতকরণ যোগ করে প্রবেশের সংকেতের গুণমান বাড়ানো। উদাহরণস্বরূপ, উচ্চতর সময়সীমার প্রবণতার দিকটি সামঞ্জস্যপূর্ণ হলেই কেবলমাত্র লেনদেন সম্পাদন করা হয়, বা প্রধান প্রবণতা মেনে চলা লেনদেনের জন্য আরও বেশি পয়েন্ট বরাদ্দ করা হয়।

  6. মেশিন লার্নিং অপ্টিমাইজেশন: মেশিন লার্নিং পদ্ধতি ব্যবহার করে স্কোর ওজনের এবং থ্রেশহোল্ডের অপ্টিমাইজেশান বিবেচনা করুন। ঐতিহাসিক তথ্য বিশ্লেষণ করে, কোন সংকেত সমন্বয়গুলি নির্দিষ্ট বাজার পরিবেশে সবচেয়ে কার্যকর তা নির্ধারণ করা যায় এবং সেই অনুযায়ী স্কোরিং সিস্টেমটি সামঞ্জস্য করা যায়।

সারসংক্ষেপ

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

কৌশলটি কার্যকরভাবে বাজার ওঠানামা ধরতে সক্ষম, বিশেষত উচ্চতর অস্থিরতার বাজারে, অপ্টিমাইজড MACD ((3, 10, 3) এবং RSI ((21) প্যারামিটারগুলির সাথে মিলিত। অন্তর্নির্মিত ঝুঁকি ব্যবস্থাপনা বৈশিষ্ট্য এবং ভিজ্যুয়ালাইজেশন সরঞ্জামগুলি কৌশলটির ব্যবহারিকতা এবং ব্যবহারকারী-বান্ধবতা আরও বাড়িয়ে তোলে।

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

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

কৌশল সোর্স কোড
/*backtest
start: 2024-06-30 00:00:00
end: 2025-06-28 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":50000000}]
*/

//   ____                    _     _______            _ _               _____  
//  / __ \                  | |   |__   __|          | (_)             |  __ \ 
// | |  | |_   _  __ _ _ __ | |_     | |_ __ __ _  __| |_ _ __   __ _  | |__) | 
// | |  | | | | |/ _` | '_ \| __|    | | '__/ _` |/ _` | | '_ \ / _` | |  ___/ '__/ _ \ 
// | |__| | |_| | (_| | | | | |_     | | | | (_| | (_| | | | | | (_| | | |   | | | (_) |
//  \___\_\\__,_|\__,_|_| |_|\__|    |_|_|  \__,_|\__,_|_|_| |_|\__, | |_|   |_|  \___/
//                                                               __/ |     
//                                                              |___/   
// Quant Trading Pro
//@version=6
strategy("Multi-Confluence Swing Hunter V1", overlay=true, 
         default_qty_type=strategy.percent_of_equity, default_qty_value=100,
         commission_type=strategy.commission.percent, commission_value=0.1,
         slippage=3, initial_capital=1000, margin_long=0, margin_short=0)

// === DESCRIPTION ===
// High-conviction swing bottom entry strategy using optimized MACD(3,10,3) and RSI(21)
// Entry: Point-based scoring system for swing bottoms (divergences, momentum, price action)
// Exit: Inverse scoring system for swing tops (no stop-loss, exit only on swing top signals)
// Position: Single position with 100% allocation, scores displayed only when ≥10 points
// Based on analysis showing 23.7% improvement over standard parameters

// === INPUT PARAMETERS ===

// Optimized Indicator Settings
macdFast = input.int(3, "MACD Fast Length", minval=1, maxval=50, group="Optimized Indicators")
macdSlow = input.int(10, "MACD Slow Length", minval=1, maxval=100, group="Optimized Indicators") 
macdSignal = input.int(3, "MACD Signal Length", minval=1, maxval=50, group="Optimized Indicators")
rsiLength = input.int(21, "RSI Length", minval=2, maxval=100, group="Optimized Indicators")

// Entry Settings - Swing Bottom Scoring
minEntryScore = input.int(13, "Minimum Entry Score", minval=5, maxval=20, group="Entry Settings")
showEntryScores = input.bool(true, "Show Entry Scores (Above 10)", group="Entry Settings")

// Exit Settings - Swing Top Scoring (Inverse of Entry Criteria)
minExitScore = input.int(13, "Minimum Exit Score", minval=5, maxval=20, group="Exit Settings")
showExitScores = input.bool(true, "Show Exit Scores (Above 10)", group="Exit Settings")

// Price Action Settings
minLowerWickPercent = input.float(50.0, "Min Lower Wick %", minval=10.0, maxval=90.0, step=5.0, group="Price Action")
quickRecoveryPercent = input.float(0.3, "Quick Recovery %", minval=0.1, maxval=2.0, step=0.1, group="Price Action")
quickRecoveryBars = input.int(3, "Quick Recovery Bars", minval=1, maxval=10, group="Price Action")

// RSI Levels
rsiOversold = input.float(30.0, "RSI Oversold Level", minval=10.0, maxval=50.0, step=1.0, group="RSI Settings")
rsiExtremeOversold = input.float(25.0, "RSI Extreme Oversold", minval=10.0, maxval=40.0, step=1.0, group="RSI Settings")
rsiOverbought = input.float(70.0, "RSI Overbought Level", minval=50.0, maxval=90.0, step=1.0, group="RSI Settings")
rsiExtremeOverbought = input.float(75.0, "RSI Extreme Overbought", minval=60.0, maxval=90.0, step=1.0, group="RSI Settings")

// Reversal Signals Settings
reversalLookback = input.int(12, "Reversal Candle Lookback", minval=5, maxval=50, group="Reversal Signals")
reversalConfirm = input.int(3, "Reversal Confirm Within", minval=1, maxval=10, group="Reversal Signals")
useVolumeConfirmation = input.bool(false, "Use Volume Confirmation", group="Reversal Signals")

// Trade Management
allowShortTrades = input.bool(false, "Allow Short Trades?", group="Short Trades")

// Risk/Reward TP/SL Settings
useRiskReward = input.bool(true, "Use Risk/Reward TP/SL", group="Risk Management")
riskRewardRatio = input.float(5, "Risk/Reward Ratio", minval=1.0, maxval=5.0, step=0.1, group="Risk Management")
stopLossLookback = input.int(10, "Stop Loss Lookback Bars", minval=3, maxval=50, group="Risk Management")
stopLossBuffer = input.float(0.15, "Stop Loss Buffer %", minval=0.05, maxval=1.0, step=0.05, group="Risk Management")

// Advanced Settings
maxLookbackBars = input.int(8, "Divergence Lookback Bars", minval=3, maxval=20, group="Advanced")

// === 1️⃣ CALCULATIONS ===

// Optimized MACD Calculation
[macdLine, signalLine, macdHist] = ta.macd(close, macdFast, macdSlow, macdSignal)

// Optimized RSI Calculation  
rsi = ta.rsi(close, rsiLength)

// Price Action Calculations
bodySize = math.abs(close - open)
lowerWick = math.min(open, close) - low
upperWick = high - math.max(open, close)
totalRange = high - low
lowerWickPercent = totalRange > 0 ? (lowerWick / totalRange) * 100 : 0
upperWickPercent = totalRange > 0 ? (upperWick / totalRange) * 100 : 0
bodyPercent = totalRange > 0 ? (bodySize / totalRange) * 100 : 0

// Reversal Signals Calculation
var int bullCandleScore = 0
var int bearCandleScore = 0
var bool bullReversalCandidate = false
var bool bearReversalCandidate = false
var float bullReversalLow = 0.0
var float bullReversalHigh = 0.0
var float bearReversalLow = 0.0
var float bearReversalHigh = 0.0
var bool bullSignalConfirmed = false
var bool bearSignalConfirmed = false
var int bullCandleCounter = 0
var int bearCandleCounter = 0

volumeIsHigh = volume > ta.sma(volume, 20)

// Reset scores
bullCandleScore := 0
bearCandleScore := 0

// Calculate reversal scores
if bar_index >= reversalLookback
    for i = 0 to (reversalLookback - 1)
        if close < low[i]
            bullCandleScore += 1
        if close > high[i]
            bearCandleScore += 1

// Bear signal setup
if bearCandleScore == (reversalLookback - 1)
    bearReversalCandidate := true
    bearReversalLow := low
    bearReversalHigh := high
    bearSignalConfirmed := false
    bearCandleCounter := 0

if bearReversalCandidate
    bearCandleCounter += 1
    if close > bearReversalHigh
        bearReversalCandidate := false

bearCondition = bearReversalCandidate and close < bearReversalLow and not bearSignalConfirmed and bearCandleCounter <= (reversalConfirm + 1)
bearSignal = false
if bearCondition
    bearSignalConfirmed := true
    if not useVolumeConfirmation or volumeIsHigh
        bearSignal := true

// Bull signal setup
if bullCandleScore == (reversalLookback - 1)
    bullReversalCandidate := true
    bullReversalLow := low
    bullReversalHigh := high
    bullSignalConfirmed := false
    bullCandleCounter := 0

if bullReversalCandidate
    bullCandleCounter += 1
    if close < bullReversalLow
        bullReversalCandidate := false

bullCondition = bullReversalCandidate and close > bullReversalHigh and not bullSignalConfirmed and bullCandleCounter <= (reversalConfirm + 1)
bullSignal = false
if bullCondition
    bullSignalConfirmed := true
    if not useVolumeConfirmation or volumeIsHigh
        bullSignal := true

// === 2️⃣ ENTRY & EXIT LOGIC ===

// Helper Functions for Divergence Detection
findLowerLow(lookback) =>
    var float lowestPrice = na
    var int lowestIndex = na
    
    if bar_index >= lookback
        lowestPrice := low
        lowestIndex := bar_index
        
        for i = 1 to lookback
            if low[i] < lowestPrice
                lowestPrice := low[i]
                lowestIndex := bar_index - i
    
    [lowestPrice, lowestIndex]

findHigherHigh(lookback) =>
    var float highestPrice = na
    var int highestIndex = na
    
    if bar_index >= lookback
        highestPrice := high
        highestIndex := bar_index
        
        for i = 1 to lookback
            if high[i] > highestPrice
                highestPrice := high[i]
                highestIndex := bar_index - i
    
    [highestPrice, highestIndex]

// SWING BOTTOM SCORING SYSTEM

// 1. RSI Signals
rsiOversoldSignal = rsi < rsiOversold
rsiExtremeOversoldSignal = rsi < rsiExtremeOversold
rsiTurningUp = rsi > rsi[1]

// RSI Bullish Divergence
[prevLowPrice, prevLowIndex] = findLowerLow(maxLookbackBars)
rsiBullishDivergence = false
if not na(prevLowPrice) and not na(prevLowIndex) and bar_index > prevLowIndex
    prevRSI = rsi[bar_index - prevLowIndex]
    if low < prevLowPrice and rsi > prevRSI and not na(prevRSI)
        rsiBullishDivergence := true

// 2. MACD Signals  
macdNegative = macdLine < 0
macdTurningUp = macdLine > macdLine[1] 
macdHistImproving = macdHist > macdHist[1]

// MACD Bullish Divergence
macdBullishDivergence = false
if not na(prevLowPrice) and not na(prevLowIndex) and bar_index > prevLowIndex
    prevMACD = macdLine[bar_index - prevLowIndex]
    if low < prevLowPrice and macdLine > prevMACD and not na(prevMACD)
        macdBullishDivergence := true

// 3. Price Action Signals
longLowerWick = lowerWickPercent > minLowerWickPercent
smallBody = bodyPercent < 30.0
bullishClose = close > open

// 4. Quick Recovery Check
quickRecovery = false
if bar_index >= quickRecoveryBars
    recoveryTarget = close * (1 + quickRecoveryPercent / 100)
    for i = 1 to quickRecoveryBars
        if high[i] > recoveryTarget
            quickRecovery := true
            break

// ENTRY SCORE CALCULATION
entryScore = 0
entryScore := entryScore + (rsiOversoldSignal ? 2 : 0)
entryScore := entryScore + (rsiExtremeOversoldSignal ? 2 : 0)  
entryScore := entryScore + (rsiBullishDivergence ? 4 : 0)
entryScore := entryScore + (rsiTurningUp ? 1 : 0)
entryScore := entryScore + (macdNegative ? 1 : 0)
entryScore := entryScore + (macdTurningUp ? 2 : 0)
entryScore := entryScore + (macdHistImproving ? 2 : 0)
entryScore := entryScore + (macdBullishDivergence ? 3 : 0)
entryScore := entryScore + (longLowerWick ? 2 : 0)
entryScore := entryScore + (smallBody ? 1 : 0)
entryScore := entryScore + (bullishClose ? 1 : 0)
entryScore := entryScore + (quickRecovery ? 2 : 0)
entryScore := entryScore + (bullSignal ? 4 : 0)  // Green reversal signal +4

// SWING TOP SCORING SYSTEM (for exits)

// 1. RSI Exit Signals
rsiOverboughtSignal = rsi > rsiOverbought
rsiExtremeOverboughtSignal = rsi > rsiExtremeOverbought
rsiTurningDown = rsi < rsi[1]

// RSI Bearish Divergence
[prevHighPrice, prevHighIndex] = findHigherHigh(maxLookbackBars)
rsiBearishDivergence = false
if not na(prevHighPrice) and not na(prevHighIndex) and bar_index > prevHighIndex
    prevRSIHigh = rsi[bar_index - prevHighIndex]
    if high > prevHighPrice and rsi < prevRSIHigh and not na(prevRSIHigh)
        rsiBearishDivergence := true

// 2. MACD Exit Signals
macdPositive = macdLine > 0
macdTurningDown = macdLine < macdLine[1]
macdHistDeclining = macdHist < macdHist[1]

// MACD Bearish Divergence  
macdBearishDivergence = false
if not na(prevHighPrice) and not na(prevHighIndex) and bar_index > prevHighIndex
    prevMACDHigh = macdLine[bar_index - prevHighIndex]
    if high > prevHighPrice and macdLine < prevMACDHigh and not na(prevMACDHigh)
        macdBearishDivergence := true

// 3. Price Action Exit Signals
longUpperWick = upperWickPercent > minLowerWickPercent
bearishClose = close < open

// EXIT SCORE CALCULATION
exitScore = 0
exitScore := exitScore + (rsiOverboughtSignal ? 2 : 0)
exitScore := exitScore + (rsiExtremeOverboughtSignal ? 2 : 0)
exitScore := exitScore + (rsiBearishDivergence ? 4 : 0)
exitScore := exitScore + (rsiTurningDown ? 1 : 0)
exitScore := exitScore + (macdPositive ? 1 : 0)
exitScore := exitScore + (macdTurningDown ? 2 : 0)
exitScore := exitScore + (macdHistDeclining ? 2 : 0)
exitScore := exitScore + (macdBearishDivergence ? 3 : 0)
exitScore := exitScore + (longUpperWick ? 2 : 0)
exitScore := exitScore + (bearishClose ? 1 : 0)
exitScore := exitScore + (bearSignal ? 1 : 0)  // Red reversal signal +1

// SIGNAL CONDITIONS
longCondition = entryScore >= minEntryScore and barstate.isconfirmed
exitCondition = exitScore >= minExitScore and barstate.isconfirmed

// === TP/SL LEVELS (Clean Logic) ===
var float stopLossLevel = na
var float takeProfitLevel = na
var bool tpslSet = false

// Clear levels when no position
if strategy.position_size == 0
    stopLossLevel := na
    takeProfitLevel := na
    tpslSet := false

// Calculate TP/SL levels ONCE when position is opened
if strategy.position_size > 0 and strategy.position_size[1] == 0 and useRiskReward and not tpslSet
    // Find recent low for stop loss
    recentLow = low
    for i = 1 to stopLossLookback
        if low[i] < recentLow
            recentLow := low[i]
    
    // Set levels using actual entry price
    entryPrice = strategy.opentrades.entry_price(0)
    stopLossLevel := recentLow * (1 - stopLossBuffer / 100)  // Configurable buffer below recent low
    riskAmount = entryPrice - stopLossLevel
    takeProfitLevel := entryPrice + (riskAmount * riskRewardRatio)
    tpslSet := true

// === 3️⃣ TRADE EXECUTIONS ===

// Long Entry - Single Position Only
if longCondition and strategy.position_size == 0
    strategy.entry("Long", strategy.long, comment="Entry Score: " + str.tostring(entryScore))

// Set TP/SL ONLY ONCE per trade (when levels are calculated and not yet set)
if strategy.position_size > 0 and useRiskReward and tpslSet and not na(stopLossLevel) and not na(takeProfitLevel)
    strategy.exit("TP/SL", "Long", stop=stopLossLevel, limit=takeProfitLevel)

// Long Exit - Close Position on Swing Top Signal (Only when NOT using TP/SL)
if exitCondition and strategy.position_size > 0 and not useRiskReward
    strategy.close("Long", comment="Exit Score: " + str.tostring(exitScore))

// === 4️⃣ VISUALIZATIONS ===

// Entry Score Display (Only When Score ≥ 10) - Shows on ALL qualifying bars
if showEntryScores and entryScore >= 10 and barstate.isconfirmed
    label.new(bar_index, low, 
             text=str.tostring(entryScore), 
             yloc=yloc.belowbar,
             color=na,
             style=label.style_label_up, 
             textcolor=color.green, 
             size=size.small)

// Exit Score Display (Only When Score ≥ 10) - Shows on ALL qualifying bars  
if showExitScores and exitScore >= 10 and barstate.isconfirmed
    label.new(bar_index, high, 
             text=str.tostring(exitScore), 
             yloc=yloc.abovebar,
             color=na,
             style=label.style_label_down, 
             textcolor=color.red, 
             size=size.small)

// Large Trade Entry Triangle (Only when actually entering a position) - Using plotshape to avoid label limits
plotshape(longCondition and strategy.position_size == 0, title="Trade Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.normal, text="BUY")

// Large Trade Exit Triangle (Only when actually exiting a position) - Using plotshape to avoid label limits  
plotshape(exitCondition and strategy.position_size > 0, title="Trade Exit", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.normal, text="SELL")

// Reversal Signal Triangles
plotshape(bullSignal, title="Bull Reversal", location=location.belowbar, 
         color=color.lime, style=shape.triangleup, size=size.tiny)

plotshape(bearSignal, title="Bear Reversal", location=location.abovebar, 
         color=color.red, style=shape.triangledown, size=size.tiny)

// === TP/SL LEVEL PLOTS ===
plot(strategy.position_size > 0 and useRiskReward ? stopLossLevel : na, title="Stop Loss", color=color.red, linewidth=2, style=plot.style_linebr)
plot(strategy.position_size > 0 and useRiskReward ? takeProfitLevel : na, title="Take Profit", color=color.green, linewidth=2, style=plot.style_linebr)

// MACD and RSI Plots (in separate panes)
macdPlot = plot(macdLine, title="MACD Line", color=color.blue, display=display.none)
signalPlot = plot(signalLine, title="Signal Line", color=color.red, display=display.none) 
histPlot = plot(macdHist, title="MACD Histogram", color=color.gray, style=plot.style_histogram, display=display.none)

rsiPlot = plot(rsi, title="RSI", color=color.purple, display=display.none)
rsiOverboughtLine = hline(rsiOverbought, title="RSI Overbought", color=color.red, linestyle=hline.style_dashed, display=display.none)
rsiOversoldLine = hline(rsiOversold, title="RSI Oversold", color=color.green, linestyle=hline.style_dashed, display=display.none)