
The strategy named “EMA-RSI-Supertrend Multi-Factor Convergence Strategy” combines exponential moving averages (EMA), Relative Strength Index (RSI), Supertrend indicator, and volume confirmation signals to build a multi-factor trading system. It uses the golden cross/death cross of 8-period (short-term) and 21-period (long-term) EMAs as basic signals, supplemented by RSI’s midline filter and Supertrend’s trend confirmation, finally validated by volume spikes. The strategy adopts full-position entry/exit mode with EMA-based exit conditions, forming a complete trading loop.
This strategy achieves high-quality trend signals through multi-factor synergy, particularly effective in strong trending markets. The quadruple verification mechanism significantly enhances signal reliability but requires adaptability adjustments during range-bound periods. Future enhancements through dynamic parameterization and advanced exit strategies could further improve performance stability. Overall, this is a well-structured, logically clear trend-following system with high practical application value.
/*backtest
start: 2024-04-24 00:00:00
end: 2025-04-23 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"TRX_USD"}]
*/
//@version=5
//@WunderTrading
strategy("Nirvana Mode v1.0", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_every_tick=true)
// === INPUTS ===
emaShort = ta.ema(close, 8)
emaLong = ta.ema(close, 21)
rsi = ta.rsi(close, 14)
supertrendFactor = 3.0
supertrendPeriod = 10
[supertrend, direction] = ta.supertrend(supertrendFactor, supertrendPeriod)
volumeAvg = ta.sma(volume, 10)
volumeSpike = volume > volumeAvg * 1.8
// === ENTRY CONDITIONS ===
longCond = ta.crossover(emaShort, emaLong) and rsi > 50 and direction == 1 and volumeSpike
shortCond = ta.crossunder(emaShort, emaLong) and rsi < 50 and direction == -1 and volumeSpike
exitCond = ta.cross(close, emaLong)
// === PLOT & SIGNALS ===
plot(emaShort, color=color.orange)
plot(emaLong, color=color.blue)
plotshape(longCond, title="BUY", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(shortCond, title="SELL", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
plotshape(exitCond, title="EXIT", location=location.bottom, color=color.gray, style=shape.xcross, size=size.tiny)
// === STRATEGY ORDERS ===
if (longCond)
strategy.entry("ENTER LONG", strategy.long, comment="ENTER-LONG_BITGET_BTCUSDT_NirvanaMode-v1.0_15M_hmq9xx")
if (shortCond)
strategy.entry("ENTER SHORT", strategy.short, comment="ENTER-SHORT_BITGET_BTCUSDT_NirvanaMode-v1.0_15M_hmq9xx")
if (exitCond)
strategy.close_all(comment="EXIT-ALL_BITGET_BTCUSDT_NirvanaMode-v1.0_15M_hmq9xx")
// === ALERT ===
alertcondition(longCond, title="Long Signal", message="ENTER-LONG_BITGET_BTCUSDT_NirvanaMode-v1.0_15M_hmq9xx")
alertcondition(shortCond, title="Short Signal", message="ENTER-SHORT_BITGET_BTCUSDT_NirvanaMode-v1.0_15M_hmq9xx")
alertcondition(exitCond, title="Exit Signal", message="EXIT-ALL_BITGET_BTCUSDT_NirvanaMode-v1.0_15M_hmq9xx")