यह एक ट्रेंड-फॉलोइंग रणनीति है जो कई तकनीकी संकेतकों को जोड़ती है, मुख्य रूप से व्यापार के अवसरों की पहचान करने के लिए एक्सपोनेंशियल मूविंग एवरेज (ईएमए) क्रॉसओवर, सुपरट्रेंड इंडिकेटर और रिलेटिव स्ट्रेंथ इंडेक्स (आरएसआई) का उपयोग करती है। यह रणनीति संकेतकों को व्यवस्थित रूप से एकीकृत करके, ट्रेंड फॉलोइंग में गति फ़िल्टरिंग जोड़कर और गतिशील स्टॉप-लॉस और टेक-प्रॉफिट पोजिशनिंग के लिए एटीआर का उपयोग करके एक पूर्ण ट्रेडिंग सिस्टम प्राप्त करती है।
रणनीति ट्रेडिंग संकेतों को निर्धारित करने के लिए एक ट्रिपल-फिल्टरिंग तंत्र का उपयोग करती हैः
इस रणनीति में एटीआर आधारित गतिशील स्टॉप-लॉस और टेक-प्रॉफिट सिस्टम शामिल है जो बाजार की अस्थिरता के आधार पर जोखिम प्रबंधन मापदंडों को स्वचालित रूप से समायोजित करता है। एक समय फ़िल्टर भी कम तरलता अवधि से बचने के लिए व्यापार को विशिष्ट समय अवधि तक सीमित करता है।
यह रणनीति कई तकनीकी संकेतकों और फ़िल्टरिंग स्थितियों को जोड़कर एक अपेक्षाकृत पूर्ण ट्रेडिंग प्रणाली का निर्माण करती है। इसके मुख्य फायदे कई पुष्टिकरण तंत्र और गतिशील जोखिम प्रबंधन में निहित हैं, जबकि पैरामीटर अनुकूलन और लेनदेन लागत पर ध्यान दिया जाना चाहिए। निरंतर अनुकूलन और सुधार के माध्यम से, रणनीति में विभिन्न बाजार वातावरणों में स्थिर प्रदर्शन बनाए रखने की क्षमता है।
/*backtest start: 2024-11-19 00:00:00 end: 2024-12-18 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Supertrend + EMA Crossover with RSI Filter", shorttitle="ST_EMA_RSI", overlay=true) // Input parameters for EMA fastEMA = input.int(3, title="Fast EMA Period", minval=1) slowEMA = input.int(6, title="Slow EMA Period", minval=1) atrLength = input.int(3, title="ATR Length", minval=1) // Using a fixed multiplier for Supertrend calculation stMultiplier = 1 // Stop loss and take profit multipliers stopLossATR = input.float(2.5, title="Stop Loss ATR Multiplier", minval=0.1, step=0.1) takeProfitATR = input.float(4, title="Take Profit ATR Multiplier", minval=0.1, step=0.1) // RSI inputs rsiLength = input.int(10, title="RSI Length", minval=1) rsiOverbought = input.float(65, title="RSI Overbought Level", minval=50.0, maxval=100.0) rsiOversold = input.float(30.0, title="RSI Oversold Level", minval=0.0, maxval=50.0) // Declare the RSI plot toggle input as a global variable bool rsiPlotEnabled = input.bool(true, title="Show RSI in separate panel") // Time filter inputs i_startTime = input(title="Start Filter", defval=timestamp("01 Jan 2023 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups") i_endTime = input(title="End Filter", defval=timestamp("28 Apr 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups") // Date/time filtering logic inDateRange = true // Calculate EMAs fastEMALine = ta.ema(close, fastEMA) slowEMALine = ta.ema(close, slowEMA) // Calculate ATR atr = ta.atr(atrLength) // Calculate Supertrend using fixed multiplier up = high - (stMultiplier * atr) dn = low + (stMultiplier * atr) var float trendUp = na var float trendDown = na var int trend = na trendUp := na(trendUp[1]) ? up : (close[1] > trendUp[1] ? math.min(up, trendUp[1]) : up) trendDown := na(trendDown[1]) ? dn : (close[1] < trendDown[1] ? math.max(dn, trendDown[1]) : dn) trend := close > nz(trendUp[1]) ? 1 : close < nz(trendDown[1]) ? -1 : nz(trend[1], 1) supertrend = trend == 1 ? trendUp : trendDown // Calculate RSI myRSI = ta.rsi(close, rsiLength) // Entry conditions with RSI filter longEntryCondition = ta.crossover(fastEMALine, slowEMALine) and (trend == 1) and (myRSI < rsiOverbought) shortEntryCondition = ta.crossunder(fastEMALine, slowEMALine) and (trend == -1) and (myRSI > rsiOversold) // Strategy entries if inDateRange and longEntryCondition and strategy.position_size <= 0 strategy.entry("Long", strategy.long) if inDateRange and shortEntryCondition and strategy.position_size >= 0 strategy.entry("Short", strategy.short) // Stops and targets if strategy.position_size > 0 longStopLoss = strategy.position_avg_price - stopLossATR * atr longTakeProfit = strategy.position_avg_price + takeProfitATR * atr strategy.exit("Long SL/TP", "Long", stop=longStopLoss, limit=longTakeProfit) if strategy.position_size < 0 shortStopLoss = strategy.position_avg_price + stopLossATR * atr shortTakeProfit = strategy.position_avg_price - takeProfitATR * atr strategy.exit("Short SL/TP", "Short", stop=shortStopLoss, limit=shortTakeProfit) // Plot EMAs and Supertrend plot(fastEMALine, title="Fast EMA", color=color.new(color.blue, 0)) plot(slowEMALine, title="Slow EMA", color=color.new(color.red, 0)) plot(trend == 1 ? supertrend : na, title="Supertrend Up", color=color.green, style=plot.style_linebr) plot(trend == -1 ? supertrend : na, title="Supertrend Down", color=color.red, style=plot.style_linebr) // Plot RSI and hlines plot(rsiPlotEnabled ? myRSI : na, title="RSI", color=color.new(color.purple, 0)) hline(rsiOverbought, "Overbought", color=color.red, linestyle=hline.style_dotted) hline(rsiOversold, "Oversold", color=color.green, linestyle=hline.style_dotted) // Plot entry signals plotshape(longEntryCondition, title="Long Entry Signal", style=shape.triangleup, location=location.belowbar, size=size.tiny, color=color.new(color.green, 0)) plotshape(shortEntryCondition, title="Short Entry Signal", style=shape.triangledown, location=location.abovebar, size=size.tiny, color=color.new(color.red, 0))