
यह रणनीति रिलेटिव स्ट्रेंथ इंडेक्स (आरएसआई) पर आधारित एक बहु-स्तरीय संकेतक ओवरले ट्रेडिंग प्रणाली है। यह रणनीति एक विशिष्ट ट्रेडिंग समय अवधि के भीतर काम करती है, 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))