
আরএসআই অপ্টিমাইজড ওয়ারেন্টি রিটার্ন ট্রেডিং কৌশল হল একটি পরিমাণগত ট্রেডিং কৌশল যা আরএসআই (আপেক্ষিকভাবে দুর্বল সূচক) এর সাথে মিলিত হয়, স্মার্ট মার্কেট ফিল্টারিং এবং ঝুঁকি ব্যবস্থাপনার সাথে স্ব-অনুকূলিত ওয়ারেন্টি। এই কৌশলটি মূলত আরএসআই (RSI) চরম স্তরে পৌঁছানোর সময় উচ্চ-সম্ভাব্যতা বিপরীত সুযোগগুলি সনাক্ত করে (আরএসআই ≤30 ওভারসোল্ড, আরএসআই ≥70 ওভারসোল্ড), তবে কেবলমাত্র যখন বাজারের শর্তগুলি আরএসআই রিটার্ন কৌশলটির পক্ষে অনুকূল হয় তখনই ট্রেড করা হয়। কোডের গভীর বিশ্লেষণের মাধ্যমে আমরা দেখতে পারি যে কৌশলটির মূলটি প্রযুক্তিগত সূচক এবং বাজারের অবস্থার বিশ্লেষণকে একত্রিত করে ট্রেডিং সিদ্ধান্তগুলিকে অনুকূলিত করতে এবং বিভিন্ন বাজারের অবস্থার অধীনে পারফরম্যান্সকে সর্বাধিক করতে।
আরএসআই রিটার্ন ট্রেডিং কৌশলটি নিম্নলিখিত কয়েকটি মূল উপাদানগুলির উপর ভিত্তি করে উদ্বায়ীতা-অনুকূলিতকরণের উপর ভিত্তি করেঃ
আরএসআই সিগন্যাল সিস্টেম১৪-চক্র RSI সূচক ব্যবহার করে বাজারের ওভারবয় ওভারসেল অবস্থা চিহ্নিত করুন। যখন RSI 30 এর নীচে থাকে, তখন বাজারকে ওভারসেল হিসাবে বিবেচনা করা হয়, একটি ক্রয় সংকেত উত্পন্ন করে; যখন RSI 70 এর উপরে থাকে, তখন বাজারকে ওভারবয় হিসাবে বিবেচনা করা হয়, একটি বিক্রয় সংকেত উত্পন্ন করে।
প্রবণতা বিশ্লেষণ: কৌশলটি 50 পিরিয়ডের সরল চলমান গড় ((SMA) ব্যবহার করে বাজার নির্দেশনা নির্ধারণ করে। দামগুলি চলমান গড়ের উপরে উঠার প্রবণতা দেখায় এবং দামগুলি চলমান গড়ের নীচে নেমে যাওয়ার প্রবণতা দেখায়। আরো গুরুত্বপূর্ণভাবে, কৌশলটি প্রবণতা শক্তি গণনা করে, শক্তিশালী প্রবণতা বাজারে (প্রবণতা শক্তি> 25%) ট্রেড করা এড়াতে, কারণ গড় মূল্যের রিটার্ন কৌশল সাধারণত এই শর্তে ভাল কাজ করে না।
বাজার অভিযোজন বিশ্লেষণকোডটি সাম্প্রতিক ওঠানামা গণনা করে, যাতে নিশ্চিত করা যায় যে বাজারটি যথেষ্ট পরিমাণে ওঠানামা করছে (দিনের ওঠানামা > 1%) গড় রিটার্ন কৌশলকে সমর্থন করার জন্য। কৌশলটিও পরীক্ষা করে যে প্রবণতা শক্তি গ্রহণযোগ্য পরিসরের মধ্যে রয়েছে কিনা (≤ 25%) । যখন বাজার শর্তগুলি এই মানদণ্ডগুলি পূরণ করে তখনই কৌশলটি প্রবেশের বিষয়টি বিবেচনা করে।
ঝুঁকি ব্যবস্থাপনাকৌশলঃ ২০% স্টপ লস বাস্তবায়ন করুন, ভোল্টেবল সম্পদের জন্য পর্যাপ্ত মূল্যের ওঠানামা করার জন্য পর্যাপ্ত স্থান দিন, পাশাপাশি ২০% লাভের লক্ষ্যমাত্রা নির্ধারণ করুন, যাতে ১ঃ১ এর ঝুঁকি / রিটার্ন অনুপাত নিশ্চিত হয়। প্রতিটি লেনদেনের জন্য ৫% তহবিল ব্যবহার করুন, সর্বাধিক দুটি পজিশনের পিরামিড বাড়ানোর অনুমতি দিন, যাতে শক্তিশালী সেটিংয়ে অবস্থানটি প্রসারিত করা যায়।
সিগন্যাল নিশ্চিতকরণ এবং প্রস্থান: প্রবেশের সংকেতটি আরএসআইকে চূড়ান্ত পর্যায়ে পৌঁছানোর প্রয়োজন এবং বাজারের শর্তগুলি উপযুক্ত। প্রস্থান শর্তগুলি আরএসআই বিপরীত হওয়া ((বিপরীত চূড়ান্ত পর্যায়ে পৌঁছানো), স্টপ লস ট্রিগার বা লাভের লক্ষ্যে পৌঁছানো অন্তর্ভুক্ত।
কোডটি গভীরভাবে বিশ্লেষণ করে এই কৌশলটি নিম্নলিখিত উল্লেখযোগ্য সুবিধাগুলি প্রকাশ করেছেঃ
বাজার পরিবেশ অভিযোজনযোগ্যতামৌলিক আরএসআই কৌশল থেকে ভিন্নভাবে, এই কৌশলটি বাজার পরিস্থিতি বিশ্লেষণ করে ট্রেডিং সংকেতগুলিকে ফিল্টার করে, বিপণন পরিবেশে ট্রেডিং এড়াতে পারে যা গড় মানের প্রত্যাবর্তন কৌশলগুলির জন্য উপযুক্ত নয়, যা সংকেতের গুণমানকে ব্যাপকভাবে উন্নত করে।
ঝুঁকি ব্যবস্থাপনার জন্য স্বতঃস্ফূর্ত প্রবণতা২০% স্টপ লেভেল নির্ধারণ করা হয়েছে, যা উদ্বায়ী সম্পদের জন্য বিশেষভাবে ডিজাইন করা হয়েছে, যা স্বাভাবিক বাজার অস্থিরতার কারণে অকাল প্রস্থান এড়াতে এবং পর্যাপ্ত সুরক্ষা প্রদান করে।
সঠিক প্রবেশের শর্তাবলী: RSI প্রান্তিক, প্রবণতা বিশ্লেষণ এবং অস্থিরতা পরীক্ষা একত্রিত করে, শুধুমাত্র উচ্চ সম্ভাব্যতা সেটিংসে প্রবেশের বিষয়টি নিশ্চিত করে, মিথ্যা সংকেত হ্রাস করে।
ভিজ্যুয়ালাইজড সিদ্ধান্ত সমর্থনকৌশলঃ ব্যাকগ্রাউন্ড রঙের পরিবর্তন প্রদান করে (গ্রিন ব্যাকগ্রাউন্ড ক্রয় এলাকা, লাল ব্যাকগ্রাউন্ড বিক্রয় এলাকা) এবং সতর্কতা লেবেল (অরেঞ্জ সতর্কতা শক্তিশালী প্রবণতা সনাক্ত করা হয়েছে, ট্রেড এড়ানো উচিত) যা ট্রেডিং সিদ্ধান্তের স্বজ্ঞাততা বাড়ায়।
স্বয়ংক্রিয় বন্ধুত্ব: একটি অন্তর্নির্মিত সম্পূর্ণ সতর্কতা শর্তাবলী সিস্টেম, স্বয়ংক্রিয় লেনদেন কার্যকরকরণ সমর্থন করে, বাজার ম্যানুয়ালি পর্যবেক্ষণের প্রয়োজন নেই।
ডায়নামিক ইনফো: বাজারের অবস্থা এবং লেনদেনের স্থিতির একটি রিয়েল-টাইম প্রদর্শন, যার মধ্যে রয়েছে বর্তমান আরএসআই মান, প্রবণতা শক্তি, অস্থিরতা এবং বাজার অভিযোজনযোগ্যতার মূল্যায়ন, যা ব্যবসায়ীদের একটি বিস্তৃত বাজার দৃষ্টিভঙ্গি সরবরাহ করে।
যদিও এই কৌশলটি যুক্তিসঙ্গতভাবে পরিকল্পিত, তবুও কিছু সম্ভাব্য ঝুঁকি রয়েছেঃ
পরামিতি সংবেদনশীলতাকৌশলটির কার্যকারিতা অত্যন্ত নির্ভরশীল ইনপুট প্যারামিটার যেমন আরএসআই দৈর্ঘ্য, ওভারব্লুড ওভারসোল্ড স্তর, সর্বাধিক প্রবণতা শক্তি এবং ওঠানামার মাত্রা। বিভিন্ন বাজার পরিস্থিতিতে বিভিন্ন প্যারামিটার অপ্টিমাইজেশনের প্রয়োজন হতে পারে এবং ভুল প্যারামিটারগুলি কৌশলটির দুর্বল পারফরম্যান্সের কারণ হতে পারে।
চরম বাজার পরিস্থিতি: বাজারের পতন বা চরম অস্থিরতার সময়, এমনকি যদি ২০% স্টপ লস সেট করা হয়, তবে কৌশলটি স্লাইড পয়েন্টের ঝুঁকির মুখোমুখি হতে পারে, যার ফলে প্রকৃত ক্ষতির চেয়ে বেশি প্রত্যাশিত হতে পারে।
তহবিল বন্টন ঝুঁকি: ডিফল্টরূপে প্রতিটি লেনদেনের জন্য ৫% তহবিল ব্যবহার করা হয় এবং সর্বোচ্চ দুটি পজিশনের অনুমতি দেওয়া হয় (মোট ১০%), যা কিছু ব্যবসায়ীর জন্য অত্যধিক চরম হতে পারে, বিশেষত যখন বাজারের ব্যাপক অস্থিরতা থাকে।
প্রবণতা নির্ধারণের সময়সীমা: 50 পিরিয়ডের চলমান গড় ব্যবহার করে ট্রেন্ড নির্ধারণে পিছিয়ে পড়া হতে পারে, যার ফলে ট্রেন্ড পরিবর্তনের সময় ভুল সিদ্ধান্ত নেওয়া হতে পারে।
অতিমাত্রায় কার্বোহাইড্রেটের বিপদকঠোর বাজার অভিযোজনযোগ্যতা পরীক্ষা ((দুর্বল প্রবণতা + পর্যাপ্ত অস্থিরতা) ট্রেডিংয়ের সুযোগকে অতিরিক্ত ফিল্টার করতে পারে, যা কিছু বাজার পরিবেশে খুব কম ট্রেডিং ফ্রিকোয়েন্সি সৃষ্টি করে।
সমাধানের উপায়গুলির মধ্যে রয়েছেঃ বিভিন্ন বাজার এবং সময়সীমার জন্য প্যারামিটার অপ্টিমাইজেশন; চরম বাজার পরিস্থিতিতে স্বয়ংক্রিয় ট্রেডিং স্থগিত করা; ব্যক্তিগত ঝুঁকি বহনযোগ্যতার উপর ভিত্তি করে তহবিল বন্টন অনুপাতের সমন্বয় করা; প্রবণতা বিচারের পিছিয়ে পড়া কমাতে স্বল্প সময়ের চলমান গড় ব্যবহারের বিষয়টি বিবেচনা করা; ট্রেডিং ফ্রিকোয়েন্সি বাড়ানোর জন্য উপযুক্তভাবে বাজার অভিযোজনযোগ্যতার মানদণ্ডকে শিথিল করা।
কোড বিশ্লেষণের উপর ভিত্তি করে, এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ
গতিশীল প্যারামিটার সমন্বয়: RSI এর ওভার-বই ওভার-সেল থ্রেশহোল্ডটি একটি গতিশীল পরিবর্তনশীল হিসাবে ডিজাইন করা হয়েছে, যা historicalতিহাসিক অস্থিরতার সাথে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করে। নিম্ন অস্থিরতার পরিবেশে একটি সংকীর্ণ থ্রেশহোল্ড পরিসীমা ব্যবহার করুন (যেমন 35⁄65), উচ্চ অস্থিরতার পরিবেশে একটি বিস্তৃত থ্রেশহোল্ড পরিসীমা ব্যবহার করুন (যেমন 25⁄75) । এটি কৌশলটিকে বিভিন্ন বাজারের অবস্থার সাথে আরও ভালভাবে খাপ খাইয়ে নিতে সক্ষম করবে।
মাল্টি টাইম ফ্রেম বিশ্লেষণ: মাল্টি টাইম ফ্রেম নিশ্চিতকরণ ব্যবস্থা যোগ করা, যেমন দীর্ঘ সময় ফ্রেমে বাজার স্থিতি নিশ্চিত করা, স্বল্প সময় ফ্রেমে প্রবেশের সংকেত খোঁজা। এই পদ্ধতিটি সংকেতের গুণমান উন্নত করতে পারে এবং ভুয়া ব্রেকআউট হ্রাস করতে পারে।
ডায়নামিক স্টপ লস স্ট্র্যাটেজিএটির উপর ভিত্তি করে স্টপ লেভেল সেট করুন, স্থির শতাংশের পরিবর্তে। এটি স্টপ পয়েন্টকে বর্তমান বাজারের অস্থিরতার সাথে আরও ভালভাবে খাপ খাইয়ে নেবে, উচ্চ অস্থিরতার সময় খুব কাছাকাছি বন্ধ হওয়া বা কম অস্থিরতার সময় খুব দূরে বন্ধ হওয়া এড়াতে।
আংশিক মুনাফা: ধাপে ধাপে মুনাফা অর্জনের কৌশল বাস্তবায়ন করুন, সমস্ত পজিশন 20% মুনাফা অর্জনের লক্ষ্যে ছাড়ার পরিবর্তে। উদাহরণস্বরূপ, 10% মুনাফা অর্জনের সময় 50% পজিশন ছাড়ুন, 20% মুনাফা অর্জনের সময় অবশিষ্ট পজিশনগুলি ছাড়ুন। এটি আংশিক মুনাফা লক করতে পারে এবং অবশিষ্ট পজিশনগুলিকে আরও বেশি লাভের সম্ভাবনা দেয়।
মৌসুমী এবং বাজারের চক্র বিশ্লেষণ: বাজারের মৌসুমী এবং চক্রীয় বিশ্লেষণের সমন্বয়, ইতিহাসের সেরা সময়ে ট্রেডিং ফ্রিকোয়েন্সি বৃদ্ধি, ট্রেডিং ফ্রিকোয়েন্সি হ্রাস বা প্রবণতার সময় প্যারামিটারগুলি সামঞ্জস্য করুন।
মেশিন লার্নিং অপ্টিমাইজেশন: মেশিন লার্নিং প্রযুক্তি ব্যবহার করে চলমান বাজারের পরিবেশে গড় মূল্যের প্রত্যাবর্তন কৌশলগুলির সাফল্যের সম্ভাবনাটি গতিশীলভাবে পূর্বাভাস দেওয়া এবং সেই অনুযায়ী প্রবেশের মানদণ্ড এবং পজিশনের আকারকে সামঞ্জস্য করা। এটি কৌশলগুলিকে বাজারের পরিবর্তনের সাথে আরও বুদ্ধিমানভাবে খাপ খাইয়ে নিতে সক্ষম করবে।
অস্থিরতা-অনুকূলিত আরএসআই-এর গড় রিটার্ন ট্রেডিং কৌশলটি একটি বিস্তৃত এবং বুদ্ধিমান ট্রেডিং সিস্টেম যা মৌলিক আরএসআই কৌশলগুলির প্রধান ত্রুটিগুলি সমাধান করে এবং বাজারের প্রাসঙ্গিক বিশ্লেষণ এবং অস্থিরতার সাথে অভিযোজিত ঝুঁকি ব্যবস্থাপনা যুক্ত করে কৌশলটির কার্যকারিতা উল্লেখযোগ্যভাবে উন্নত করে। এই কৌশলটি বিশেষত 1% এর বেশি দৈনিক অস্থিরতার সাথে সম্পদের জন্য উপযুক্ত, বিশেষত জোনের ঝড় বা দুর্বল প্রবণতা বাজারে।
কৌশলটির মূল সুবিধা হ’ল এর স্মার্ট মার্কেট ফিল্টারিং প্রক্রিয়া, যা কেবলমাত্র যখন বাজারের শর্তগুলি মিড-রেভিনিউ ট্রেডিংয়ের জন্য উপযুক্ত হয় তখনই সংকেত তৈরি করে এবং যথাযথ ঝুঁকি ব্যবস্থাপনার মাধ্যমে তহবিলকে সুরক্ষিত করে। একই সাথে, সম্পূর্ণ ভিজ্যুয়ালাইজেশন সিস্টেম এবং ইনফোগ্রাফিকগুলি বাজারের অবস্থার একটি পরিষ্কার ওভারভিউ সরবরাহ করে যা আরও বুদ্ধিমান ট্রেডিং সিদ্ধান্ত গ্রহণে সহায়তা করে।
কিছু ঝুঁকি এবং অপ্টিমাইজেশনের জায়গা থাকা সত্ত্বেও, এই কৌশলটির মৌলিক নকশাটি শক্ত এবং প্রস্তাবিত অপ্টিমাইজেশনের দিকনির্দেশের মাধ্যমে এটি বিভিন্ন বাজারের পরিবেশে এর অভিযোজনযোগ্যতা এবং কার্যকারিতা আরও বাড়িয়ে তুলতে পারে। এটি একটি মূল্যবান কৌশলগত কাঠামো যারা অস্থির বাজারে সমমানের রিটার্নের সুযোগগুলি ক্যাপচার করতে চায় তাদের জন্য।
/*backtest
start: 2024-06-23 00:00:00
end: 2025-06-21 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/
// © cindycrijns
//@version=6
strategy("RSI Mean Reversion", shorttitle="RSI_MR2", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=5, pyramiding=2)
// Input parameters
rsiLength = input.int(14, "RSI Length")
rsiOversold = input.int(30, "RSI Oversold Level")
rsiOverbought = input.int(70, "RSI Overbought Level")
riskPercent = input.float(20.0, "Max Loss Per Trade (%)", minval=1.0, maxval=50.0)
profitTarget = input.float(20.0, "Profit Target (%)", minval=5.0, maxval=100.0)
// Trend analysis parameters
maLength = input.int(50, "Moving Average Length")
trendStrengthPeriod = input.int(20, "Trend Strength Period")
maxTrendStrength = input.float(25.0, "Max Trend Strength % (avoid above this)", minval=5.0, maxval=50.0)
// Calculate indicators
rsi = ta.rsi(close, rsiLength)
ma = ta.sma(close, maLength)
// Trend analysis
trendStrength = math.abs(close - close[trendStrengthPeriod]) / close[trendStrengthPeriod] * 100
isStrongTrend = trendStrength > maxTrendStrength
isUptrend = close > ma
isDowntrend = close < ma
isWeakTrend = trendStrength <= maxTrendStrength
// Market suitability check
priceAboveMA = close > ma
priceBelowMA = close < ma
recentVolatility = ta.stdev(ta.change(close), 20) / close * 100
isVolatileEnough = recentVolatility > 1.0 // At least 1% daily volatility
// Suitability for mean reversion strategy
isSuitableForStrategy = isWeakTrend and isVolatileEnough
// Enhanced RSI signals with trend filtering
longCondition = rsi <= rsiOversold and (isUptrend or isWeakTrend) and isSuitableForStrategy
shortCondition = rsi >= rsiOverbought and (isDowntrend or isWeakTrend) and isSuitableForStrategy
// Exit conditions
longExitCondition = rsi >= rsiOverbought
shortExitCondition = rsi <= rsiOversold
// Prevent overlapping trades
validLong = longCondition and strategy.position_size == 0
validShort = shortCondition and strategy.position_size == 0
// Strategy entries
if validLong
strategy.entry("Long", strategy.long, comment="RSI Oversold Buy")
if validShort
strategy.entry("Short", strategy.short, comment="RSI Overbought Sell")
// Risk management variables
var float entryPrice = na
var float stopLossPrice = na
var float profitTargetPrice = na
// Set levels when entering a trade
if strategy.position_size != 0 and na(entryPrice)
entryPrice := strategy.position_avg_price
stopLossPrice := strategy.position_size > 0 ? entryPrice * (1 - riskPercent/100) : entryPrice * (1 + riskPercent/100)
profitTargetPrice := strategy.position_size > 0 ? entryPrice * (1 + profitTarget/100) : entryPrice * (1 - profitTarget/100)
// Stop Loss
if strategy.position_size > 0 and close <= stopLossPrice
strategy.close("Long", comment="Stop Loss")
entryPrice := na
if strategy.position_size < 0 and close >= stopLossPrice
strategy.close("Short", comment="Stop Loss")
entryPrice := na
// Profit Target - Close 100% at 20% profit
if strategy.position_size > 0 and close >= profitTargetPrice
strategy.close("Long", comment="20% Profit Target")
entryPrice := na
if strategy.position_size < 0 and close <= profitTargetPrice
strategy.close("Short", comment="20% Profit Target")
entryPrice := na
// Signal-based exits (RSI reversal)
if longExitCondition and strategy.position_size > 0
strategy.close("Long", comment="RSI Exit")
entryPrice := na
if shortExitCondition and strategy.position_size < 0
strategy.close("Short", comment="RSI Exit")
entryPrice := na
// Reset variables when position is closed
if strategy.position_size == 0
entryPrice := na
stopLossPrice := na
profitTargetPrice := na
// Plot moving average and trend analysis
plot(ma, color=isUptrend ? color.green : color.red, linewidth=2, title="Trend MA")
plot(rsi, title="RSI", display=display.none) // Hidden plot for alerts
// Plot signals
plotshape(validLong, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", title="Long Signal")
plotshape(validShort, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", title="Short Signal")
// Plot risk management levels
plot(strategy.position_size != 0 ? stopLossPrice : na, color=color.red, linewidth=1, title="Stop Loss", style=plot.style_linebr)
plot(strategy.position_size != 0 ? profitTargetPrice : na, color=color.green, linewidth=1, title="20% Profit Target", style=plot.style_linebr)
// Background colors for market conditions
bgcolor(rsi <= rsiOversold and isSuitableForStrategy ? color.new(color.green, 90) : na, title="Good Buy Zone")
bgcolor(rsi >= rsiOverbought and isSuitableForStrategy ? color.new(color.red, 90) : na, title="Good Sell Zone")
bgcolor(isStrongTrend ? color.new(color.orange, 95) : na, title="Strong Trend - Avoid Trading")
// Warning labels for unsuitable conditions
plotshape(isStrongTrend and (rsi <= rsiOversold or rsi >= rsiOverbought),
style=shape.xcross, location=location.top, color=color.orange,
text="AVOID\nSTRONG TREND", title="Avoid Strong Trend Warning", size=size.small)
plotshape(not isVolatileEnough and (rsi <= rsiOversold or rsi >= rsiOverbought),
style=shape.diamond, location=location.top, color=color.gray,
text="LOW VOL", title="Low Volatility Warning", size=size.tiny)
// Enhanced info table with market analysis
if strategy.position_size != 0 or not isSuitableForStrategy
var table infoTable = table.new(position.top_right, 2, 7, bgcolor=color.white, border_width=1)
table.cell(infoTable, 0, 0, "Position", text_color=color.black, bgcolor=color.gray)
table.cell(infoTable, 1, 0, strategy.position_size > 0 ? "LONG" : strategy.position_size < 0 ? "SHORT" : "NONE", text_color=color.black)
table.cell(infoTable, 0, 1, "RSI", text_color=color.black, bgcolor=color.gray)
table.cell(infoTable, 1, 1, str.tostring(rsi, "#.##"), text_color=color.black)
table.cell(infoTable, 0, 2, "Trend Strength", text_color=color.black, bgcolor=color.gray)
table.cell(infoTable, 1, 2, str.tostring(trendStrength, "#.##") + "%",
text_color=isStrongTrend ? color.red : color.green)
table.cell(infoTable, 0, 3, "Volatility", text_color=color.black, bgcolor=color.gray)
table.cell(infoTable, 1, 3, str.tostring(recentVolatility, "#.##") + "%",
text_color=isVolatileEnough ? color.green : color.red)
table.cell(infoTable, 0, 4, "Market Status", text_color=color.black, bgcolor=color.gray)
table.cell(infoTable, 1, 4, isSuitableForStrategy ? "GOOD FOR MR" : "AVOID TRADING",
text_color=isSuitableForStrategy ? color.green : color.red)
table.cell(infoTable, 0, 5, "Target", text_color=color.black, bgcolor=color.gray)
table.cell(infoTable, 1, 5, strategy.position_size != 0 ? str.tostring(profitTargetPrice, "#.###") : "N/A", text_color=color.green)
table.cell(infoTable, 0, 6, "P&L", text_color=color.black, bgcolor=color.gray)
table.cell(infoTable, 1, 6, strategy.position_size != 0 ? str.tostring(strategy.openprofit, "#.##") : "N/A",
text_color=strategy.openprofit >= 0 ? color.green : color.red)
// Alert conditions for automated trading
alertcondition(validLong, title="RSI Buy Signal",
message='BUY {{ticker}} at {{close}} - RSI: {{plot_0}} - Strategy: RSI_MR')
alertcondition(validShort, title="RSI Sell Signal",
message='SELL {{ticker}} at {{close}} - RSI: {{plot_0}} - Strategy: RSI_MR')
alertcondition(strategy.position_size > 0 and close >= profitTargetPrice, title="Long Profit Target",
message='CLOSE LONG {{ticker}} at {{close}} - Profit Target Hit')
alertcondition(strategy.position_size < 0 and close <= profitTargetPrice, title="Short Profit Target",
message='CLOSE SHORT {{ticker}} at {{close}} - Profit Target Hit')
alertcondition(strategy.position_size > 0 and close <= stopLossPrice, title="Long Stop Loss",
message='CLOSE LONG {{ticker}} at {{close}} - Stop Loss Hit')
alertcondition(strategy.position_size < 0 and close >= stopLossPrice, title="Short Stop Loss",
message='CLOSE SHORT {{ticker}} at {{close}} - Stop Loss Hit')