
মাল্টি-ফিল্টারিং আরএসআই গতিশীলতা নিশ্চিতকরণ ট্রেডিং কৌশল হল একটি পদ্ধতিগত ট্রেডিং পদ্ধতি যা ক্রিপ্টোকারেন্সি বাজারের জন্য বিশেষভাবে ডিজাইন করা হয়েছে। এই কৌশলটি আরএসআই গতিশীল সংকেত, লেনদেনের পরিমাণ নিশ্চিতকরণ এবং সুনির্দিষ্ট কে-লাইন মোড সনাক্তকরণের সমন্বয়ে উচ্চ-সম্ভাব্যতা প্রবেশের পয়েন্টগুলি সনাক্ত করে এবং দুর্বল সংকেতগুলিকে ফিল্টার করে। কৌশলটি একাধিক স্তরের ফিল্টারিং সিস্টেম বাস্তবায়ন করে, যাতে একাধিক শর্তাদি একসাথে পূরণ করা প্রয়োজন যাতে ট্রেডে প্রবেশ করা যায়, আরএসআই গতিশীলতা রূপান্তর, উল্লেখযোগ্য লেনদেন এবং শক্তিশালী কে-লাইন মোডের জন্য অনুরোধ করে। সিস্টেমটি কেবলমাত্র সবচেয়ে নির্ভরযোগ্য লেনদেনের সেটিংগুলি ধরার উদ্দেশ্যে।
এই কৌশলটির কেন্দ্রবিন্দু হল এর একাধিক নিশ্চিতকরণ ব্যবস্থার শক্তিশালী সমন্বয়। RSI সম্ভাব্য গতিশীল রূপান্তরকে চিহ্নিত করে কিন্তু অস্থির বাজারে মিথ্যা সংকেত তৈরি করতে পারে, ক্রয়-বিক্রয় নিশ্চিতকরণ নিশ্চিত করে যে শুধুমাত্র যখন পর্যাপ্ত বাজার আগ্রহ থাকে তখনই লেনদেন করা হয়, K-লাইন ফর্ম্যাটটি শক্তিশালী মূল্যের ক্রিয়াকলাপের জন্য অনুরোধ করে দুর্বল বিপর্যয়কে ফিল্টার করার জন্য অনুরোধ করে। এই তিনটি ফিল্টার একত্রিতভাবে ব্যবহার করা হলে, শক্তিশালী গতিশীল রূপান্তরকে ক্যাপচার করার সময় মিথ্যা সংকেত উল্লেখযোগ্যভাবে হ্রাস করা হয়। কৌশলটিতে একটি অন্তর্নির্মিত ঝুঁকি ব্যবস্থাপনা বৈশিষ্ট্যও রয়েছে যা এটিআর ওঠানামা বা নির্দিষ্ট শতাংশ ঝুঁকির উপর ভিত্তি করে স্বয়ংক্রিয় স্টপ লস এবং লাভের সমাপ্তির অবস্থান নির্ধারণ করে।
এই কৌশলটির মূল যুক্তিটি তিনটি প্রধান প্রযুক্তিগত সূচকের সমন্বয়মূলক কার্যকারিতার উপর ভিত্তি করে তৈরি করা হয়েছে। প্রথমটি হল আরএসআই গতিশীলতা সনাক্তকরণ প্রক্রিয়া, কৌশলটি 14 চক্রের আরএসআই সূচক ব্যবহার করে, 70 কে ওভারবয় স্তর হিসাবে এবং 30 কে ওভারবয় স্তর হিসাবে সেট করে। মাল্টি-হেড প্রবেশের জন্য, সিস্টেমটি আরএসআইকে 30 এর নীচে থেকে 30 এর উপরে অতিক্রম করে সনাক্ত করে, যা ওভারবয় থেকে বিউটি মোডের দিকে পরিবর্তনের ইঙ্গিত করে। খালি হেড প্রবেশের জন্য, সিস্টেমটি আরএসআইকে 70 এর উপরে থেকে 70 এর নীচে অতিক্রম করে, যা ওভারবয় থেকে বিউটি মোডের দিকে পরিবর্তনের ইঙ্গিত করে।
তৃতীয় ফিল্টারটি হল K-লাইন মডেল বিশ্লেষণ, যা একটি শক্তিশালী বিয়ার বা বিয়ার K-লাইন প্রয়োজন, যার মধ্যে সত্তার অংশটি অবশ্যই মোট K-লাইন পরিসরের কমপক্ষে ৫০% দখল করতে হবে, যা নিশ্চিত করে যে মূল্যের ক্রিয়াকলাপের সিদ্ধান্তমূলক বৈশিষ্ট্য রয়েছে এবং অনিশ্চিত বাজার অবস্থার অধীনে দুর্বল সংকেত এড়ানো যায়।
কৌশলটি একটি বিকল্প সুপারট্রেন্ড ফিল্টারও সরবরাহ করে, যখন এটি চালু হয়, মাল্টি-হেড এন্ট্রিগুলি অবশ্যই সুপারট্রেন্ডের উত্থানের দিকের সাথে সামঞ্জস্যপূর্ণ হতে হবে এবং খালি হেড এন্ট্রিগুলি অবশ্যই নিম্নমুখী প্রবণতার সাথে সামঞ্জস্যপূর্ণ হতে হবে। গতিশীল এটিআর স্টপ সিস্টেমটি বর্তমান বাজারের ওঠানামার উপর নির্ভর করে সুরক্ষা স্তরকে সামঞ্জস্য করে, এটিআর এর 3.5x গুণিতক ব্যবহার করে স্টপ এবং লাভের লক্ষ্যমাত্রা গণনা করে, বা একটি নির্দিষ্ট 0.5% স্টপ বিকল্প সরবরাহ করে, রিস্ক-রিটার্ন অনুপাত 1.5: 1 হিসাবে সেট করা হয়েছে।
মাল্টিপল ফিল্টারিং আরএসআই গতিশীলতা নিশ্চিতকরণ ট্রেডিং কৌশলটির বেশ কয়েকটি উল্লেখযোগ্য সুবিধা রয়েছে। প্রথমত, এর শক্তিশালী সংকেত ফিল্টারিং ক্ষমতা, যা একই সাথে আরএসআই গতিশীলতা রূপান্তর, ট্রান্সফর্মেশন নিশ্চিতকরণ এবং শক্তিশালী কে-লাইন ফর্ম্যাটের তিনটি শর্ত পূরণ করে, কৌশলটি ভুয়া সংকেতের সম্ভাবনাকে ব্যাপকভাবে হ্রাস করে। এই মাল্টিপল নিশ্চিতকরণ প্রক্রিয়াটি নিশ্চিত করে যে যখন বাজারটি সত্যিকারের গতিশীলতা রূপান্তরের লক্ষণ দেখায় তখনই লেনদেন সম্পাদন করা হয়, যার ফলে লেনদেনের সাফল্যের হার বৃদ্ধি পায়।
দ্বিতীয়ত, কৌশলটির দুর্দান্ত অভিযোজনযোগ্যতা এবং নমনীয়তা রয়েছে। ডায়নামিক এটিআর স্টপ সিস্টেমটি বাজারের ওঠানামা অনুযায়ী সুরক্ষা স্তরটি স্বয়ংক্রিয়ভাবে সামঞ্জস্য করতে সক্ষম, উচ্চ ওঠানামার সময় আরও স্বাচ্ছন্দ্যপূর্ণ স্টপ সরবরাহ করে এবং নিম্ন ওঠানামার সময় সুরক্ষা জোরদার করে। এই স্বয়ংক্রিয়তা বৈশিষ্ট্যটি কৌশলটিকে বিভিন্ন বাজারের পরিস্থিতিতে কার্যকর থাকতে দেয়।
তৃতীয় গুরুত্বপূর্ণ সুবিধা হল একটি বিস্তৃত ঝুঁকি ব্যবস্থাপনা ব্যবস্থা। কৌশলটি দুটি প্রস্থান পদ্ধতি সরবরাহ করে, এটিআর ভিত্তিক গতিশীল স্টপ লস এবং স্থির শতাংশের স্টপ লস, ব্যবসায়ীরা তাদের ঝুঁকি পছন্দ অনুসারে উপযুক্ত পদ্ধতিটি বেছে নিতে পারেন। 1.5: 1 এর রিস্ক-রিটার্ন অনুপাত সেটিংটি ভাল লাভ-ক্ষতির ভারসাম্যকে নিশ্চিত করে, এমনকি যদি সামান্য কম হারও থাকে। কৌশলটি একাধিক ট্রেডিং কনফিগারেশন সমর্থন করে, যার মধ্যে রয়েছে কেবলমাত্র মাল্টিহেড, কেবলমাত্র খালি মাথা বা দ্বি-মুখী ট্রেডিং।
যদিও এই কৌশলটির একাধিক ফিল্টারিং ব্যবস্থা রয়েছে, তবুও কিছু সম্ভাব্য ঝুঁকি রয়েছে যা সম্পর্কে সতর্ক হওয়া দরকার। প্রথম ঝুঁকিটি হ’ল শক্তিশালী ট্রেন্ডিং মার্কেটে ব্যবসায়ের সুযোগগুলি মিস করা হতে পারে। যেহেতু কৌশলটি আরএসআইয়ের ওভার-বই ওভার-সেল সিগন্যালের উপর নির্ভর করে, তাই আরএসআই দীর্ঘ সময়ের জন্য চরম পর্যায়ে থাকতে পারে, যা একটি শক্তিশালী প্রবণতা বাড়ে বা নেমে যায়, যার ফলে কৌশলটি প্রবেশের সংকেত তৈরি করতে পারে না, যার ফলে গুরুত্বপূর্ণ ট্রেন্ডিং সুযোগগুলি মিস করা হয়। সমাধানটি হ’ল উচ্চতর সময়সীমার প্রবণতা বিশ্লেষণের সাথে মিলিত হওয়া বা নির্দিষ্ট বাজারের অবস্থার সাথে আরএসআই প্যারামিটারগুলিকে সামঞ্জস্য করা।
দ্বিতীয় গুরুত্বপূর্ণ ঝুঁকি হল ঘন ঘন ট্রেডিং ঝড়ের বাজারে। যদিও মাল্টি-ফিল্টারগুলি মিথ্যা সংকেত হ্রাস করে, বাজারগুলি এখনও বেশ কয়েকটি কার্যকর বলে মনে হয় তবে চূড়ান্তভাবে ব্যর্থ হওয়া ব্রেকিং সিগন্যাল তৈরি করতে পারে। এটি ক্রমাগত ক্ষুদ্র ক্ষয়ক্ষতিতে পরিণত হতে পারে। প্রশমন কৌশলগুলির মধ্যে রয়েছে অতিরিক্ত বাজার স্থিতি ফিল্টার যুক্ত করা, যেমন ওঠানামা বা প্রবণতা শক্তির সূচক, নিম্ন প্রবণতার পরিবেশে ট্রেডিং স্থগিত করা।
তৃতীয় ঝুঁকিটি প্যারামিটার অপ্টিমাইজেশনের সাথে জড়িত। কৌশলটিতে বেশ কয়েকটি সামঞ্জস্যপূর্ণ প্যারামিটার রয়েছে, যার মধ্যে রয়েছে আরএসআই দৈর্ঘ্য, এটিআর চক্র, ঝুঁকি-ফেরতের অনুপাত ইত্যাদি। এই প্যারামিটারগুলিকে ঐতিহাসিক তথ্যের সাথে খাপ খাইয়ে নেওয়ার জন্য অতিরিক্ত অপ্টিমাইজ করা ভবিষ্যতে দুর্বল পারফরম্যান্সের কারণ হতে পারে। এটি সুপারিশ করা হয় যে একটি শক্ত প্যারামিটার সেট ব্যবহার করা হয়, নিয়মিত নমুনা পরীক্ষা করা হয় এবং সীমিত ঐতিহাসিক তথ্যের উপর ভিত্তি করে অত্যধিক অপ্টিমাইজেশন এড়ানো হয়।
এই কৌশলটির বেশ কয়েকটি গুরুত্বপূর্ণ অপ্টিমাইজেশনের দিক রয়েছে। প্রথমত, বাজারের অবস্থা সনাক্তকরণের ক্ষমতা বাড়ানো, অতিরিক্ত বাজার শ্রেণিবদ্ধকরণ সূচক যেমন গড় সত্যিকারের পরিধি অনুপাত, ওঠানামা সূচক বা প্রবণতা শক্তির সূচককে আরও ভালভাবে বিভিন্ন বাজার পরিবেশে সনাক্ত করার জন্য সংহত করা যায়। উচ্চ ওঠানামা পরিবেশে, কৌশলটি আরএসআই থ্রেশহোল্ডকে সামঞ্জস্য করতে পারে বা অতিরিক্ত নিশ্চিতকরণ শর্ত যুক্ত করতে পারে; কম ওঠানামা পরিবেশে, সংকেত সংবেদনশীলতা বাড়ানোর জন্য প্যারামিটারগুলিকে কঠোর করা যেতে পারে। এই স্বনির্ধারিত প্যারামিটার সমন্বয়টি বাজারের বিভিন্ন অবস্থার মধ্যে কৌশলটির কার্যকারিতা উল্লেখযোগ্যভাবে উন্নত করবে।
দ্বিতীয় অপ্টিমাইজেশনের দিক হল একাধিক টাইম ফ্রেম বিশ্লেষণ বাস্তবায়ন করা। বর্তমান কৌশলটি মূলত একটি একক টাইম ফ্রেমে কাজ করে, উচ্চতর টাইম ফ্রেমগুলির প্রবণতা নিশ্চিতকরণকে সংহত করে সংকেতের গুণমানকে উল্লেখযোগ্যভাবে উন্নত করা যায়। উদাহরণস্বরূপ, 5 মিনিটের চার্টে কৌশলটি কার্যকর করার সময়, 15 মিনিটের বা 1 ঘন্টা চার্টের প্রবণতা দিকটি সামঞ্জস্য করার জন্য বলা যেতে পারে। এই পদ্ধতিটি বিপরীত প্রবণতা ব্যবসায়ের ফ্রিকোয়েন্সি হ্রাস করবে এবং সামগ্রিক বিজয়ী হার বাড়িয়ে তুলবে।
তৃতীয় গুরুত্বপূর্ণ অপ্টিমাইজেশান হল ডায়নামিক পজিশন ম্যানেজমেন্ট সিস্টেমের বাস্তবায়ন। বর্তমান কৌশলটি একটি নির্দিষ্ট রিস্ক-রিটার্ন অনুপাত ব্যবহার করে, তবে বাজারের অস্থিরতা, সংকেত শক্তি বা ঐতিহাসিক পারফরম্যান্সের গতিশীলতার উপর নির্ভর করে অবস্থানের আকার এবং লক্ষ্যগুলি সামঞ্জস্য করতে পারে। উচ্চ-নিশ্চয়তার সংকেতের সময় পজিশন বাড়ানো এবং অনিশ্চয়তার সময় পজিশন হ্রাস করা, এই গতিশীল সামঞ্জস্যটি মূলধনের কার্যকারিতা সর্বাধিকীকরণ করবে।
চতুর্থ অপ্টিমাইজেশনের দিক হল ইন্টিগ্রেটেড মেশিন লার্নিং কম্পোনেন্ট। ঐতিহাসিক ডেটা প্রশিক্ষণ মডেল ব্যবহার করা যেতে পারে সর্বোত্তম প্রবেশের অবস্থার সমন্বয় সনাক্ত করতে, বা সংকেত সাফল্যের সম্ভাবনা পূর্বাভাস দিতে। এই পদ্ধতিটি স্ট্যাটিক সেটিংসের উপর নির্ভরশীল না হয়ে বর্তমান বাজারের অবস্থার উপর ভিত্তি করে কৌশলগত প্যারামিটারগুলিকে গতিশীলভাবে সামঞ্জস্য করতে পারে।
মাল্টি-ফিল্টার আরএসআই গতিশীলতা নিশ্চিতকরণ ট্রেডিং কৌশলটি একটি পরিপক্ক পরিমাণগত ট্রেডিং পদ্ধতির প্রতিনিধিত্ব করে, যা প্রযুক্তিগত সূচক, ট্র্যাডিশনাল বিশ্লেষণ এবং ঝুঁকি ব্যবস্থাপনার সাথে দক্ষতার সাথে একত্রিত করে একটি শক্তিশালী ট্রেডিং সিস্টেম তৈরি করে। এই কৌশলটির মূল সুবিধাটি হ’ল এর বহু স্তরের ফিল্টারিং প্রক্রিয়া যা কার্যকরভাবে মিথ্যা সংকেত হ্রাস করে এবং সত্যিকারের বাজারের সুযোগের জন্য সংবেদনশীলতা বজায় রাখে। গতিশীল এটিআর স্টপ লস সিস্টেম এবং নমনীয় প্যারামিটার কনফিগারেশন এটিকে বিভিন্ন বাজারের পরিবেশ এবং ট্রেডিং পছন্দগুলির সাথে মানিয়ে নিতে সক্ষম করে।
বিটিসি/ইউএসডিটি ৫ মিনিটের চার্টে এই কৌশলটি ভাল পারফরম্যান্স দেখায়, ৫৮.৪৯% বিজয়ী হার, ১.৪৭২ লাভের ফ্যাক্টর এবং মাত্র ৩.০১% সর্বাধিক প্রত্যাহার তার ঝুঁকি-সংশোধিত লাভের কার্যকারিতা প্রমাণ করে। যাইহোক, ব্যবসায়ীদের অবশ্যই বুঝতে হবে যে যে কোনও কৌশলটির অন্তর্নিহিত ঝুঁকি রয়েছে, বিশেষত দ্রুত পরিবর্তিত ক্রিপ্টোকারেন্সি বাজারে।
এই কৌশলটি সফলভাবে বাস্তবায়নের জন্য ক্রমাগত পর্যবেক্ষণ, নিয়মিত প্যারামিটার মূল্যায়ন এবং বাজারের পরিবর্তিত অবস্থার সাথে অভিযোজনযোগ্যতা প্রয়োজন। প্রস্তাবিত অপ্টিমাইজেশান দিকনির্দেশনা, বিশেষত মাল্টি-টাইম ফ্রেম বিশ্লেষণ এবং গতিশীল প্যারামিটার সমন্বয়, এই কৌশলটির আরও কার্যকারিতা বাড়ানোর বিশাল সম্ভাবনা রয়েছে। শেষ পর্যন্ত, এই কৌশলটি ক্রিপ্টোকারেন্সি ব্যবসায়ের জন্য একটি পদ্ধতিগত পদ্ধতির সন্ধানকারী ব্যবসায়ীদের জন্য একটি শক্ত ভিত্তি সরবরাহ করে, তবে সর্বদা যথাযথ ঝুঁকি ব্যবস্থাপনা এবং ক্রমাগত শেখার সাথে মিলিত হওয়া উচিত।
/*backtest
start: 2024-05-21 00:00:00
end: 2025-05-20 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © nioboi
// Best settings already at default.
// Use at BTCUSDT 5m chart
// strategy properties: start with 100 usdt capital, set order size to be 20 usdt
// for indicator use (buy sell signals only), rightclick on chart and disable "Trades On Chart"
//@version=6
strategy("Volume FIltered RSI Buy/Sell Strategy", overlay=true, process_orders_on_close=true, commission_value=0.055, initial_capital=100, currency=currency.USDT, pyramiding=1)
// =========================================
// Input Groups
// =========================================
string rsi_group = "RSI"
string atr_sl_finder_group = "ATR SL Finder"
string trade_execution_group = "Strategy Execution"
string supertrend_group = "Supertrend Filter"
string range_filter_group = "Range Detector Filter"
// =========================================
// RSI Calculation
// =========================================
rsi_ob = input.int(70, "Overbought Level", group=rsi_group)
rsi_os = input.int(30, "Oversold Level", group=rsi_group)
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group=rsi_group)
rsiSourceInput = input.source(close, "Source", group=rsi_group)
change = ta.change(rsiSourceInput)
up = ta.rma(math.max(change, 0), rsiLengthInput)
down = ta.rma(-math.min(change, 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsi_can_long = rsi[1] < rsi_os and rsi >= rsi_os
rsi_can_short = rsi[1] > rsi_ob and rsi <= rsi_ob
// =========================================
// Candle Body Conditions
// =========================================
isBullCandle = close > open and (math.abs(close - open) > (high - low) * 0.5)
isBearCandle = close < open and (math.abs(close - open) > (high - low) * 0.5)
// =========================================
// Volume Filter
// =========================================
has_volume = volume >= ta.sma(volume, 14)
// Initial can_long and can_short
can_long = rsi_can_long and isBullCandle and has_volume
can_short = rsi_can_short and isBearCandle and has_volume
// =========================================
// Supertrend Filter
// =========================================
useSupertrendFilter = input.bool(false, "Use Supertrend Filter", group=supertrend_group)
st_tf = input.timeframe("", "Supertrend Timeframe", group=supertrend_group)
atrPeriod = input.int(10, "ATR Length", minval=1, group=supertrend_group)
factor = input.float(3.0, "Factor", minval=0.01, step=0.01, group=supertrend_group)
[supertrendVal, directionVal] = request.security(syminfo.tickerid, st_tf, ta.supertrend(factor, atrPeriod))
if useSupertrendFilter
can_long := can_long and directionVal < 0 and close > supertrendVal
can_short := can_short and directionVal > 0 and close < supertrendVal
// =========================================
// ATR SL Finder © Veryfid
// =========================================
atrlength = input.int(title='Length', defval=14, minval=1, group=atr_sl_finder_group)
smoothing = input.string(title='Smoothing', defval='RMA', options=['RMA','SMA','EMA','WMA'], group=atr_sl_finder_group)
m = input(3.5, 'Multiplier', group=atr_sl_finder_group)
src1 = high
src2 = low
ma_function(source, length) =>
if smoothing == 'RMA'
ta.rma(source, length)
else
if smoothing == 'SMA'
ta.sma(source, length)
else
if smoothing == 'EMA'
ta.ema(source, length)
else
ta.wma(source, length)
x = ma_function(ta.tr(true), atrlength) * m + src1 // SHORT SL
x2 = src2 - ma_function(ta.tr(true), atrlength) * m // LONG SL
p1 = plot(x, title="ATR Short Stop Loss", color=#ffffff18)
p2 = plot(x2, title="ATR Long Stop Loss", color=#ffffff18)
// =========================================
// Strategy Execution
// =========================================
tradeDirection = input.string("Both", "Trade Direction", ["Long Only","Short Only","Both"], group=trade_execution_group)
risk_reward_ratio = input.float(1.5, "Risk Reward Ratio", group=trade_execution_group)
exit_strategy = input.string("Fixed Percent", "Exit Strategy", ["ATR","Fixed Percent"], group=trade_execution_group)
SLPercent = input.float(0.5, "Stoploss Percent (%)", group=trade_execution_group)
enterLong = can_long and (tradeDirection == "Long Only" or tradeDirection == "Both")
enterShort = can_short and (tradeDirection == "Short Only" or tradeDirection == "Both")
var bool plotMarkers_long = false
var float sl_long = na
var float tp2_long = na
var float entryPrice_long = na
var bool plotMarkers_short = false
var float sl_short = na
var float tp2_short = na
var float entryPrice_short = na
if exit_strategy == "ATR"
// Long Entries
if enterLong and strategy.position_size == 0
entryPrice_long := close
sl_long := x2
risk = entryPrice_long - sl_long
tp2_long := entryPrice_long + (risk_reward_ratio * risk)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", limit=tp2_long, stop=sl_long)
// Short Entries
if enterShort and strategy.position_size == 0
entryPrice_short := close
sl_short := x
risk = sl_short - entryPrice_short
tp2_short := entryPrice_short - (risk_reward_ratio * risk)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", limit=tp2_short, stop=sl_short)
if exit_strategy == "Fixed Percent"
// Long Entries
if enterLong and strategy.position_size == 0
entryPrice_long := close
sl_long := close * (1 - SLPercent / 100)
risk = entryPrice_long - sl_long
tp2_long := entryPrice_long + (risk_reward_ratio * risk)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", limit=tp2_long, stop=sl_long)
// Short Entries
if enterShort and strategy.position_size == 0
entryPrice_short := close
sl_short := close * (1 + SLPercent / 100)
risk = sl_short - entryPrice_short
tp2_short := entryPrice_short - (risk_reward_ratio * risk)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", limit=tp2_short, stop=sl_short)
// Entry Visual Flags
if strategy.position_size == 0
plotMarkers_long := false
plotMarkers_short := false
if strategy.position_size > 0
plotMarkers_long := true
plotMarkers_short := false
else if strategy.position_size < 0
plotMarkers_long := false
plotMarkers_short := true
// SL and TP Lines
longEntryMarker = plot(plotMarkers_long ? entryPrice_long : na, "Entry Marker L", color=na)
longSLMarker = plot(plotMarkers_long ? sl_long : na, "SL Marker L", color=#ff000050, linewidth=1, style=plot.style_linebr)
longTP2Marker = plot(plotMarkers_long ? tp2_long : na, "TP2 Marker L", color=#1100ff50, linewidth=1, style=plot.style_linebr)
plotshape(enterLong and strategy.position_size == 0, "BUY", shape.triangleup, location.belowbar, color.green, text="BUY", size=size.small, textcolor=color.green)
plotshape(enterShort and strategy.position_size == 0, "SELL", shape.triangledown, location.abovebar, color.red, text="SELL", size=size.small, textcolor=color.red)
shortEntryMarker = plot(plotMarkers_short ? entryPrice_short : na, "Entry Marker S", color=na)
shortSLMarker = plot(plotMarkers_short ? sl_short : na, "SL Marker S", color=#ff000050, linewidth=1, style=plot.style_linebr)
shortTP2Marker = plot(plotMarkers_short ? tp2_short : na, "TP2 Marker S", color=#1100ff50, linewidth=1, style=plot.style_linebr)
// SL and TP Fills
fill(plot1=longEntryMarker, plot2=longSLMarker, title="Long SL BG Fill", color=#b2283320)
fill(plot1=longEntryMarker, plot2=longTP2Marker, title="Long TP BG Fill", color=#08998120)
fill(plot1=shortEntryMarker, plot2=shortSLMarker, title="Short SL BG Fill", color=#b2283320)
fill(plot1=shortEntryMarker, plot2=shortTP2Marker, title="Short TP BG Fill", color=#08998120)
// Supertrend Plots (Only show if using supertrend filter)
upTrend = plot(useSupertrendFilter ? (directionVal < 0 ? supertrendVal : na) : na, "Up Trend", color=color.new(color.green,0), style=plot.style_linebr)
downTrend = plot(useSupertrendFilter ? (directionVal < 0 ? na : supertrendVal) : na, "Down Trend", color=color.new(color.red,0), style=plot.style_linebr)
bodyMiddle = plot(useSupertrendFilter ? (barstate.isfirst ? na : (open + close) / 2) : na, "Body Middle", display=display.none)
fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false)