EFX S3 Enhanced EMA

Multi-timeframe EMA alignment system with signal arrows. Built on the S3 strategy 8, 21, and 50 EMA ribbon with momentum filter confirmation and dynamic colour coding.

EMATrend FollowingS3 Strategy
TradingViewMT5

About This Indicator

The EFX S3 Enhanced EMA is the visual companion to EntraFX's S3 EMA Alignment strategy. It plots three EMAs as a ribbon system that clearly shows trend direction, momentum, and potential entry zones. Signal arrows appear when all three EMAs align and momentum confirms the move.

Unlike basic EMA crossovers, each EMA line changes colour from green (rising) to red (falling) giving you instant momentum context on every bar without needing to calculate angles manually.

EMA Configuration

EMA 8 Fast ribbon. Price reaction trigger.
EMA 21 Medium ribbon. Trend direction confirmation.
EMA 50 Slow ribbon. Bias and pullback target.

Key Features

  • Three-EMA ribbon system (8, 21, 50) with ribbon fill
  • Dynamic colour per EMA: green = rising, red = falling
  • Signal arrows: bullish (▲) when all 3 EMAs aligned up + momentum filter
  • Signal arrows: bearish (▼) when all 3 EMAs aligned down + momentum filter
  • Multi-timeframe mode: overlay higher-TF EMA on current chart
  • Momentum filter (RSI or volume confirmation selectable)
  • Alerts on new signal arrow formation

Pine Script Preview

//@version=5 // EFX S3 Enhanced EMA EntraFX // © 2026 EntraFX. Pro licence required. indicator("EFX S3 Enhanced EMA", overlay=true) len1 = input.int(8, "Fast EMA") len2 = input.int(21, "Mid EMA") len3 = input.int(50, "Slow EMA") useRSI = input.bool(true, "RSI Momentum Filter") rsiLen = input.int(14, "RSI Length") e1 = ta.ema(close, len1) e2 = ta.ema(close, len2) e3 = ta.ema(close, len3) col1 = e1 > e1[1] ? color.new(#a78bfa, 0) : color.new(#ef4444, 0) col2 = e2 > e2[1] ? color.new(#38bdf8, 0) : color.new(#ef4444, 0) col3 = e3 > e3[1] ? color.new(#fb923c, 0) : color.new(#ef4444, 0) plot(e1, "EMA 8", col1, 1.5) plot(e2, "EMA 21", col2, 2.0) plot(e3, "EMA 50", col3, 2.2) // Signal: all 3 EMAs aligned rsiVal = ta.rsi(close, rsiLen) bullSignal = e1 > e2 and e2 > e3 and (not useRSI or rsiVal > 50) bearSignal = e1 < e2 and e2 < e3 and (not useRSI or rsiVal < 50) // Only fire on new alignment bullNew = bullSignal and not bullSignal[1] bearNew = bearSignal and not bearSignal[1] plotshape(bullNew, "Bull Signal", shape.triangleup, location.belowbar, color.green, size=size.small) plotshape(bearNew, "Bear Signal", shape.triangledown, location.abovebar, color.red, size=size.small) alertcondition(bullNew, "S3 Bullish Signal", "EFX S3: Bullish alignment signal") alertcondition(bearNew, "S3 Bearish Signal", "EFX S3: Bearish alignment signal")