
ডাবল-ব্রিজড ফিল্টার ডাবল-ব্রিজড ফিল্টার ডাবল-ব্রিজড ফিল্টার ডাবল-ব্রিজড ফিল্টার হল একটি বুদ্ধিমান ট্রেডিং সিস্টেম যা মূল্যের অস্থিরতার উপর ভিত্তি করে তৈরি করা হয়, যা একটি স্বতন্ত্র সেট দ্রুত এবং ধীর গতির ফিল্টারগুলির সমন্বয়ে একটি দ্বৈত-নিশ্চিত প্রবণতা সনাক্তকরণ প্রক্রিয়া তৈরি করে। এই কৌশলটির মূল অংশটি হ’ল সূচকীয় চলমান গড় (ইএমএ) ব্যবহার করে মসৃণ গড় বাস্তব তরঙ্গের পরিমাণ গণনা করা, এবং তারপরে এই গতিশীল অস্থিরতার সূচকের উপর ভিত্তি করে একটি আপ-ডাউন ট্র্যাক তৈরি করা, একটি স্ব-অনুকূলিত মূল্য চ্যানেল তৈরি করা। যখন দাম এই গতিশীল চ্যানেলটি ভেঙে যায়, তখন কৌশলটি বিপরীত দিক এবং প্রবণতার ধারাবাহিকতার উপর ভিত্তি করে সংশ্লিষ্ট ট্রেডিং সংকেত তৈরি করে।
এই কৌশলটি বিশেষত রেনকো চার্টগুলির জন্য উপযুক্ত, কারণ রেনকো চার্টগুলি সময়ের ফ্যাক্টরগুলিকে ফিল্টার করতে এবং দামের পরিবর্তনের দিকে মনোনিবেশ করতে সক্ষম হয়, যা ডাবল ডাবল ডাবল ফ্রিজ কৌশলগুলির মূল মানসিকতার সাথে অত্যন্ত সুসংগত। এই কৌশলটি ডাবল ডাবল ফ্রিজ ফ্রিজ ব্যবস্থার মাধ্যমে কার্যকরভাবে বাজারের শব্দকে ট্রেডিং সিদ্ধান্তের উপর হস্তক্ষেপকে হ্রাস করে, যখন সত্যিকারের প্রবণতা পরিবর্তনের সংবেদনশীলতা বজায় রাখে। এই নকশাটি কৌশলটিকে ঝড়ের বাজারে ঘন ঘন মিথ্যা সংকেত এড়াতে সক্ষম করে এবং ট্রেন্ডিং বাজারে সময়মতো কার্যকর মূল্য বিপর্যয়গুলি ধরতে সক্ষম করে।
কৌশলটির বুদ্ধিমানতা তার স্ব-অনুসন্ধানযোগ্যতার মধ্যে প্রতিফলিত হয়, যা বিভিন্ন বাজারের অস্থিরতার পরিবেশের সাথে ডায়নামিকভাবে ব্যাপ্তি প্রস্থের সমন্বয় করে, উচ্চ অস্থিরতার বাজারে খুব বেশি সংবেদনশীল না হওয়া এবং কম অস্থিরতার বাজারে খুব বেশি মন্থর না হওয়া নিশ্চিত করে।
ডাবল-ব্রেক-এন্ডেড ওভারল্যাপ ট্রেন্ড ট্র্যাকিং কৌশলটির মূল নীতিটি মূল্যের অস্থিরতার পরিসংখ্যানগত বৈশিষ্ট্যের উপর ভিত্তি করে তৈরি করা হয়েছে। কৌশলটি প্রথমে smoothrng ফাংশন ব্যবহার করে মসৃণ গড় ওঠানামা পরিমাপ করে, যা সূচকীয় চলমান গড়ের সাথে দামের পরম পরিবর্তনের মানকে দু’বার মসৃণ করে। প্রথম মসৃণকরণটি মূল্য পরিবর্তনের পরম মানের EMA গণনা করে, দ্বিতীয় মসৃণকরণটি মূল চক্রের দ্বিগুণ হ্রাস ব্যবহার করে। এই দ্বৈত মসৃণকরণ প্রক্রিয়াটি কার্যকরভাবে স্বল্প-মেয়াদী গোলমালকে নির্মূল করতে পারে এবং মাঝারি-দীর্ঘমেয়াদী অস্থিরতার পরিবর্তনের প্রতিক্রিয়াশীলতা বজায় রাখতে পারে।
কৌশলটি দ্রুত এবং ধীর দুটি প্যারামিটার সিস্টেম ডিজাইন করেছেঃ দ্রুত প্যারামিটারগুলি ((per1=27, mult1=1.5) স্বল্পমেয়াদী মূল্য পরিবর্তনের জন্য, এবং ধীর প্যারামিটারগুলি ((per2=55, mult2=1.0) দীর্ঘমেয়াদী প্রবণতা সনাক্ত করার জন্য। দুটি সেট ব্যাপ্তির মধ্যবর্তী মানগুলি চূড়ান্ত গতিশীল ব্যাপ্তির প্রস্থ হিসাবে, এই নকশাটি কৌশলটির সংবেদনশীলতা এবং স্থিতিশীলতার মধ্যে ভারসাম্য বজায় রাখে।
ব্যাপ্তি ফিল্টার (Rngfilt ফাংশন) হল কৌশলটির একটি কেন্দ্রীয় উপাদান, যা বর্তমান মূল্যের সাথে পূর্ববর্তী ব্যাপ্তি মানের সম্পর্ককে তুলনা করে গতিশীলভাবে ব্যাপ্তি রেখার অবস্থানকে সামঞ্জস্য করে। যখন দাম বৃদ্ধি পায়, তখন ব্যাপ্তি রেখাটি বর্তমান মূল্যের বিয়োগ ব্যাপ্তি এবং পূর্ববর্তী ব্যাপ্তি মানের বৃহত্তর অংশ হিসাবে সেট করা হয়। যখন দাম হ্রাস পায়, তখন ব্যাপ্তি রেখাটি বর্তমান মূল্যের যোগ ব্যাপ্তি এবং পূর্ববর্তী ব্যাপ্তি মানের ছোট অংশ হিসাবে সেট করা হয়। এই প্রক্রিয়াটি নিশ্চিত করে যে ব্যাপ্তি রেখাটি মূল্যের প্রবণতা পরিবর্তনকে অনুসরণ করতে পারে এবং একই সাথে স্বল্পমেয়াদী অস্থিরতা অতিক্রম করার জন্য পর্যাপ্ত শামক সরবরাহ করে।
কৌশলটি ক্রমাগত উত্থান এবং পতনের সময়কালকে রেকর্ড করে, যা একটি ট্রেন্ডের শক্তি এবং ধারাবাহিকতা নির্ধারণে সহায়তা করে। ট্রেডিং সিগন্যালের উত্পাদনের জন্য দুটি শর্ত পূরণ করা প্রয়োজন যা হ্রাসের রেখার সাথে দামের অবস্থান সম্পর্ক এবং প্রবণতার দিকের ধারাবাহিকতা। এই দ্বৈত নিশ্চিতকরণ প্রক্রিয়াটি সংকেতের নির্ভরযোগ্যতাকে ব্যাপকভাবে উন্নত করে।
ডাবল-ব্রিজ প্রবণতা ট্র্যাকিং কৌশলগুলির বেশ কয়েকটি উল্লেখযোগ্য সুবিধা রয়েছে। প্রথমত, এটির দুর্দান্ত অভিযোজনযোগ্যতা, কৌশলটি বাজারের অস্থিরতার পরিবর্তনের সাথে স্বয়ংক্রিয়ভাবে ব্যাপ্তি প্রস্থকে সামঞ্জস্য করতে পারে, যার অর্থ উচ্চ অস্থিরতার বাজারে কৌশলটি সহনশীলতার ব্যাপ্তি প্রসারিত করে এবং ভুল বিচারকে হ্রাস করে। কম অস্থিরতার বাজারে কৌশলটি অঞ্চলকে আরও শক্ত করে এবং সংবেদনশীলতা বাড়ায়। এই অভিযোজনযোগ্য প্রক্রিয়াটি কৌশলটিকে বিভিন্ন বাজারের পরিবেশে স্থিতিশীল পারফরম্যান্স বজায় রাখতে সক্ষম করে।
দ্বিতীয়ত, দ্বৈত নিশ্চিতকরণ ব্যবস্থার সুবিধাগুলি। কৌশলটি দ্রুত এবং ধীর গতির দুটি সেট ফিল্টার সিস্টেমের সংমিশ্রণ এবং দামের অবস্থান এবং প্রবণতার ধারাবাহিকতার দ্বৈত যাচাইকরণের মাধ্যমে মিথ্যা সংকেতের সম্ভাবনাকে উল্লেখযোগ্যভাবে হ্রাস করে। এই নকশাটি বিশেষত আর্থিক বাজারে প্রচলিত শব্দযুক্ত লেনদেন এবং স্বল্পমেয়াদী ওঠানামার ব্যাঘাতের জন্য উপযুক্ত।
কৌশলটির আরেকটি গুরুত্বপূর্ণ সুবিধা হল এর দুর্দান্ত ট্রেন্ড ট্র্যাকিং ক্ষমতা। ক্রমাগত গণনা পদ্ধতির মাধ্যমে কৌশলটি শক্তিশালী প্রবণতা সনাক্ত করতে এবং ধারাবাহিকভাবে অনুসরণ করতে সক্ষম হয় এবং লাভজনক অবস্থান থেকে তাড়াতাড়ি প্রস্থান এড়াতে সক্ষম হয়। একই সাথে, যখন প্রবণতা বিপরীত হয়, তখন কৌশলটি সময়মতো সনাক্ত করতে এবং অবস্থানের দিকনির্দেশের সমন্বয় করতে সক্ষম হয়।
ঝুঁকি ব্যবস্থাপনার দৃষ্টিকোণ থেকে, কৌশলটি একটি গতিশীল স্টপ লস মেশিনের সাথে অন্তর্নির্মিত। ওপার-ডাউন ট্র্যাক্টের নকশাটি প্রাকৃতিকভাবে ঝুঁকি নিয়ন্ত্রণের বৈশিষ্ট্য সরবরাহ করে, যখন দামটি ট্র্যাক্টের বাইরে চলে যায় তখন ট্রেডিং সিগন্যাল ট্রিগার করে এবং যখন দামটি ট্র্যাক্টের অভ্যন্তরে ফিরে আসে তখন স্টপ লস বা প্লেইন ট্রিগার করতে পারে। এই নকশাটি নিশ্চিত করে যে প্রতিটি লেনদেনের একটি স্পষ্ট ঝুঁকি সীমানা রয়েছে।
কৌশলটি ভাল প্যারামিটার স্থায়িত্বও রয়েছে। যদিও একাধিক সমন্বয়যোগ্য প্যারামিটার রয়েছে, কৌশলটি প্যারামিটারগুলির তুলনামূলকভাবে কম সংবেদনশীল, যার অর্থ কৌশলটি বিভিন্ন বাজারের পরিস্থিতিতে তুলনামূলকভাবে স্থিতিশীল পারফরম্যান্স বজায় রাখতে পারে, অত্যধিক অপ্টিমাইজেশনের ঝুঁকি হ্রাস করে।
যদিও ডাবল-ব্রিজ প্রবণতা ট্র্যাকিং কৌশলগুলির অনেক সুবিধা রয়েছে, তবুও কিছু ঝুঁকি রয়েছে যা সম্পর্কে মনোযোগ দেওয়া দরকার। প্রধান ঝুঁকি হল বাজারের অস্থিরতার মধ্যে পারফরম্যান্সের সমস্যা। যখন বাজারটি পাশের দিকে সংকলন অবস্থায় থাকে, তখন দামগুলি ঘন ঘন ঘূর্ণিঝড়ের লাইনটি অতিক্রম করতে পারে, যার ফলে কৌশলটি অত্যধিক ট্রেডিং সংকেত তৈরি করে। যদিও দ্বৈত নিশ্চিতকরণ ব্যবস্থাটি এই পরিস্থিতিটি হ্রাস করতে পারে, তবে তীব্রভাবে অস্থির বাজারে কৌশলটি এখনও ধারাবাহিক ক্ষুদ্র ক্ষয়ক্ষতির ঝুঁকিতে থাকতে পারে।
সমাধানের মধ্যে রয়েছে অতিরিক্ত বাজার পরিবেশ সনাক্তকরণ মডিউল যুক্ত করা, যেমন বর্তমান বাজারটি কৌশলটি চালানোর জন্য উপযুক্ত কিনা তা বিচার করার জন্য একটি অস্থিরতা সূচক বা প্রবণতা শক্তি সূচক প্রবর্তন করা। যখন একটি শক্তিশালী ঝড়ের পরিবেশ সনাক্ত করা হয়, তখন অস্থায়ীভাবে ট্রেডিং বন্ধ করা বা প্যারামিটার সেটিংগুলি সামঞ্জস্য করা যেতে পারে।
আরেকটি গুরুত্বপূর্ণ ঝুঁকি হল পিছিয়ে পড়া। যেহেতু কৌশলটি ডাবল ইএমএ মসৃণকরণ এবং ডাবল নিশ্চিতকরণ প্রক্রিয়া ব্যবহার করে, প্রবণতা রূপান্তরের প্রথম দিকে কৌশলটি সময়মত প্রতিক্রিয়া জানাতে পারে না, যার ফলে সেরা প্রবেশের সময়টি মিস করা বা অপ্রয়োজনীয় প্রত্যাহারের সম্মুখীন হতে পারে। এই পিছিয়ে পড়া দ্রুত পরিবর্তিত বাজারে বিশেষ করে স্পষ্ট।
পিছিয়ে পড়া সমস্যাগুলি প্রশমিত করার জন্য, নেতৃস্থানীয় সূচক বা মূল্য আচরণ বিশ্লেষণ মডিউলগুলি যেমন মূল্যের ত্বরণ পরিবর্তন বা সমালোচনামূলক সমর্থনকারী প্রতিরোধের স্থানগুলির বিচ্ছেদের উপর নজরদারি করার জন্য বিবেচনা করা যেতে পারে। এছাড়াও, কৌশলগত স্থিতিশীলতা বজায় রাখার পূর্বশর্তে প্যারামিটার সমন্বয়কে অনুকূলিতকরণের মাধ্যমে যথাযথ প্রতিক্রিয়া গতি বাড়ানো যেতে পারে।
প্যারামিটার সংবেদনশীলতা যদিও অপেক্ষাকৃত কম, তবুও ওভার অপ্টিমাইজেশনের ঝুঁকি রয়েছে। যদি ঐতিহাসিক তথ্যের উপর প্যারামিটারগুলিকে ওভার-অনুমোদন করা হয়, তবে কৌশলটি প্রকৃত লেনদেনের ক্ষেত্রে খারাপভাবে কাজ করতে পারে। প্যারামিটারগুলির স্থায়িত্ব যাচাই করার জন্য ফরোয়ার্ড অ্যানালিটিক্স এবং এক্সট্রা-স্যাম্পল টেস্টিং ব্যবহার করার পরামর্শ দেওয়া হয়।
অতিরিক্তভাবে, চরম বাজার পরিস্থিতিতে কৌশলটির কার্যকারিতা সম্পর্কে বিশেষ মনোযোগ দেওয়া দরকার। একটি কালো ঘুড়ি ঘটনা বা তরলতা সংকটের সময়, স্বাভাবিক মূল্যের আচরণটি ব্যর্থ হতে পারে, যার ফলে কৌশলটি অপ্রত্যাশিতভাবে বড় পরিমাণে ক্ষতিগ্রস্থ হতে পারে।
ডাবল-ব্রিজড প্রবণতা ট্র্যাকিং কৌশলগুলি আরও অপ্টিমাইজ করার জন্য বেশ কয়েকটি দিক রয়েছে। প্রথমত, বাজারের পরিবেশের অভিযোজনযোগ্যতা বাড়ানো। এটির উপর ভিত্তি করে অস্থিরতার শ্রেণিবদ্ধকরণ বা ভিআইএক্স-এর মতো সূচকগুলির উপর ভিত্তি করে বাজার সংবেদন বিশ্লেষণের মতো অস্থিরতার অবস্থা শ্রেণিবদ্ধকরণ সিস্টেম চালু করা যেতে পারে। বিভিন্ন বাজারের পরিবেশের উপর ভিত্তি করে কৌশলগত প্যারামিটারগুলি স্বয়ংক্রিয়ভাবে সামঞ্জস্য করুন, উচ্চ অস্থিরতার পরিবেশে mult1 এবং mult2 এর মান বাড়ান এবং নিম্ন অস্থিরতার পরিবেশে এই মানগুলি হ্রাস করুন, যার ফলে কৌশলটির পরিবেশের অভিযোজনযোগ্যতা বাড়ায়।
দ্বিতীয়ত, সিগন্যালের গুণগত মান আরও বাড়ানো যায়। পরিমাণ-মূল্য সহযোগিতার বিশ্লেষণ প্রবর্তন করা বিবেচনা করা যেতে পারে, যখন দাম ফ্রিকোয়েন্সি লাইনটি ভেঙে যায়, যদি এটির সাথে লেনদেনের পরিমাণ বাড়ানো হয় তবে সংকেতের বিশ্বাসযোগ্যতা বাড়ানো যায়। এছাড়াও, এটি মূল প্রযুক্তির বিট বিশ্লেষণের সাথে মিলিত হতে পারে, যখন বিটটি গুরুত্বপূর্ণ সমর্থনকারী প্রতিরোধের পয়েন্টের কাছাকাছি ঘটে তখন উচ্চতর ওজন দেওয়া হয়।
গতিশীল প্যারামিটার সমন্বয় আরেকটি গুরুত্বপূর্ণ অপ্টিমাইজেশনের দিক। বর্তমান কৌশলগুলি স্থির চক্রের প্যারামিটার ব্যবহার করে, তবে বাজারের চক্রীয় বৈশিষ্ট্যটি গতিশীল পরিবর্তনশীল। একটি অভিযোজিত প্যারামিটার প্রক্রিয়া চালু করা যেতে পারে, বাজারের অস্থিরতা এবং প্রবণতা ধারাবাহিক গতিশীলতার উপর নির্ভর করে per1 এবং per2 এর মানগুলি সামঞ্জস্য করে। যেমন ট্রেন্ডিং বাজারে শব্দ কমাতে চক্রের প্যারামিটার দীর্ঘায়িত করা, ঝাঁকুনির বাজারে প্রতিক্রিয়া গতি বাড়ানোর জন্য চক্রের প্যারামিটার সংক্ষিপ্ত করা।
ঝুঁকি ব্যবস্থাপনার মডিউলটির উন্নতিও একটি গুরুত্বপূর্ণ অপ্টিমাইজেশনের দিক। একক লেনদেনের ঝুঁকি সীমাবদ্ধতা, ধারাবাহিক ক্ষতির সুরক্ষা, সর্বাধিক প্রত্যাহার নিয়ন্ত্রণ ইত্যাদি সহ একাধিক স্তরের ঝুঁকি নিয়ন্ত্রণ ব্যবস্থা চালু করা যেতে পারে। এছাড়াও, একটি পজিশন ম্যানেজমেন্ট সিস্টেম চালু করার বিষয়টি বিবেচনা করা যেতে পারে, যা সংকেতের শক্তি এবং বাজারের পরিবেশের গতিশীলতার উপর নির্ভর করে পজিশনের আকারকে সামঞ্জস্য করে।
মেশিন লার্নিং প্রযুক্তির প্রয়োগও একটি সম্ভাবনাময় অপ্টিমাইজেশান দিক। প্যারামিটার নির্বাচন, সংকেত ফিল্টারিং এবং ঝুঁকি নিয়ন্ত্রণের জন্য মেশিন লার্নিং অ্যালগরিদম ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, জিনগত অ্যালগরিদম ব্যবহার করে প্যারামিটার সমন্বয়কে অনুকূলিতকরণ, সমর্থন ভেক্টর মেশিন ব্যবহার করে সংকেত শ্রেণিবদ্ধকরণ, বা শক্তিশালী শেখার ব্যবহার করে গতিশীল পজিশন ম্যানেজমেন্ট।
ডাবল-ব্রেক ফায়ার প্রবণতা ট্র্যাকিং কৌশল একটি সুনির্দিষ্টভাবে পরিকল্পিত, যুক্তিসঙ্গতভাবে সুস্পষ্ট প্রবণতা ট্র্যাকিং সিস্টেম। এর মূল সুবিধা হ’ল ডাবল-ব্রেক ফায়ার এবং স্বতঃস্ফূর্ত ব্রেক-আপের মাধ্যমে প্রবণতা পরিবর্তনের সংবেদনশীলতা বজায় রেখে কার্যকরভাবে বাজার শব্দকে ফিল্টার করা। কৌশলটির দ্বৈত নিশ্চিতকরণ ব্যবস্থা এবং ক্রমাগত গণনা লজিক উল্লেখযোগ্যভাবে সংকেতের গুণমানকে উন্নত করে, যা এটিকে প্রবণতা বাজারে ভাল পারফরম্যান্স করতে সক্ষম করে।
যাইহোক, কৌশলটির কিছু সীমাবদ্ধতাও রয়েছে, প্রধানত উদ্বেগজনক বাজারে অভিযোজনযোগ্যতা এবং প্রবণতা পরিবর্তনের সময় পশ্চাদপসরণের সমস্যা। এই সমস্যাগুলি সমাধানযোগ্য নয়, বাজার পরিবেশের সনাক্তকরণ, গতিশীল প্যারামিটার সমন্বয় এবং একাধিক স্তরের ঝুঁকি নিয়ন্ত্রণের মতো অপ্টিমাইজেশান ব্যবস্থা চালু করে কৌশলটির সামগ্রিক কার্যকারিতা আরও বাড়ানো যেতে পারে।
এই কৌশলটি বিশেষভাবে প্রযুক্তিগত বিশ্লেষণের ভিত্তি এবং ঝুঁকি ব্যবস্থাপনার অভিজ্ঞতার সাথে ব্যবসায়ীদের ব্যবহারের জন্য উপযুক্ত। অন্যান্য প্রযুক্তিগত সূচক এবং মৌলিক বিশ্লেষণের সাথে একত্রিত হয়ে আরও উন্নত ব্যবসায়ের সিস্টেম তৈরি করার পরামর্শ দেওয়া হচ্ছে। একই সাথে, বিভিন্ন বাজারের পরিবেশে কৌশলটির পারফরম্যান্সের বৈশিষ্ট্যগুলি গভীরভাবে বোঝার জন্য পুরোপুরি historicalতিহাসিক ব্যাকআপ এবং সিমুলেশন ট্রেডিং করা উচিত এবং সংশ্লিষ্ট ঝুঁকি নিয়ন্ত্রণ ব্যবস্থা তৈরি করা উচিত।
এই কৌশলটি কোয়ান্টাম ট্রেডারদের জন্য একটি দুর্দান্ত প্রাথমিক কাঠামো সরবরাহ করে, যার উপর ভিত্তি করে আরও উদ্ভাবন এবং অপ্টিমাইজেশন করা যায়। ক্রমাগত গবেষণা এবং উন্নতির মাধ্যমে, এই কৌশলটি একটি স্থিতিশীল এবং নির্ভরযোগ্য কোয়ান্টাম ট্রেডিং সরঞ্জাম হওয়ার সম্ভাবনা রয়েছে।
/*backtest
start: 2024-05-22 00:00:00
end: 2025-05-20 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
*/
//@version=5
strategy("Twin Range Filter Strategy", overlay=true, margin_long=100, margin_short=100, commission_type=strategy.commission.cash_per_contract, commission_value=1.75, use_bar_magnifier=true, process_orders_on_close=true, fill_orders_on_standard_ohlc=true)
// Inputs
source = input(close, "Source")
// Smooth Average Range
per1 = input.int(27, "Fast period", minval=1)
mult1 = input.float(1.5, "Fast range", minval=0.1)
per2 = input.int(55, "Slow period", minval=1)
mult2 = input.float(1.0, "Slow range", minval=0.1)
trail = input.bool(false, "Trail price")
smoothrng(x, t, m) =>
wper = t * 2 - 1
avrng = ta.ema(math.abs(x - x[1]), t)
ta.ema(avrng, wper) * m
smrng1 = smoothrng(source, per1, mult1)
smrng2 = smoothrng(source, per2, mult2)
smrng = (smrng1 + smrng2) / 2
// Range Filter
rngfilt(x, r) =>
rngfilt = x
rngfilt := x > nz(rngfilt[1]) ? x - r < nz(rngfilt[1]) ? nz(rngfilt[1]) : x - r :
x + r > nz(rngfilt[1]) ? nz(rngfilt[1]) : x + r
rngfilt
filt = rngfilt(source, smrng)
upward = 0.0
upward := filt > filt[1] ? nz(upward[1]) + 1 : filt < filt[1] ? 0 : nz(upward[1])
downward = 0.0
downward := filt < filt[1] ? nz(downward[1]) + 1 : filt > filt[1] ? 0 : nz(downward[1])
hband = filt + smrng
lband = filt - smrng
longCond = false
shortCond = false
longCond := source > filt and (source > source[1] or source < source[1]) and upward > 0
shortCond := source < filt and (source < source[1] or source > source[1]) and downward > 0
var int CondIni = 0
CondIni := trail ? longCond ? -1 : shortCond ? 1 : CondIni : longCond ? 1 : shortCond ? -1 : CondIni
long = longCond and CondIni[1] == -1
short = shortCond and CondIni[1] == 1
// Strategy Execution
strategy.entry("Long", strategy.long, when=long)
strategy.entry("Short", strategy.short, when=short)
strategy.close("Long", when=not long)
strategy.close("Short", when=not short)
// Plotting
plot(filt, "Filter", color=color.blue)
plot(hband, "Upper Band", color=color.red)
plot(lband, "Lower Band", color=color.green)
// Alerts
alertcondition(long, "Long", "Long position triggered")
alertcondition(short, "Short", "Short position triggered")