ডুয়াল-মোড অ্যাডাপ্টিভ ট্রেন্ড ট্রেডিং কৌশল: ATR ভোলাটিলিটি ঝুঁকি ব্যবস্থাপনা সিস্টেমের সাথে EMA ক্রসওভার

EMA ATR RSI SMA 趋势跟踪 逆势交易 波动率 风险管理 自适应交易
সৃষ্টির তারিখ: 2025-04-01 14:20:50 অবশেষে সংশোধন করুন: 2025-04-01 14:20:50
অনুলিপি: 0 ক্লিকের সংখ্যা: 387
2
ফোকাস
319
অনুসারী

ডুয়াল-মোড অ্যাডাপ্টিভ ট্রেন্ড ট্রেডিং কৌশল: ATR ভোলাটিলিটি ঝুঁকি ব্যবস্থাপনা সিস্টেমের সাথে EMA ক্রসওভার ডুয়াল-মোড অ্যাডাপ্টিভ ট্রেন্ড ট্রেডিং কৌশল: ATR ভোলাটিলিটি ঝুঁকি ব্যবস্থাপনা সিস্টেমের সাথে EMA ক্রসওভার

ওভারভিউ

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

কোড বিশ্লেষণ করে দেখা যায় যে এই কৌশলটি দ্রুত ইএমএ ((3) এবং ধীর ইএমএ ((8) এর ক্রস ব্যবহার করে একটি ট্রেডিং সিগন্যাল তৈরি করে এবং একই সাথে ট্রেন্ডিং ইএমএ ((55) ব্যবহার করে সামগ্রিক বাজারের দিকনির্দেশনা নিশ্চিত করে। কৌশলটির উদ্ভাবনী দিকটি তার স্ব-অনুকূলিতকরণ যন্ত্রপাতিতে রয়েছে। যখন আরএসআই বাজারকে একটি স্পষ্ট ট্রেন্ডিং অবস্থায় দেখায়, কৌশলটি প্রবণতা অনুসরণ করে; যখন বাজারটি অস্থির হয় তবে সুস্পষ্ট দিকনির্দেশের অভাব থাকে, তখন কৌশলটি স্বয়ংক্রিয়ভাবে বিপরীত ট্রেডিং মোডে স্যুইচ করে, ওভারবয় / ওভারসেল বিপরীত হওয়ার সুযোগগুলি ক্যাপচার করে।

কৌশল নীতি

এই কৌশলটির মূল নীতি হল একাধিক সূচক সমন্বয় দ্বারা বাজারের অবস্থা বিচার করা এবং লেনদেনের সংকেত উত্পন্ন করা। এর বাস্তবায়ন লজিক নিম্নরূপঃ

  1. সূচক গণনা

    • দ্রুত ইএমএ (৩): স্বল্পমেয়াদী মূল্য পরিবর্তন ধরা
    • ধীর গতির ইএমএ (৮): স্বল্পমেয়াদী বাজারের শব্দ ফিল্টার করুন
    • ট্রেন্ডস EMA ((55): সামগ্রিক বাজারের দিকনির্দেশনা নির্ধারণ
    • ATR ((14)): বাজারের অস্থিরতা পরিমাপ করে, যা স্টপ লস স্টপ সেটিংসে ব্যবহৃত হয়
    • RSI ((14)): বাজারটি ট্রেন্ডিং অবস্থায় আছে কিনা তা মূল্যায়ন করে
  2. স্বনির্ধারণ প্রবণতা সনাক্তকরণ

    • আরএসআই থেকে 50 এর দূরত্বের মাধ্যমে ট্রেন্ডের তীব্রতা গণনা করুনtrendStrength = math.abs(rsiValue - 50) / 50
    • ট্রেন্ডিং স্ট্যাটাস বাজারকে ট্রেন্ডিং স্ট্যাটাস হিসাবে চিহ্নিত করে যখন ট্রেন্ডিং স্ট্যাটাস 0.3 এর চেয়ে বেশি হয়
    • 5 চক্রের এসএমএ এবং 20 চক্রের এসএমএর তুলনা ব্যবহার করে প্রবণতার দিকনির্দেশনা নির্ধারণ করুন
  3. স্মার্ট ট্রেডিং লজিক

    • ট্রেন্ড মার্কেট প্যাটার্ন(আরএসআই 50 থেকে দূরে, প্রবণতা শক্তি> 0.3):
      • একাধিক মাথাঃ দ্রুত EMA উপর ধীর EMA + মূল্য ট্রেন্ডিং EMA উপরে + স্বল্পমেয়াদী গড় লাইন দীর্ঘমেয়াদী গড় লাইন উপরে
      • খালি মাথাঃ দ্রুত EMA এর নিচে ধীর EMA + মূল্য ট্রেন্ডিং EMA এর নিচে + স্বল্পমেয়াদী গড় লাইন দীর্ঘমেয়াদী গড় লাইনের নিচে
    • বাজারের ঝড়ের ধরন(আরএসআই 50 এর কাছাকাছি, প্রবণতা শক্তি <0.3):
      • একাধিক শিরোনামঃ দ্রুত ইএমএ উপর ধীর ইএমএ + মূল্য প্রবণতা ইএমএর নীচে ((ওভারসোল্ড রিবাউন্ড)
      • খালি মাথাঃ দ্রুত EMA এর নিচে ধীর EMA + দাম ট্রেন্ডিং EMA এর উপরে ((অতিরিক্ত ক্রয় পুনর্নির্ধারণ)
  4. ঝুঁকি ব্যবস্থাপনা

    • স্টপ লস ATR এর ১.২ গুণ
    • স্টপ-অফ সেট ATR এর ২.০ গুণ
    • অ্যাকাউন্টের ঝুঁকির শতাংশের উপর ভিত্তি করে গতিশীলভাবে গণনা করা পজিশনের আকার (ডিফল্ট 1%)
    • ফিক্সড 5 গুণ লিভারেজ
  5. লেনদেনের নিয়ন্ত্রণ

    • সর্বনিম্ন লেনদেনের ব্যবধান (ডিফল্ট 72 মিনিট) সেট করুন, অতিরিক্ত লেনদেন প্রতিরোধ করুন
    • নিশ্চিত করুন যে নতুন সংকেত তৈরি করা হয়েছে যখন কোন পজিশন নেই

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

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

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

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

  2. সঠিক ঝুঁকি ব্যবস্থাপনাএটিআর-ভিত্তিক ডায়নামিক স্টপ-ড্রপ সেটিং, যা নিশ্চিত করে যে স্টপ পজিশনটি বর্তমান বাজারের অস্থিরতা বিবেচনা করে, নির্দিষ্ট পয়েন্ট বা শতাংশ ব্যবহার না করে। এর অর্থ হ’ল বড় অস্থিরতার সময় স্টপ করা আরও স্বাচ্ছন্দ্যযুক্ত এবং ছোট অস্থিরতার সময় স্টপ করা আরও কঠোর।

  3. বুদ্ধিমান অবস্থান ব্যবস্থাপনা: ঝুঁকির শতাংশ এবং এটিআর দ্বারা পজিশনের আকার গণনা করে, প্রতিটি লেনদেনের ঝুঁকি তুলনামূলকভাবে ধ্রুবক এবং বাজারের ওঠানামা পরিবর্তনের কারণে অতিরিক্ত ঝুঁকি বহন না করে তা নিশ্চিত করুন।

  4. মিথ্যা সংকেত ফিল্টার করুন: একাধিক শর্তের মাধ্যমে নিশ্চিতকরণ (ইএমএ ক্রস, প্রবণতা দিক, বাজার স্থিতির বিচার), কার্যকরভাবে মিথ্যা ব্রেকআউট এবং মিথ্যা সংকেতের প্রভাব হ্রাস করে।

  5. অতিরিক্ত লেনদেন রোধ করা

  6. ভিজ্যুয়াল ট্রেডিং সিগন্যাল: কৌশলগুলি EMA লাইন, ক্রস সিগন্যাল, এন্ট্রি পয়েন্ট, স্টপ লস এবং স্টপ লাইন সহ প্রচুর চার্ট চিহ্ন সরবরাহ করে যা ব্যবসায়ীদের কৌশলগত যুক্তি এবং কার্যকর প্রক্রিয়াটি সহজেই বুঝতে দেয়।

  7. প্যারামিটার নমনীয়: সমস্ত মূল প্যারামিটারগুলি ইনপুট ইন্টারফেসের মাধ্যমে সামঞ্জস্য করা যায়, যাতে কৌশলগুলি বিভিন্ন বাজার এবং ব্যক্তিগত ঝুঁকির পছন্দ অনুসারে অনুকূলিত করা যায়।

কৌশলগত ঝুঁকি

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

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

  2. ফিক্সড লিভারেজ ঝুঁকি৫ গুণ স্থির লিভারেজ চরম বাজার পরিস্থিতিতে বড় আকারের প্রত্যাহারের কারণ হতে পারে। সমাধানঃ বাজার ওঠানামা গতিশীলতা অনুযায়ী লিভারেজ আকারের পরিবর্তন বিবেচনা করুন এবং উচ্চ ওঠানামা সময় লিভারেজ হ্রাস করুন।

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

  4. স্থির ATR গুণ সীমাসমাধানঃ এটিআর গুণককে বিভিন্ন বাজার এবং সময়কালের বৈশিষ্ট্য অনুসারে সামঞ্জস্য করা যেতে পারে, অথবা এটিআর গুণককে স্বনির্ধারিত করা যেতে পারে।

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

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

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

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

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

  2. প্রবণতা বিচার বৃদ্ধিউদাহরণস্বরূপ, আপনি শর্ত যোগ করতে পারেনঃadxValue = ta.adx(14) > 25এটি একটি শক্তিশালী প্রবণতা হিসাবে অতিরিক্ত নিশ্চিতকরণ।

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

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

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

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

  7. তহবিল ব্যবস্থাপনা অপ্টিমাইজ করুন: একটি গ্রেডিয়েন্ট পজিশন ম্যানেজমেন্ট বা কমপ্লেক্স পজিশন কৌশল বাস্তবায়ন করুন, যখন প্রবণতা নিশ্চিতকরণ উচ্চতর হয় তখন পজিশন বাড়ান। আপনি সংকেত শক্তি বা প্রবণতা শক্তি অনুযায়ী ঝুঁকি অনুপাত সামঞ্জস্য করতে পারেন।

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

সারসংক্ষেপ

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

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

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

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

কৌশল সোর্স কোড
/*backtest
start: 2024-04-01 00:00:00
end: 2025-03-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("DOGE/USDT 5X Adaptive Trend Strategy", overlay=true, margin_long=20, margin_short=20)

// === Core Parameters ===
fastEMA = input.int(3, "Fast EMA Length", minval=1, maxval=20)
slowEMA = input.int(8, "Slow EMA Length", minval=2, maxval=50) 
trendEMA = input.int(55, "Trend EMA Length", minval=10, maxval=200)
atrPeriod = input.int(14, "ATR Period", minval=1, maxval=50)
tradeInterval = input.int(72, "Minutes Between Trades", minval=1, maxval=1440)

// Risk Management
slMultiplier = input.float(1.2, "Stop-Loss (ATR Multiple)", minval=0.5, maxval=5.0, step=0.1)
tpMultiplier = input.float(2.0, "Take-Profit (ATR Multiple)", minval=0.5, maxval=10.0, step=0.1)
riskPct = input.float(1.0, "Risk Per Trade (%)", minval=0.1, maxval=10.0, step=0.1)
leverage = 5.0  // Fixed 5x leverage

// Adaptive mode selection
useAdaptive = input.bool(true, "Use Adaptive Mode")
adaptivePeriod = input.int(14, "Adaptive Period")

// === Calculate Indicators ===
fastLine = ta.ema(close, fastEMA)
slowLine = ta.ema(close, slowEMA)
trendLine = ta.ema(close, trendEMA)
atrValue = ta.atr(atrPeriod)

// === Adaptive Trend Detection ===
// Determine market direction strength
rsiValue = ta.rsi(close, adaptivePeriod)
trendStrength = math.abs(rsiValue - 50) / 50 // 0 to 1 scale
isTrending = trendStrength > 0.3 // Above 0.3 indicates trending

// Determine trend direction
uptrend = ta.sma(close, 5) > ta.sma(close, 20)
downtrend = ta.sma(close, 5) < ta.sma(close, 20)

// === Visualize Indicators ===
p1 = plot(fastLine, "Fast EMA", color=#2196F3, linewidth=2)
p2 = plot(slowLine, "Slow EMA", color=#FF9800, linewidth=2)
p3 = plot(trendLine, "Trend EMA", color=#757575, linewidth=1)

// Cross detection
crossUp = ta.crossover(fastLine, slowLine)
crossDown = ta.crossunder(fastLine, slowLine)
plotshape(crossUp, "EMA Cross Up", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(crossDown, "EMA Cross Down", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

// === Trade Logic ===
var int lastTradeBarIndex = 0
timeElapsed = (bar_index - lastTradeBarIndex) >= tradeInterval
noActivePosition = strategy.position_size == 0

// Adaptive entry conditions
longTrendEntry = crossUp and close > trendLine and uptrend and isTrending
shortTrendEntry = crossDown and close < trendLine and downtrend and isTrending

// Counter-trend entries (when market is not strongly trending)
longCounterEntry = crossUp and close < trendLine and not isTrending
shortCounterEntry = crossDown and close > trendLine and not isTrending

// Final entry signals
validLong = (useAdaptive ? (isTrending ? longTrendEntry : longCounterEntry) : crossUp) and timeElapsed and noActivePosition
validShort = (useAdaptive ? (isTrending ? shortTrendEntry : shortCounterEntry) : crossDown) and timeElapsed and noActivePosition

// Position sizing calculation
equity = strategy.equity
riskAmount = equity * (riskPct / 100)
stopDistance = atrValue * slMultiplier
positionSize = math.round((riskAmount / stopDistance) * leverage)

// Visualize entry signals
plotshape(validLong, "Long Entry", style=shape.circle, location=location.belowbar, color=color.lime, size=size.normal)
plotshape(validShort, "Short Entry", style=shape.circle, location=location.abovebar, color=color.red, size=size.normal)

// === Strategy Execution ===
if (validLong)
    strategy.entry("Long", strategy.long, qty=positionSize)
    stopPrice = close - (atrValue * slMultiplier)
    targetPrice = close + (atrValue * tpMultiplier)
    strategy.exit("Exit Long", "Long", stop=stopPrice, limit=targetPrice)
    lastTradeBarIndex := bar_index
if (validShort)
    strategy.entry("Short", strategy.short, qty=positionSize)
    stopPrice = close + (atrValue * slMultiplier)
    targetPrice = close - (atrValue * tpMultiplier)
    strategy.exit("Exit Short", "Short", stop=stopPrice, limit=targetPrice)
    lastTradeBarIndex := bar_index