
এই কৌশলটি আপেক্ষিক শক্তি সূচক (RSI), সূচকীয় চলমান গড় (EMA) এবং গড় সত্য পরিসর (ATR) এর উপর ভিত্তি করে একটি বিস্তৃত পরিমাণগত ট্রেডিং সিস্টেম। এই কৌশলটি RSI মসৃণ করার জন্য EMA ব্যবহার করে, গুরুত্বপূর্ণ স্তরে RSI ব্রেকথ্রু সিগন্যালের মাধ্যমে লেনদেন ট্রিগার করে এবং কার্যকর ঝুঁকি নিয়ন্ত্রণ অর্জনের জন্য স্টপ-লস এবং টেক-প্রফিট স্তরগুলিকে গতিশীলভাবে সেট করতে ATR ব্যবহার করে। একই সময়ে, কৌশলটিতে ট্রেডিং সিগন্যাল গণনা এবং রেকর্ড করার কাজও অন্তর্ভুক্ত রয়েছে, যা ব্যবসায়ীদের কৌশলগুলি ব্যাকটেস্ট এবং অপ্টিমাইজ করতে সহায়তা করে।
কৌশলটির মূল যুক্তিতে নিম্নলিখিত মূল অংশগুলি অন্তর্ভুক্ত রয়েছে:
এই কৌশলটি তিনটি ক্লাসিক প্রযুক্তিগত সূচক: RSI, EMA এবং ATR একত্রিত করে একটি সম্পূর্ণ পরিমাণগত ট্রেডিং সিস্টেম তৈরি করে। সংকেত উৎপাদন, ঝুঁকি নিয়ন্ত্রণ এবং লেনদেন সম্পাদনের ক্ষেত্রে এই কৌশলটি অত্যন্ত বাস্তবসম্মত। ক্রমাগত অপ্টিমাইজেশন এবং উন্নতির মাধ্যমে, কৌশলটি বাস্তব ট্রেডিংয়ে স্থিতিশীল কর্মক্ষমতা অর্জন করবে বলে আশা করা হচ্ছে। তবে, ব্যবহারকারীদের কৌশলগত কর্মক্ষমতার উপর বাজার পরিবেশের প্রভাবের দিকে মনোযোগ দিতে হবে, যুক্তিসঙ্গতভাবে পরামিতি নির্ধারণ করতে হবে এবং ঝুঁকি নিয়ন্ত্রণের একটি ভাল কাজ করতে হবে।
/*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)