ডাবল ইনডেক্স মুভিং এভারেজ ট্রেন্ড ট্র্যাকিং এবং ভোলাটিলিটি বুদ্ধিমান ফিল্টারিং কৌশল

EMA ATR SAR 趋势跟踪 波动率过滤 区间检测 动态风险管理 突破交易
সৃষ্টির তারিখ: 2025-08-01 09:41:48 অবশেষে সংশোধন করুন: 2025-08-01 09:41:48
অনুলিপি: 0 ক্লিকের সংখ্যা: 232
2
ফোকাস
319
অনুসারী

ডাবল ইনডেক্স মুভিং এভারেজ ট্রেন্ড ট্র্যাকিং এবং ভোলাটিলিটি বুদ্ধিমান ফিল্টারিং কৌশল ডাবল ইনডেক্স মুভিং এভারেজ ট্রেন্ড ট্র্যাকিং এবং ভোলাটিলিটি বুদ্ধিমান ফিল্টারিং কৌশল

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটির মূল উপাদানগুলো হলঃ

  1. দ্বৈত ইএমএ ফিল্টারিং সিস্টেমকৌশলঃ বাজারের প্রবণতা নির্ধারণের জন্য দুটি সূচকীয় চলমান গড় ব্যবহার করে (উচ্চ দামের ইএমএ এবং নিম্ন দামের ইএমএ) । যখন দাম একই সাথে দুটি ইএমএ লাইনের উপরে থাকে, তখন একটি মাল্টিসিগন্যাল তৈরি করা হয়; যখন দাম একই সাথে দুটি ইএমএ লাইনের নীচে থাকে, তখন একটি শূন্য সংকেত তৈরি করা হয়। এই দ্বৈত নিশ্চিতকরণ প্রক্রিয়াটি কার্যকরভাবে মিথ্যা ব্রেকআউটের ঘটনা হ্রাস করে।

  2. ব্রেকিং টেস্ট: কৌশলটি মূল্যের পরিসরের শতাংশের উপর ভিত্তি করে একটি ব্যবধান সনাক্তকরণ অ্যালগরিদম ব্যবহার করে, যখন বাজারটি ক্রস-সমাধানের পর্যায়ে প্রবেশ করে (অর্থাৎ দামের ওঠানামা সেট থ্রেশহোল্ডের চেয়ে কম) তখন স্বয়ংক্রিয়ভাবে লেনদেন স্থগিত করা হয়। সিস্টেমটি ক্রমাগতভাবে ক্রমাগত ব্যবধানের বারগুলির সংখ্যা পর্যবেক্ষণ করে এবং বাজারটি সত্যিকারের ব্যবধানের অবস্থায় রয়েছে তা নিশ্চিত করার পরে কেবলমাত্র ব্যবধানের ফিল্টারটি সক্রিয় করে, প্রাথমিক বিরতির সুযোগগুলি মিস না করার জন্য।

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

  4. ট্রেন্ড প্রতি ট্রেড নীতি: কৌশলটি একটি ট্রেন্ড স্ট্যাটাস মেকানিজম বাস্তবায়ন করে যা নিশ্চিত করে যে ট্রেন্ডের দিক পরিবর্তন না হওয়া পর্যন্ত একই ট্রেন্ডের দিক থেকে কেবলমাত্র একবার ট্রেড করা হবে। এটি একই ট্রেন্ডের মধ্যে অত্যধিক ট্রেডিং এবং সিগন্যাল পুনরাবৃত্তি এড়ায়।

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

  6. গতিশীল ঝুঁকি ব্যবস্থাপনাকৌশলঃ এটিআর-ভিত্তিক স্টপ বা ফিক্সড শতাংশ স্টপ, এবং বিকল্প প্যারালাইন এসএআর ট্র্যাকিং স্টপ প্রদান করে যা ঝুঁকি ব্যবস্থাপনাকে আরও নমনীয় করে তোলে এবং বাজারের পরিবর্তনের সাথে খাপ খাইয়ে নেয়।

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

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

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

  3. স্মার্ট ওভাররাইডিংকৌশলঃ বাজারের অস্থিরতার গতিশীলতার সাথে অবস্থানের আকার সামঞ্জস্য করে, উচ্চ অস্থিরতার পরিবেশে ঝুঁকির ফাঁক হ্রাস করে এবং মাঝারি অস্থিরতার পরিবেশে উপার্জনের সম্ভাবনা সর্বাধিক করে।

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

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

  6. একযোগে লেনদেনট্রেডিং স্ট্যাটাস মেকানিজমের মাধ্যমে ট্রেডিং স্ট্যাটাসের প্রতিটি দিকের জন্য শুধুমাত্র একটি ট্রেডিং কার্যকর করা নিশ্চিত করুন, যাতে একক দিকের ঝুঁকিতে অতিরিক্ত ট্রেডিং এবং অতিরিক্ত তহবিলের ঝুঁকি এড়ানো যায়।

