মাল্টি-পিরিয়ড, মাল্টি-ইন্ডিকেটর, উচ্চ-ফ্রিকোয়েন্সি ডায়নামিক ব্রেকথ্রু পরিমাণগত ট্রেডিং কৌশল

EMA SMA RSI ATR 突破策略 时间过滤 追踪止损 动态风险管理
সৃষ্টির তারিখ: 2025-08-04 11:57:30 অবশেষে সংশোধন করুন: 2025-08-04 11:57:30
অনুলিপি: 0 ক্লিকের সংখ্যা: 241
2
ফোকাস
319
অনুসারী

মাল্টি-পিরিয়ড, মাল্টি-ইন্ডিকেটর, উচ্চ-ফ্রিকোয়েন্সি ডায়নামিক ব্রেকথ্রু পরিমাণগত ট্রেডিং কৌশল মাল্টি-পিরিয়ড, মাল্টি-ইন্ডিকেটর, উচ্চ-ফ্রিকোয়েন্সি ডায়নামিক ব্রেকথ্রু পরিমাণগত ট্রেডিং কৌশল

ওভারভিউ

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

কৌশল নীতি

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

  1. প্রযুক্তিগত সূচক প্যাকেজ

    • দ্রুত EMA ((34 চক্র) এবং ধীর EMA ((63 চক্র) ব্যবহার করে প্রবণতা দিক নির্ণয় করুন
    • এসএমএ (৩৪ চক্র) মূল্য ফিল্টার হিসাবে ব্যবহার করা
    • আরএসআই (১৪ চক্র) ব্যবহার করে ওভারবয় ওভারসোল্ড অঞ্চলগুলি চিহ্নিত করুন
    • ATR ((১৪ চক্র) ব্যবহার করে গতিশীল স্টপ লস এবং লাভের মাত্রা গণনা করা হয়
  2. ব্রেকথ্রু সনাক্তকরণ

    • N চক্রের মধ্যে সর্বোচ্চ মান চিহ্নিত করুন (ডিফল্ট 1) প্রতিরোধের হিসাবে
    • N চক্রের মধ্যে সর্বনিম্ন মূল্য চিহ্নিত করুন (ডিফল্ট 1)
    • যখন মূল্য প্রতিরোধের স্তর অতিক্রম করে এবং অন্যান্য শর্ত পূরণ করে তখন একাধিক সংকেত ট্রিগার করা হয়
    • যখন দাম সমর্থন ছাড়িয়ে যায় এবং অন্যান্য শর্ত পূরণ হয় তখন একটি ফাঁকা সংকেত ট্রিগার করে
  3. একাধিক শর্তের স্বীকৃতি

    • একাধিক শর্তঃ দাম প্রতিরোধের স্তর অতিক্রম করেছে + EMA দ্রুত লাইন ধীর লাইনের উপরে + RSI অতিরিক্ত নয় + দাম SMA এর উপরে
    • খালি শর্তঃ দাম সমর্থন ছাড়িয়ে গেছে + ইএমএ দ্রুত লাইন ধীর লাইনের নীচে + আরএসআই oversold না + দাম এসএমএর নীচে
  4. সময় ফিল্টারিং সিস্টেম

    • 4 টি কাস্টমাইজযোগ্য ট্রেডিং সময় এবং নমনীয়ভাবে সেট করা ট্রেডিং উইন্ডো উপলব্ধ
    • অপ্টিমাইজড সময় গণনা অ্যালগরিদম, যা সময়কে মিনিটের ক্রমিক মানে রূপান্তর করে যা প্রক্রিয়াজাতকরণের দক্ষতা বাড়ায়
  5. গতিশীল ঝুঁকি ব্যবস্থাপনা

    • ATR-এর উপর ভিত্তি করে ডায়নামিক স্টপডোজ, ডিফল্ট ATR-এর 3 গুণ
    • এটিআর ভিত্তিক গতিশীল লাভের লক্ষ্যমাত্রা, এটিআর এর ৩ গুণ
    • অপশনাল ট্র্যাকিং স্টপ ফাংশন, বাজার অস্থিরতা অনুযায়ী স্বয়ংক্রিয়ভাবে স্টপ অবস্থান সামঞ্জস্য
  6. পারফরম্যান্স অপ্টিমাইজেশান ডিজাইন

    • পুনরাবৃত্ত গণনা কমানোর জন্য পূর্বনির্ধারিত ধ্রুবক
    • ক্যাশে সূচক গণনা ফলাফলের প্রক্রিয়াজাতকরণের গতি বাড়ানো
    • অ্যারে স্টোরেজ সময় ফিল্টারিং সেটিং ব্যবহার করে দক্ষ প্রক্রিয়াকরণ

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

এই কৌশলটির উল্লেখযোগ্য সুবিধাগুলি হলঃ

  1. দ্রুত সম্পাদন ক্ষমতা: calc_on_every_tick=true সেটিং দ্বারা, প্রতিটি মূল্য পরিবর্তনের জন্য অবিলম্বে প্রতিক্রিয়া জানাতে সক্ষম, বিশেষত উচ্চ-ফ্রিকোয়েন্সি ট্রেডিং পরিবেশের জন্য উপযুক্ত। কোডে ধ্রুবক প্রি-ক্যালকুলেশন এবং সূচক ক্যাশে প্রযুক্তি ব্যবহার করা হয়েছে, যা সম্পাদনের গতি আরও বাড়িয়ে তোলে।

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

  3. নমনীয় সময় ফিল্টারচারটি স্বনির্ধারিত ট্রেডিং সময়কালের মাধ্যমে, ব্যবসায়ীরা উচ্চ তরলতা এবং উচ্চ অস্থিরতার বাজারের সময়গুলিতে ফোকাস করার অনুমতি দেয়, কম সক্রিয়তা এবং অস্থির বাজারের সময়গুলি এড়িয়ে যায়।

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

  5. সম্পূর্ণ স্বয়ংক্রিয় সমর্থন: পাইনকানেক্টর এবং এমটি 5 ইন্টিগ্রেশনের মাধ্যমে, সম্পূর্ণ স্বয়ংক্রিয় লেনদেনের জন্য, মানুষের হস্তক্ষেপ এবং আবেগের প্রভাব হ্রাস করুন। কোডটিতে একটি সম্পূর্ণ সতর্কতা সিস্টেম রয়েছে যা দ্রুত কার্যকর মোডকে সমর্থন করে।

  6. সম্পদ ব্যবহারের অপ্টিমাইজেশান: ক্রমাগত এবং ক্যাশে পরিমাপের ফলাফলের পূর্বনির্ধারণের মাধ্যমে, কার্যকরভাবে কম্পিউটিং সম্পদ খরচ হ্রাস করে, রিয়েল-টাইম লেনদেনের পরিবেশে কার্যকর কার্যকারিতা নিশ্চিত করে।

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

কৌশলগত ঝুঁকি

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

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

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

  3. ওভার-অপ্টিমাইজেশন ঝুঁকিকৌশলটি একাধিক প্যারামিটার (যেমন EMA, SMA, RSI ইত্যাদি) নিয়ে গঠিত, এবং এটির ঝুঁকি রয়েছে যে এটি অত্যধিক অনুকূলিতকরণ (যেমন কার্ভ-ফিটিং) হতে পারে, যা কৌশলটিকে বাস্তব সময়ে দুর্বল করতে পারে।

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

  5. ATR-এর সীমাবদ্ধতাচরম বাজার পরিস্থিতিতে, এটিআর-ভিত্তিক স্টপ-লস এবং লাভের লক্ষ্যগুলি হঠাৎ বড় আকারের ওঠানামা মোকাবেলায় অপর্যাপ্ত হতে পারে, যার ফলে স্টপ-লস কার্যকর হয় না বা অকাল লাভের অবসান ঘটে।

ঝুঁকি প্রশমন

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

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

কোড বিশ্লেষণের উপর ভিত্তি করে, এই কৌশলটি আরও উন্নত করা যেতে পারেঃ

  1. গতিশীল প্যারামিটার স্বনির্ধারিত

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

    • ট্রেন্ডিং বাজার ও স্ট্রাইকিং বাজারকে আলাদা করার জন্য মার্কেট স্ট্যাটাস আইডেন্টিফিকেশন মডিউল যুক্ত করা হয়েছে
    • বিভিন্ন বাজারের অবস্থার উপর নির্ভর করে বিভিন্ন ট্রেডিং লজিক এবং ঝুঁকি পরামিতি প্রয়োগ করা
  3. উন্নত ফিল্টারিং সিস্টেম

    • লেনদেনের পরিমাণের সূচকগুলিকে অতিরিক্ত ফিল্টারিং শর্ত হিসাবে প্রবর্তন করা যাতে কম তরলতার পরিবেশে ভুয়া ব্রেকডাউনগুলি এড়ানো যায়
    • অত্যধিক বা অপর্যাপ্ত বাজারের শর্তে লেনদেন স্থগিত করার জন্য অস্থিরতা ফিল্টার যুক্ত করা
  4. অপ্টিমাইজ করা স্টপ লস স্ট্র্যাটেজি

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

    • সিগন্যাল স্ট্রেনথ রেটিং সিস্টেম তৈরি করা, যা একাধিক ফ্যাক্টরের উপর ভিত্তি করে সিগন্যালের গুণমানকে রেট দেয়
    • সংকেত শক্তির উপর ভিত্তি করে পজিশনের আকার পরিবর্তন করে আরও সূক্ষ্ম তহবিল পরিচালনার জন্য
  6. নিয়ন্ত্রণ প্রত্যাহার

    • সর্বাধিক প্রত্যাহারের নিয়ন্ত্রণ ব্যবস্থা যুক্ত করুন, যখন ধারাবাহিক ক্ষতির মূল্য হ্রাস পায় তখন লেনদেন স্থগিত করুন
    • মুনাফা সুরক্ষা ব্যবস্থা বাস্তবায়ন, যাতে মুনাফা থেকে ক্ষতির দিকে ফিরে না যায়
  7. কম্পিউটারের দক্ষতা উন্নত করা

    • পুনরাবৃত্ত গণনার পরিবর্তে অনুসন্ধান টেবিল ব্যবহারের মতো গণনা-নিবিড় ক্রিয়াকলাপকে আরও অপ্টিমাইজ করুন
    • আরও দক্ষ সময় ফিল্টারিং অ্যালগরিদমের জন্য, প্রতিটি কলামযুক্ত গ্রাফের জন্য কম কম্পিউটিং বোঝা

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

সারসংক্ষেপ

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

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

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

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

কৌশল সোর্স কোড
/*backtest
start: 2024-08-04 00:00:00
end: 2025-08-02 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/

//@version=5
strategy("Scalper TURBO", overlay=true, initial_capital=1000, 
         default_qty_type=strategy.percent_of_equity, default_qty_value=50,
         calc_on_every_tick=true, process_orders_on_close=false)

// ==================== PERFORMANCE OPTIMIZATIONS ====================
// Pre-calculate constants to avoid repeated calculations
const int MINUTES_PER_HOUR = 60

// ==================== INPUT PARAMETERS ====================
// Technical Parameters
emaFastLen    = input.int(34, "EMA Rápida", minval=1)
emaSlowLen    = input.int(63, "EMA Lenta", minval=1)
smaLen        = input.int(34, "SMA Filtro", minval=1)
rsiLen        = input.int(14, "Periodo RSI", minval=1)
rsiOverbought = input.int(70, "RSI Sobrecompra", minval=1, maxval=100)
rsiOversold   = input.int(30, "RSI Sobreventa", minval=1, maxval=100)
breakoutPeriod = input.int(1, "Periodos para Breakout", minval=1)
atrLen        = input.int(14, "Periodo ATR", minval=1)
atrMultSL     = input.float(3, "Multiplicador ATR Stop-Loss", step=0.1)
atrMultTrail  = input.float(3, "Multiplicador ATR Trailing Stop", step=0.1)

// ==================== TIME FILTER SETTINGS ====================
var g_timefilters = "Time Filters"

// Time Filter Arrays for faster processing
useTimeFilter = array.new_bool(4)
startHour = array.new_int(4)
startMin = array.new_int(4)
endHour = array.new_int(4)
endMin = array.new_int(4)

// Time Filter 1
array.set(useTimeFilter, 0, input.bool(false, "Enable Time Filter 1", group=g_timefilters))
array.set(startHour, 0, input.int(9, "Start Hour", minval=0, maxval=23, group=g_timefilters, inline="tf1start"))
array.set(startMin, 0, input.int(0, "Start Minute", minval=0, maxval=59, group=g_timefilters, inline="tf1start"))
array.set(endHour, 0, input.int(11, "End Hour", minval=0, maxval=23, group=g_timefilters, inline="tf1end"))
array.set(endMin, 0, input.int(30, "End Minute", minval=0, maxval=59, group=g_timefilters, inline="tf1end"))

// Time Filter 2
array.set(useTimeFilter, 1, input.bool(false, "Enable Time Filter 2", group=g_timefilters))
array.set(startHour, 1, input.int(13, "Start Hour", minval=0, maxval=23, group=g_timefilters, inline="tf2start"))
array.set(startMin, 1, input.int(30, "Start Minute", minval=0, maxval=59, group=g_timefilters, inline="tf2start"))
array.set(endHour, 1, input.int(15, "End Hour", minval=0, maxval=23, group=g_timefilters, inline="tf2end"))
array.set(endMin, 1, input.int(0, "End Minute", minval=0, maxval=59, group=g_timefilters, inline="tf2end"))

// Time Filter 3
array.set(useTimeFilter, 2, input.bool(false, "Enable Time Filter 3", group=g_timefilters))
array.set(startHour, 2, input.int(16, "Start Hour", minval=0, maxval=23, group=g_timefilters, inline="tf3start"))
array.set(startMin, 2, input.int(0, "Start Minute", minval=0, maxval=59, group=g_timefilters, inline="tf3start"))
array.set(endHour, 2, input.int(18, "End Hour", minval=0, maxval=23, group=g_timefilters, inline="tf3end"))
array.set(endMin, 2, input.int(30, "End Minute", minval=0, maxval=59, group=g_timefilters, inline="tf3end"))

// Time Filter 4
array.set(useTimeFilter, 3, input.bool(false, "Enable Time Filter 4", group=g_timefilters))
array.set(startHour, 3, input.int(20, "Start Hour", minval=0, maxval=23, group=g_timefilters, inline="tf4start"))
array.set(startMin, 3, input.int(0, "Start Minute", minval=0, maxval=59, group=g_timefilters, inline="tf4start"))
array.set(endHour, 3, input.int(22, "End Hour", minval=0, maxval=23, group=g_timefilters, inline="tf4end"))
array.set(endMin, 3, input.int(30, "End Minute", minval=0, maxval=59, group=g_timefilters, inline="tf4end"))

// ==================== PINECONNECTOR SETTINGS ====================
var g_connector = "PineConnector Settings"
pcID = input.string(" ", "Pine Connector ID", group=g_connector)
symbolName = input.string("XAUUSD", "Symbol Name", tooltip="Symbol exactly as it appears in your MT5", group=g_connector)
lotSize = input.float(0.01, "Lot Size", step=0.01, group=g_connector)
enableRealTrading = input.bool(true, "Enable Real Trading", group=g_connector)
useFastExecution = input.bool(true, "Use Fast Execution Mode", group=g_connector)
showLabels = input.bool(true, "Show Info Labels", group=g_connector)

// Risk Management
useStopLoss = input.bool(true, "Use Stop Loss", group=g_connector)
useTakeProfit = input.bool(true, "Use Take Profit", group=g_connector)
useTrailingStop = input.bool(false, "Use Trailing Stop", group=g_connector)
stopLossATRMult = input.float(3, "Stop Loss ATR Multiple", step=0.1, group=g_connector)
takeProfitATRMult = input.float(3, "Take Profit ATR Multiple", step=0.1, group=g_connector)
trailingStopATRMult = input.float(3, "Trailing Stop ATR Multiple", step=0.1, group=g_connector)

// ==================== OPTIMIZED TIME FILTER FUNCTION ====================
// Cache current time components
currentHour = hour(time)
currentMin = minute(time)
currentTimeMinutes = currentHour * MINUTES_PER_HOUR + currentMin

// Optimized time check function
isTimeAllowed() =>
    anyEnabled = false
    timeOK = false
    
    for i = 0 to 3
        if array.get(useTimeFilter, i)
            anyEnabled := true
            startTimeMin = array.get(startHour, i) * MINUTES_PER_HOUR + array.get(startMin, i)
            endTimeMin = array.get(endHour, i) * MINUTES_PER_HOUR + array.get(endMin, i)
            
            inRange = startTimeMin <= endTimeMin ? 
                     (currentTimeMinutes >= startTimeMin and currentTimeMinutes <= endTimeMin) :
                     (currentTimeMinutes >= startTimeMin or currentTimeMinutes <= endTimeMin)
            
            if inRange
                timeOK := true
                break
    
    not anyEnabled or timeOK

// ==================== CACHED INDICATOR CALCULATIONS ====================
// Calculate indicators only once per bar
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
sma34   = ta.sma(close, smaLen)
rsi     = ta.rsi(close, rsiLen)
atr     = ta.atr(atrLen)

// Support/Resistance with caching
var float resistenciaReciente = na
var float soporteReciente = na
if barstate.isconfirmed
    resistenciaReciente := ta.highest(high, breakoutPeriod)[1]
    soporteReciente := ta.lowest(low, breakoutPeriod)[1]

// ==================== SIGNAL CONDITIONS ====================
// Pre-calculate all conditions
tendenciaAlcista = emaFast > emaSlow
tendenciaBajista = emaFast < emaSlow
rsiNotOverbought = rsi < rsiOverbought
rsiNotOversold = rsi > rsiOversold
priceAboveSMA = close > sma34
priceBelowSMA = close < sma34
timeAllowed = isTimeAllowed()

// Breakout conditions
breakoutUp = close > resistenciaReciente
breakoutDown = close < soporteReciente

// Final entry conditions - simplified logic
longSignal = breakoutUp and tendenciaAlcista and rsiNotOverbought and priceAboveSMA and timeAllowed
shortSignal = breakoutDown and tendenciaBajista and rsiNotOversold and priceBelowSMA and timeAllowed

// ==================== POSITION MANAGEMENT ====================
// Efficient position tracking
var int currentPosition = 0  // 1 = long, -1 = short, 0 = flat
var bool positionChanged = false
var string pendingAlert = ""

// Detect position changes
newLong = longSignal and currentPosition <= 0
newShort = shortSignal and currentPosition >= 0

// ==================== OPTIMIZED ALERT SYSTEM ====================
// Pre-build alert components for faster execution
stopPips = useStopLoss ? str.tostring(math.round(atr * stopLossATRMult * 100)) : ""
tpPips = useTakeProfit ? str.tostring(math.round(atr * takeProfitATRMult * 100)) : ""
trailPips = useTrailingStop ? str.tostring(math.round(atr * trailingStopATRMult * 100)) : ""

// Build risk management string once
riskParams = useStopLoss ? ",sl=" + stopPips : ""
riskParams += useTakeProfit ? ",tp=" + tpPips : ""
riskParams += useTrailingStop ? ",trailingstop=" + trailPips : ""

// ==================== FAST EXECUTION MODE ====================
if enableRealTrading
    // LONG ENTRY
    if newLong
        // Close short first if needed
        if currentPosition < 0
            alert(pcID + ",closeshort," + symbolName, alert.freq_once_per_bar)
        
        // Enter long
        strategy.entry("Long", strategy.long)
        longAlert = pcID + ",buy," + symbolName + ",risk=" + str.tostring(lotSize) + riskParams
        alert(longAlert, useFastExecution ? alert.freq_once_per_bar : alert.freq_once_per_bar_close)
        currentPosition := 1
    
    // SHORT ENTRY
    else if newShort
        // Close long first if needed
        if currentPosition > 0
            alert(pcID + ",closelong," + symbolName, alert.freq_once_per_bar)
        
        // Enter short
        strategy.entry("Short", strategy.short)
        shortAlert = pcID + ",sell," + symbolName + ",risk=" + str.tostring(lotSize) + riskParams
        alert(shortAlert, useFastExecution ? alert.freq_once_per_bar : alert.freq_once_per_bar_close)
        currentPosition := -1
else
    // Backtest mode
    if newLong
        strategy.entry("Long", strategy.long)
        currentPosition := 1
    else if newShort
        strategy.entry("Short", strategy.short)
        currentPosition := -1

// ==================== STOP LOSS MANAGEMENT ====================
// Calculate stops only when in position
if currentPosition != 0
    if currentPosition > 0
        stopLong = strategy.position_avg_price - atr * atrMultSL
        strategy.exit("Exit Long", "Long", stop=stopLong, trail_points=atr * atrMultTrail, trail_offset=atr * atrMultTrail)
    else
        stopShort = strategy.position_avg_price + atr * atrMultSL
        strategy.exit("Exit Short", "Short", stop=stopShort, trail_points=atr * atrMultTrail, trail_offset=atr * atrMultTrail)

// Detect exits
if strategy.position_size == 0 and currentPosition != 0
    if enableRealTrading
        exitAlert = currentPosition > 0 ? pcID + ",closelong," + symbolName : pcID + ",closeshort," + symbolName
        alert(exitAlert, alert.freq_once_per_bar)
    currentPosition := 0