RSI প্যারাবোলিক ট্রেন্ড রিভার্সাল মোমেন্টাম কৌশল, মুভিং এভারেজ ফিল্টারিং এবং ঝুঁকি ব্যবস্থাপনা সিস্টেমের সাথে মিলিত

RSI PSAR EMA SMA SL/TP 风险回报比 趋势跟踪 动量反转
সৃষ্টির তারিখ: 2025-05-13 11:43:08 অবশেষে সংশোধন করুন: 2025-05-13 11:43:08
অনুলিপি: 3 ক্লিকের সংখ্যা: 326
2
ফোকাস
319
অনুসারী

RSI প্যারাবোলিক ট্রেন্ড রিভার্সাল মোমেন্টাম কৌশল, মুভিং এভারেজ ফিল্টারিং এবং ঝুঁকি ব্যবস্থাপনা সিস্টেমের সাথে মিলিত RSI প্যারাবোলিক ট্রেন্ড রিভার্সাল মোমেন্টাম কৌশল, মুভিং এভারেজ ফিল্টারিং এবং ঝুঁকি ব্যবস্থাপনা সিস্টেমের সাথে মিলিত

কৌশল ওভারভিউ

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

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

কৌশল নীতি

এই কৌশলটির মূল যৌক্তিকতাকে তিনটি মূল উপাদান হিসেবে ভাগ করা যায়ঃ

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

  2. সমান্তরাল দিকনির্দেশ ফিল্টারকৌশলঃ চলমান গড় ব্যবহার করে ((নির্বাচনযোগ্য সূচকীয় চলমান গড় ইএমএ বা সহজ চলমান গড় এসএমএ) প্রবণতা দিকের একটি ফিল্টার হিসাবে। এটি নিশ্চিত করে যে ট্রেডিং কেবলমাত্র প্রবণতা দিকের দিকে সম্পাদিত হয়ঃ যখন দাম গড়ের উপরে থাকে তখনই অতিরিক্ত করা যায় এবং যখন দাম গড়ের নীচে থাকে তখনই খালি করা যায়। এই প্রক্রিয়াটি কোডে পাস করা হয়ma_filterভেরিয়েবল বাস্তবায়ন, এটি ব্যবহারকারীর পছন্দ অনুসারে এসএমএ বা ইএমএ হতে পারে।

  3. স্বয়ংক্রিয়ভাবে গণনা করা টিপি/এসএল স্তর: প্রতিটি লেনদেনের মধ্যে রয়েছে একটি কনফিগারেশন ভিত্তিক ঝুঁকি রিটার্নের তুলনা স্বয়ংক্রিয়ভাবে গণনা করা স্টপ (টিপি) এবং স্টপ লস (এসএল) লাইন। কোডের মাধ্যমেrisk_rewardপ্যারামিটার এবংbuffer_pipsস্টপ লস অবস্থান গণনা এবং ব্যবহার করার জন্য প্যারামিটারline.newফাংশনটি এই অনুভূমিক লাইনগুলিকে চার্টগুলিতে আঁকে এবং ট্রেডারদের জন্য একটি স্বজ্ঞাত ঝুঁকি ব্যবস্থাপনার ভিজ্যুয়াল রেফারেন্স সরবরাহ করে।

কোডিংয়ের মাধ্যমে প্রবেশের শর্তগুলো খুব সঠিকভাবে বাস্তবায়ন করা হয়েছেঃ

  • আরো শর্তাবলীlongCondition): যখন RSI এর PARALY LINE SAR উপরের থেকে নীচের দিকে ঘুরবে ([[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]) এবং বর্তমান RSI মানটি সুপার সেল লাইন ([[[[[[[[]]]]]]) এর নিচে থাকবে ([[[[[[[[[[]]]]]]) এবং দামটি চলমান গড়ের উপরে থাকবে ([[[[[[]]]]]]) ।
  • শূন্য অবস্থা ((shortCondition): যখন RSI এর PARALY LINE SAR নীচে থেকে উপরে ঘুরবে (বিপদ সংকেত), এবং বর্তমান RSI মানটি সুপার-বই লাইন (70) এর উপরে থাকবে, এবং দামটি চলমান গড়ের নীচে থাকবে।

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

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

  1. গতি এবং প্রবণতার দ্বৈত স্বীকৃতি: এই কৌশলটি গতিশীলতার সূচক ((আরএসআইয়ের প্যারালাইন স্যার) এবং প্রবণতা সূচক ((চলমান গড়) এর সাথে মিলিত হয়, ট্রেডিং সিগন্যালের একটি দ্বৈত নিশ্চিতকরণ ব্যবস্থা সরবরাহ করে, যা মিথ্যা সংকেতের ঝুঁকিকে উল্লেখযোগ্যভাবে হ্রাস করে। এই সংমিশ্রণটি ব্যবসায়ীদের গতিশীলতার বিপরীত হওয়ার সঠিক সময়ে ট্রেডিং করার অনুমতি দেয়, তবে কেবলমাত্র প্রবণতার দিকনির্দেশের দিকে।

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

  3. অভিযোজনযোগ্য: প্যারামিটারগুলি সামঞ্জস্য করে, কৌশলটি বিভিন্ন বাজার পরিস্থিতি এবং ট্রেডিং স্টাইলের সাথে খাপ খাইয়ে নিতে পারে। ব্যবহারকারীরা তাদের ঝুঁকি বহনযোগ্যতার ভিত্তিতে রিস্ক রিটার্ন রেট, স্টপ ডোজ বাফার জোন, আরএসআই দৈর্ঘ্য ইত্যাদি প্যারামিটারগুলি সামঞ্জস্য করতে পারে।

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

  5. লজিক ক্লিয়ার: কৌশলটির যৌক্তিক কাঠামো পরিষ্কার, সহজে বোঝা যায় এবং কার্যকর করা যায়, যা সকল স্তরের ব্যবসায়ীদের ব্যবহারের জন্য উপযুক্ত।

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

কৌশলগত ঝুঁকি

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

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

  3. ভুয়া আক্রমণের ঝুঁকি: ব্রেক মার্কেট বা উচ্চ অস্থিরতার পরিবেশে, আরএসআইয়ের প্যারালাইন এসএআর একটি বিভ্রান্তিকর বিপরীত সংকেত তৈরি করতে পারে। সমাধানের উপায়গুলির মধ্যে অতিরিক্ত নিশ্চিতকরণ সূচক যুক্ত করা বা প্রবেশের শর্তগুলির কঠোরতা বাড়ানো অন্তর্ভুক্ত থাকতে পারে।

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

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

  6. ইতিহাসের ধারাবাহিকতাসকল প্রযুক্তিগত বিশ্লেষণ কৌশলগুলির মতো, এই কৌশলটিও অনুমান করে যে ঐতিহাসিক মূল্যের মডেলগুলি ভবিষ্যতে কার্যকর থাকবে। বাজারের অবস্থার মৌলিক পরিবর্তনগুলি কৌশলটির কার্যকারিতা প্রভাবিত করতে পারে।

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

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

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

higher_tf_trend = request.security(syminfo.ticker, "240", close > ma_filter)
longCondition := longCondition and higher_tf_trend
shortCondition := shortCondition and not higher_tf_trend
  1. লেনদেনের পরিমাণ বিশ্লেষণ একীকরণট্রেডিং ভলিউম নিশ্চিতকরণঃ ট্রেডিং ভলিউম নিশ্চিতকরণ কৌশলটি সংকেতের নির্ভরযোগ্যতা বাড়িয়ে তুলতে পারে। ট্রেডিং ভলিউম সাধারণত প্রবণতা বিপরীত সময়ে বৃদ্ধি পায়, যা অতিরিক্ত ফিল্টারিং শর্ত হিসাবে কাজ করতে পারে।

  2. স্টপ লস পজিশনে অভিযোজিত: বর্তমান কৌশলটি একটি নির্দিষ্ট পয়েন্টকে স্টপ বাফার হিসাবে ব্যবহার করে। এটিআর (অর্থাত্ প্রকৃত ওঠানামা) ভিত্তিক অভিযোজিত স্টপ অর্জনের ফলে বর্তমান বাজারের অস্থিরতা আরও ভালভাবে প্রতিফলিত হতে পারে এবং ঝুঁকি পরিচালনার নির্ভুলতা বাড়ায়।

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

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

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

সারসংক্ষেপ

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

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

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

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

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

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PakunFX


//@version=6
strategy("Parabolic RSI Strategy + MA Filter + TP/SL 【PakunFX】", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=1)

// === Inputs ===
rsi_len = input.int(14, "RSI Length")
upper_ = input.int(70, "RSI Overbought")
lower_ = input.int(30, "RSI Oversold")
sar_start = input.float(0.02, "SAR Start", step=0.01)
sar_inc = input.float(0.02, "SAR Increment", step=0.01)
sar_max = input.float(0.2, "SAR Maximum", step=0.01)
risk_reward = input.float(2.0, "Risk Reward Ratio", step=0.1)
buffer_pips = input.float(100.0, "Stop Buffer (pips)", step=0.1)

ma_length = input.int(11, "MA Length")
use_sma = input.bool(false, "Use SMA (if false, uses EMA)")

pip_size = syminfo.mintick
pip_buffer = pip_size * buffer_pips

// === Indicators ===
rsi = ta.rsi(close, rsi_len)
ma_filter = use_sma ? ta.sma(close, ma_length) : ta.ema(close, ma_length)

// === Custom Parabolic SAR on RSI ===
pine_sar(src, start, inc, max) =>
    src_high = src + 1
    src_low  = src - 1
    var float result = na
    var float maxMin = na
    var float acceleration = na
    var bool isBelow = false
    bool isFirstTrendBar = false

    if bar_index <= rsi_len + 2
        if src > src[1]
            isBelow := true
            maxMin := src_high
            result := src_low[1]
        else
            isBelow := false
            maxMin := src_low
            result := src_high[1]
        isFirstTrendBar := true
        acceleration := start

    result := result + acceleration * (maxMin - result)

    if isBelow
        if result > src_low
            isFirstTrendBar := true
            isBelow := false
            result := math.max(src_high, maxMin)
            maxMin := src_low
            acceleration := start
    else
        if result < src_high
            isFirstTrendBar := true
            isBelow := true
            result := math.min(src_low, maxMin)
            maxMin := src_high
            acceleration := start

    if not isFirstTrendBar
        if isBelow and src_high > maxMin
            maxMin := src_high
            acceleration := math.min(acceleration + inc, max)
        if not isBelow and src_low < maxMin
            maxMin := src_low
            acceleration := math.min(acceleration + inc, max)

    if isBelow
        result := math.min(result, src_low[1])
        if bar_index > 1
            result := math.min(result, src_low[2])
    else
        result := math.max(result, src_high[1])
        if bar_index > 1
            result := math.max(result, src_high[2])

    [result, isBelow]

[sar_rsi, isBelow] = pine_sar(rsi, sar_start, sar_inc, sar_max)

// === Entry Conditions ===
longCondition  = isBelow != isBelow[1] and isBelow and barstate.isconfirmed and sar_rsi <= lower_ and close > ma_filter
shortCondition = isBelow != isBelow[1] and not isBelow and barstate.isconfirmed and sar_rsi >= upper_ and close < ma_filter

// === Entry Execution + Persistent TP/SL Lines ===
if (longCondition)
    stopLoss = low - pip_buffer
    takeProfit = open + (open - stopLoss) * risk_reward
    strategy.close("Short")
    strategy.entry("Long", strategy.long)
    strategy.exit("TP/SL Long", "Long", stop=stopLoss, limit=takeProfit)


if (shortCondition)
    stopLoss = high + pip_buffer
    takeProfit = open - (stopLoss - open) * risk_reward
    strategy.close("Long")
    strategy.entry("Short", strategy.short)
    strategy.exit("TP/SL Short", "Short", stop=stopLoss, limit=takeProfit)

// === Plotting ===

plot(ma_filter, title="MA Filter", color=color.orange)