কৌশলগত ঝুঁকি

  1. প্রবণতা বিপরীত: EMA-কে প্রধান প্রবণতা নির্দেশক হিসেবে ব্যবহার করার কারণে, কৌশলটি দ্রুত প্রবণতা বিপরীত হওয়ার সময় ধীর প্রতিক্রিয়াশীল হতে পারে, যার ফলে বিপরীত হওয়ার প্রথম দিকে কিছু প্রত্যাহার দেখা দেয়। সমাধানটি হল EMA দৈর্ঘ্যের প্যারামিটারটি সামঞ্জস্য করা, বড় বাজারে স্বল্প EMA দৈর্ঘ্য ব্যবহার করা যেতে পারে।

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

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

  4. হঠাৎ বড় অস্থিরতার ঝুঁকি: হঠাৎ বাজার ঘটনা (যেমন একটি বড় সংবাদ বিজ্ঞপ্তি) দ্বারা সৃষ্ট দামের উঁচুতে, স্টপ লসটি প্রত্যাশিত মূল্যে কার্যকর করা নাও হতে পারে, যার ফলে প্রত্যাশিত ক্ষতির চেয়ে বেশি প্রকৃত ক্ষতি হতে পারে। অতিরিক্ত তহবিল পরিচালনার নিয়মগুলি ব্যবহার করার পরামর্শ দেওয়া হয় যা একক লেনদেনের ঝুঁকি ফাঁককে সীমাবদ্ধ করে।

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

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

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

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

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

  4. ওভাররাইড ফিল্টার উন্নত করুনবর্তমান ওঠানামার ফিল্টারটি সহজ এটিআর শতাংশ থ্রেশহোল্ডের উপর ভিত্তি করে আপেক্ষিক ওঠানামার পরিমাপকে আপগ্রেড করতে পারে, যা বর্তমান ওঠানামার সাথে ঐতিহাসিক ওঠানামার বন্টনের তুলনা করে এবং সত্যিকারের কম ওঠানামার পরিবেশকে আরও সঠিকভাবে সনাক্ত করে।

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

  6. তহবিল ব্যবস্থাপনা অ্যালগরিদম অপ্টিমাইজ করুনক্যালি নির্দেশিকা বা অন্যান্য উচ্চমানের তহবিল ব্যবস্থাপনা অ্যালগরিদমগুলিকে কৌশলগতভাবে সংহত করা, ঐতিহাসিক বিজয় এবং লাভ-ক্ষতির অনুপাতের উপর ভিত্তি করে অবস্থানের আকারকে গতিশীলভাবে সামঞ্জস্য করা, দীর্ঘমেয়াদী রিটার্নকে সর্বাধিকতর করতে এবং ঝুঁকিকে ন্যূনতম করতে পারে

সারসংক্ষেপ

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

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

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

//@version=5
strategy("Dubic EMA Strategy", overlay=true, 
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100,
     initial_capital=10000,
     currency=currency.USD,
     commission_value=0.1,
     pyramiding=0,
     calc_on_every_tick=true)

// Inputs
ema_length = input.int(40, "EMA Length")
tp_percent = input.float(2.0, "Take Profit %", step=0.1, minval=0.1) / 100
sl_offset = input.float(0.5, "Stop Loss Offset %", step=0.1, minval=0.1) / 100

// Toggles for SL/TP
use_take_profit = input.bool(true, "Use Take Profit")
use_stop_loss = input.bool(true, "Use Stop Loss")

