
এই কৌশলটি আপেক্ষিক শক্তি সূচক (RSI) এর উপর ভিত্তি করে একটি মাল্টি-লেভেল ইন্ডিকেটর ওভারলে ট্রেডিং সিস্টেম। কৌশলটি একটি নির্দিষ্ট ট্রেডিং টাইম উইন্ডোর মধ্যে কাজ করে, RSI সূচকের অতিরিক্ত কেনা এবং ওভারসেল্ড সিগন্যালের মাধ্যমে ট্রেডিং সুযোগগুলি চিহ্নিত করে, এবং বাজার বিপরীত দিকে চলে গেলে ব্যাচগুলিতে অবস্থান তৈরি করে সামগ্রিক রিটার্ন অপ্টিমাইজ করার জন্য এটিকে একটি গতিশীল অবস্থান সমন্বয় প্রক্রিয়ার সাথে একত্রিত করে। . কৌশলটি টেক-প্রফিট পরিচালনার জন্য গড় প্রবেশ মূল্যের উপর ভিত্তি করে একটি লক্ষ্য লাভের পদ্ধতি ব্যবহার করে।
কৌশলটি প্রধানত নিম্নলিখিত মূল উপাদানগুলির উপর ভিত্তি করে কাজ করে:
এই কৌশলটি RSI সূচক এবং ব্যাচ খোলার প্রক্রিয়ার সমন্বয়ের মাধ্যমে একটি অপেক্ষাকৃত সম্পূর্ণ ট্রেডিং সিস্টেম গঠন করে। কৌশলটির মূল সুবিধাটি এর মাল্টি-লেভেল সিগন্যাল ফিল্টারিং মেকানিজম এবং নমনীয় পজিশন ম্যানেজমেন্ট পদ্ধতিতে নিহিত, তবে এটি ট্রেন্ড মার্কেটের ঝুঁকি এবং প্যারামিটার অপ্টিমাইজেশনের মতো বিষয়গুলিতেও মনোযোগ দিতে হবে। ট্রেন্ড ফিল্টার যোগ করে, স্টপ-লস মেকানিজম অপ্টিমাইজ করে এবং অন্যান্য উন্নতির মাধ্যমে, কৌশলটির সামগ্রিক কর্মক্ষমতায় উন্নতির জায়গা রয়েছে।
/*backtest
start: 2024-12-10 00:00:00
end: 2025-01-08 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=6
strategy("TonyM RSI", overlay=true)
// Input Settings
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
startHour = input.int(2, "Start Hour", minval=0, maxval=23, group="Trading Window")
endHour = input.int(4, "End Hour", minval=0, maxval=23, group="Trading Window")
// RSI Calculation
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))
// Time Filter
inTradingWindow = (hour >= startHour and hour < endHour)
// Strategy Settings
buyLevel = 30
sellLevel = 70
scaleDistance = 1.0 // Distance in points to add to the position
takeProfitPoints = 1.5 // Profit target from average price
initialQty = 1 // Initial trade size
scalingQty = 1 // Additional trade size for scaling
// Trade Logic
if inTradingWindow
// Entry Logic
if rsi <= buyLevel and strategy.position_size == 0
strategy.entry("Buy", strategy.long, qty=initialQty)
if rsi >= sellLevel and strategy.position_size == 0
strategy.entry("Sell", strategy.short, qty=initialQty)
// Scaling Logic
if strategy.position_size > 0 and close <= strategy.position_avg_price - scaleDistance
strategy.entry("Scale Buy", strategy.long, qty=scalingQty)
if strategy.position_size < 0 and close >= strategy.position_avg_price + scaleDistance
strategy.entry("Scale Sell", strategy.short, qty=scalingQty)
// Exit Logic (based on average price)
if strategy.position_size > 0
strategy.exit("Take Profit Long", "Buy", limit=strategy.position_avg_price + takeProfitPoints)
if strategy.position_size < 0
strategy.exit("Take Profit Short", "Sell", limit=strategy.position_avg_price - takeProfitPoints)
// Plot RSI
plot(rsi, "RSI", color=color.blue, linewidth=1)
rsiUpperBand = hline(70, "RSI Upper Band", color=color.red)
rsiLowerBand = hline(30, "RSI Lower Band", color=color.green)
fill(rsiUpperBand, rsiLowerBand, color=color.new(color.gray, 90))