यह रणनीति एक प्रवृत्ति-अनुसरण व्यापार प्रणाली है जो सापेक्ष शक्ति सूचकांक (आरएसआई) और सरल चलती औसत (एसएमए) को जोड़ती है। यह रणनीति बाजार की प्रवृत्ति की दिशा निर्धारित करने के लिए चलती औसत का उपयोग करती है और गति की पुष्टि करने के लिए आरएसआई संकेतक का उपयोग करती है, ताकि प्रवृत्ति और गति के बीच प्रतिध्वनि होने पर व्यापार किया जा सके। इस रणनीति में एक पूर्ण स्टॉप-प्रॉफिट और स्टॉप-लॉस तंत्र तैयार किया गया है, जो जोखिमों को प्रभावी रूप से नियंत्रित कर सकता है।
रणनीति का मुख्य तर्क दो तकनीकी संकेतकों के संयुक्त उपयोग पर आधारित है:
ट्रेडिंग सिग्नल जनरेशन लॉजिक:
जोखिम नियंत्रण में प्रतिशत स्टॉप लॉस और लाभ लेने की विधियों का उपयोग किया जाता है, जिन्हें क्रमशः प्रवेश मूल्य के निश्चित प्रतिशत के रूप में निर्धारित किया जाता है।
यह रणनीति स्पष्ट तर्क और नियंत्रणीय जोखिमों के साथ एक ट्रेडिंग प्रणाली बनाने के लिए प्रवृत्ति और गति संकेतकों को जोड़ती है। यद्यपि इसमें कुछ अंतर्निहित जोखिम हैं, फिर भी यह रणनीति उचित पैरामीटर सेटिंग और जोखिम नियंत्रण के माध्यम से अच्छी व्यावहारिकता दर्शाती है। आगामी अनुकूलन निर्देश मुख्य रूप से गतिशील पैरामीटर समायोजन, बाजार पर्यावरण पहचान और संकेत गुणवत्ता सुधार पर केंद्रित होंगे, जिससे रणनीति की स्थिरता और लाभप्रदता में और सुधार होने की उम्मीद है।
/*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"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © raiford87
//@version=6
strategy("RSI + MA Trend Strategy (v6)",
shorttitle="RSI_MA_Trend_v6",
overlay=true,
initial_capital=50000,
default_qty_type=strategy.fixed,
default_qty_value=1)
// ─────────────────────────────────────────────────────────────────────────────────────
// 1. USER INPUTS
// ─────────────────────────────────────────────────────────────────────────────────────
maLength = input.int(50, "Moving Average Length")
rsiLength = input.int(14, "RSI Length")
rsiBuyLevel = input.int(55, "RSI > X for Buy", minval=1, maxval=99)
rsiSellLevel = input.int(45, "RSI < X for Sell", minval=1, maxval=99)
stopLossPerc = input.float(1.0, "Stop Loss %", minval=0.1)
takeProfitPerc = input.float(2.0, "Take Profit %", minval=0.1)
// ─────────────────────────────────────────────────────────────────────────────────────
// 2. INDICATOR CALCULATIONS
// ─────────────────────────────────────────────────────────────────────────────────────
maValue = ta.sma(close, maLength)
rsiVal = ta.rsi(close, rsiLength)
// Trend conditions
bullTrend = close > maValue
bearTrend = close < maValue
// RSI conditions
rsiBull = rsiVal > rsiBuyLevel
rsiBear = rsiVal < rsiSellLevel
// ─────────────────────────────────────────────────────────────────────────────────────
// 3. ENTRY CONDITIONS
// ─────────────────────────────────────────────────────────────────────────────────────
longCondition = bullTrend and rsiBull
shortCondition = bearTrend and rsiBear
if longCondition
strategy.entry("RSI MA Long", strategy.long)
if shortCondition
strategy.entry("RSI MA Short", strategy.short)
// ─────────────────────────────────────────────────────────────────────────────────────
// 4. STOP LOSS & TAKE PROFIT
// ─────────────────────────────────────────────────────────────────────────────────────
stopLossLevel = stopLossPerc * 0.01
takeProfitLevel = takeProfitPerc * 0.01
if strategy.position_size > 0
stopPriceLong = strategy.position_avg_price * (1 - stopLossLevel)
tpPriceLong = strategy.position_avg_price * (1 + takeProfitLevel)
strategy.exit("Exit Long", from_entry="RSI MA Long", stop=stopPriceLong, limit=tpPriceLong)
if strategy.position_size < 0
stopPriceShort = strategy.position_avg_price * (1 + stopLossLevel)
tpPriceShort = strategy.position_avg_price * (1 - takeProfitLevel)
strategy.exit("Exit Short", from_entry="RSI MA Short", stop=stopPriceShort, limit=tpPriceShort)
// ─────────────────────────────────────────────────────────────────────────────────────
// 5. PLOT SIGNALS & LEVELS
// ─────────────────────────────────────────────────────────────────────────────────────
plot(maValue, color=color.yellow, linewidth=2, title="Moving Average")
plotchar(longCondition, title="Long Signal", char='▲', location=location.belowbar, color=color.green, size=size.tiny)
plotchar(shortCondition, title="Short Signal", char='▼', location=location.abovebar, color=color.red, size=size.tiny)
// Plot Stop & TP lines
posIsLong = strategy.position_size > 0
posIsShort = strategy.position_size < 0
plotStopLong = posIsLong ? strategy.position_avg_price * (1 - stopLossLevel) : na
plotTpLong = posIsLong ? strategy.position_avg_price * (1 + takeProfitLevel): na
plotStopShort= posIsShort? strategy.position_avg_price * (1 + stopLossLevel) : na
plotTpShort = posIsShort? strategy.position_avg_price * (1 - takeProfitLevel): na
plot(plotStopLong, color=color.red, linewidth=2, style=plot.style_line, title="Stop Loss Long")
plot(plotTpLong, color=color.green, linewidth=2, style=plot.style_line, title="Take Profit Long")
plot(plotStopShort, color=color.red, linewidth=2, style=plot.style_line, title="Stop Loss Short")
plot(plotTpShort, color=color.green, linewidth=2, style=plot.style_line, title="Take Profit Short")