এই কৌশলটি আপেক্ষিক শক্তি সূচক (আরএসআই), এক্সপোনেনশিয়াল মুভিং গড় (ইএমএ), এবং গড় সত্য পরিসীমা (এটিআর) এর উপর ভিত্তি করে একটি বিস্তৃত পরিমাণগত ট্রেডিং সিস্টেম। কৌশলটি ইএমএ ব্যবহার করে আরএসআই মসৃণ করে, মূল স্তরে আরএসআই ব্রেকআউটের মাধ্যমে ট্রেডগুলি ট্রিগার করে এবং কার্যকর ঝুঁকি নিয়ন্ত্রণ অর্জনের জন্য গতিশীল স্টপ-লস এবং লাভের স্তরের জন্য এটিআর ব্যবহার করে। অতিরিক্তভাবে, কৌশলটিতে ব্যাকটেস্টিং এবং অপ্টিমাইজেশনে ব্যবসায়ীদের সহায়তা করার জন্য ট্রেড সিগন্যাল গণনা এবং রেকর্ডিং ফাংশন অন্তর্ভুক্ত রয়েছে।
মূল যুক্তিতে নিম্নলিখিত মূল উপাদানগুলি অন্তর্ভুক্ত রয়েছেঃ
কৌশলটি একটি সম্পূর্ণ পরিমাণগত ট্রেডিং সিস্টেম তৈরি করতে তিনটি ক্লাসিকাল প্রযুক্তিগত সূচক - আরএসআই, ইএমএ এবং এটিআরকে একত্রিত করে। এটি সংকেত উত্পাদন, ঝুঁকি নিয়ন্ত্রণ এবং বাণিজ্য সম্পাদনের ক্ষেত্রে শক্তিশালী ব্যবহারিকতা প্রদর্শন করে। অবিচ্ছিন্ন অপ্টিমাইজেশন এবং উন্নতির মাধ্যমে, কৌশলটি লাইভ ট্রেডিংয়ে স্থিতিশীল পারফরম্যান্সের প্রতিশ্রুতি দেখায়। তবে ব্যবহারকারীদের কৌশল পারফরম্যান্সে বাজারের অবস্থার প্রভাব বিবেচনা করতে হবে, যথাযথভাবে পরামিতি সেট করতে হবে এবং যথাযথ ঝুঁকি নিয়ন্ত্রণ বজায় রাখতে হবে।
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("RSI Trading Strategy with EMA and ATR Stop Loss/Take Profit", overlay=true) length = input.int(14, minval=1, title="RSI Length") src = input(close, title="Source") rsi = ta.rsi(src, length) smoothingLength = input.int(14, minval=1, title="Smoothing Length") smoothedRsi = ta.ema(rsi, smoothingLength) // استفاده از EMA برای صاف کردن RSI atrLength = input.int(14, title="ATR Length") atrMultiplier = input.float(1, title="ATR Multiplier") atrValue = ta.atr(atrLength) // محاسبه ATR level1 = 30 level2 = 70 // تنظیمات استراتژی var table crossingTable = table.new(position.top_right, 2, 5, border_width=1) var int crossCount = 0 var float crossPrice = na // شرط ورود به معامله خرید زمانی که RSI از سطح 70 به بالا عبور میکند if (ta.crossover(smoothedRsi, level2)) strategy.entry("Long", strategy.long) // تنظیم حد سود و حد ضرر strategy.exit("Take Profit/Stop Loss", "Long", stop=close - atrMultiplier * atrValue, limit=close + atrMultiplier * atrValue, comment="") crossCount := crossCount + 1 crossPrice := close // شرط ورود به معامله فروش زمانی که RSI از سطح 70 به پایین عبور میکند if (ta.crossunder(smoothedRsi, level2)) strategy.entry("Short", strategy.short) // تنظیم حد سود و حد ضرر strategy.exit("Take Profit/Stop Loss", "Short", stop=close + atrMultiplier * atrValue, limit=close - atrMultiplier * atrValue, comment="") crossCount := crossCount + 1 crossPrice := close // شرط ورود به معامله خرید زمانی که RSI از سطح 30 به بالا عبور میکند if (ta.crossover(smoothedRsi, level1)) strategy.entry("Long", strategy.long) // تنظیم حد سود و حد ضرر strategy.exit("Take Profit/Stop Loss", "Long", stop=close - atrMultiplier * atrValue, limit=close + atrMultiplier * atrValue, comment="") crossCount := crossCount + 1 crossPrice := close // شرط ورود به معامله فروش زمانی که RSI از سطح 30 به پایین عبور میکند if (ta.crossunder(smoothedRsi, level1)) strategy.entry("Short", strategy.short) // تنظیم حد سود و حد ضرر strategy.exit("Take Profit/Stop Loss", "Short", stop=close + atrMultiplier * atrValue, limit=close - atrMultiplier * atrValue, comment="") crossCount := crossCount + 1 crossPrice := close if (not na(crossPrice)) table.cell(crossingTable, 0, crossCount % 5, text=str.tostring(crossCount), bgcolor=color.green) table.cell(crossingTable, 1, crossCount % 5, text=str.tostring(crossPrice), bgcolor=color.green) // ترسیم خطوط و مقادیر RSI plot(smoothedRsi, title="Smoothed RSI", color=color.blue) hline(level1, "Level 30", color=color.red) hline(level2, "Level 70", color=color.green)