// Range Detection
range_length = input.int(20, "Range Detection Length", minval=5)
range_threshold = input.float(2.0, "Range Threshold %", step=0.1) / 100
min_range_bars = input.int(3, "Min Range Bars", minval=1)

// Parabolic SAR
use_parabolic_sar = input.bool(true, "Use Parabolic SAR Trailing Stop")
sar_start = input.float(0.02, "SAR Start", step=0.01)
sar_increment = input.float(0.02, "SAR Increment", step=0.01)
sar_max = input.float(0.2, "SAR Maximum", step=0.01)

// ATR Stop Configuration
use_atr_stop = input.bool(true, "Use ATR Stop Instead of Fixed %")
atr_length = input.int(14, "ATR Length")
atr_mult = input.float(1.5, "ATR Multiplier", minval=0.5)

// Volatility Filter
min_atr = input.float(0.5, "Min ATR % for Trading", step=0.1) / 100
use_volatility_filter = input.bool(true, "Enable Volatility Filter")

// Unbroken Range Visualization
show_unbroken_range = input.bool(true, "Show Unbroken Range Visualization", group="Unbroken Range")
unbroken_length = input.int(20, 'Minimum Range Length', minval=2, group="Unbroken Range")
unbroken_mult = input.float(1., 'Range Width', minval=0, step=0.1, group="Unbroken Range")
unbroken_atrLen = input.int(500, 'ATR Length', minval=1, group="Unbroken Range")
upCss = input.color(#089981, 'Broken Upward', group="Unbroken Range")
dnCss = input.color(#f23645, 'Broken Downward', group="Unbroken Range")
unbrokenCss = input.color(#2157f3, 'Unbroken', group="Unbroken Range")

// Calculate Indicators
ema_high = ta.ema(high, ema_length)
ema_low = ta.ema(low, ema_length)
ema_200 = ta.ema(close, 200)
sar = ta.sar(sar_start, sar_increment, sar_max)
atr = ta.atr(atr_length)

// Volatility Filter
atr_percentage = (atr / close) * 100
sufficient_volatility = not use_volatility_filter or (atr_percentage >= min_atr * 100)

// Range Detection Logic
range_high = ta.highest(high, range_length)
range_low = ta.lowest(low, range_length)
range_size = range_high - range_low
range_percentage = (range_size / close) * 100
range_condition = range_percentage <= (range_threshold * 100)

// Consecutive range bars counter
var int range_bars_count = 0
range_bars_count := range_condition ? range_bars_count + 1 : 0
in_range = range_bars_count >= min_range_bars

// Visualize Range
bgcolor(in_range ? color.new(color.purple, 85) : na, title="Range Zone")
plot(in_range ? range_high : na, "Range High", color=color.purple, linewidth=2, style=plot.style_linebr)
plot(in_range ? range_low : na, "Range Low", color=color.purple, linewidth=2, style=plot.style_linebr)

// Trading Conditions
buy_condition = (close > ema_high) and (close > ema_low)
sell_condition = (close < ema_high) and (close < ema_low)

// Apply Filters
buy_signal = buy_condition and not in_range and sufficient_volatility
sell_signal = sell_condition and not in_range and sufficient_volatility

// Trend State Machine
var int currentTrend = 0  // 0=neutral, 1=long, -1=short
var bool showBuy = false
var bool showSell = false

trendChanged = false
if buy_signal and currentTrend != 1
    currentTrend := 1
    trendChanged := true
    showBuy := true
    showSell := false
else if sell_signal and currentTrend != -1
    currentTrend := -1
    trendChanged := true
    showBuy := false
    showSell := true

// Reset signals
showBuy := nz(showBuy[1]) and not trendChanged ? false : showBuy
showSell := nz(showSell[1]) and not trendChanged ? false : showSell

// Plot Indicators
plot(ema_high, "EMA High", color=color.blue, linewidth=2)
plot(ema_low, "EMA Low", color=color.orange, linewidth=2)
plot(ema_200, "200 EMA", color=color.white, linewidth=3)

// Plot SAR with color coding
color sarColor = strategy.position_size > 0 ? color.red : 
               strategy.position_size < 0 ? color.green : 
               color.gray
plot(use_parabolic_sar ? sar : na, "SAR", style=plot.style_circles, color=sarColor, linewidth=2)

// Plot signals
plotshape(showBuy, title="Buy Signal", text="BUY", style=shape.labelup, 
          location=location.belowbar, color=color.green, textcolor=color.white, size=size.tiny)
plotshape(showSell, title="Sell Signal", text="SELL", style=shape.labeldown, 
          location=location.abovebar, color=color.red, textcolor=color.white, size=size.tiny)

// Strategy Logic
var float long_sl = na
var float long_tp = na
var float short_sl = na
var float short_tp = na
var float long_trail_stop = na
var float short_trail_stop = na

// Position Sizing with Volatility Scaling
position_size = use_volatility_filter ? math.min(100, 100 * (min_atr * 100) / atr_percentage) : 100

// Execute trades
if (showBuy)
    // Calculate stop loss and take profit
    long_sl := use_atr_stop ? close - atr * atr_mult : ema_low * (1 - sl_offset)
    long_tp := close * (1 + tp_percent)
    long_trail_stop := use_parabolic_sar ? sar : na
    
    strategy.close("Short", comment="Exit Short")
    strategy.entry("Long", strategy.long, qty=position_size)
    
    // Set exit orders with toggle support
    if use_stop_loss or use_take_profit
        strategy.exit("Long SL/TP", "Long", 
             stop=use_stop_loss ? long_sl : na, 
             limit=use_take_profit ? long_tp : na)
    
    if use_parabolic_sar
        strategy.exit("Long SAR", "Long", stop=long_trail_stop)
    
    alert("BUY: " + syminfo.ticker, alert.freq_once_per_bar)
    
if (showSell)
    // Calculate stop loss and take profit
    short_sl := use_atr_stop ? close + atr * atr_mult : ema_high * (1 + sl_offset)
    short_tp := close * (1 - tp_percent)
    short_trail_stop := use_parabolic_sar ? sar : na
    
    strategy.close("Long", comment="Exit Long")
    strategy.entry("Short", strategy.short, qty=position_size)
    
    // Set exit orders with toggle support
    if use_stop_loss or use_take_profit
        strategy.exit("Short SL/TP", "Short", 
             stop=use_stop_loss ? short_sl : na, 
             limit=use_take_profit ? short_tp : na)
    
    if use_parabolic_sar
        strategy.exit("Short SAR", "Short", stop=short_trail_stop)
    
    alert("SELL: " + syminfo.ticker, alert.freq_once_per_bar)

// Update SAR trailing stops
if barstate.isrealtime and use_parabolic_sar
    if strategy.position_size > 0
        strategy.exit("Long SAR", "Long", stop=long_trail_stop)
    else if strategy.position_size < 0
        strategy.exit("Short SAR", "Short", stop=short_trail_stop)

// Plot SL/TP levels with toggle support
plot(strategy.position_size > 0 and use_stop_loss ? long_sl : na, "Long Stop", color=color.red, style=plot.style_linebr, linewidth=2)
plot(strategy.position_size > 0 and use_take_profit ? long_tp : na, "Long Take Profit", color=color.green, style=plot.style_linebr, linewidth=2)
plot(strategy.position_size < 0 and use_stop_loss ? short_sl : na, "Short Stop", color=color.red, style=plot.style_linebr, linewidth=2)
plot(strategy.position_size < 0 and use_take_profit ? short_tp : na, "Short Take Profit", color=color.green, style=plot.style_linebr, linewidth=2)

// Plot SAR trailing stops
plot(strategy.position_size > 0 and use_parabolic_sar ? long_trail_stop : na, 
     "Long Trail Stop", color=color.orange, style=plot.style_circles, linewidth=2)
plot(strategy.position_size < 0 and use_parabolic_sar ? short_trail_stop : na, 
     "Short Trail Stop", color=color.orange, style=plot.style_circles, linewidth=2)

// Alerts
alertcondition(showBuy, title="Buy Alert", message="BUY: {{ticker}}")
alertcondition(showSell, title="Sell Alert", message="SELL: {{ticker}}")