Skip to content

EMA (Exponential Moving Average)

Overview

The Exponential Moving Average (EMA) is one of the most widely used moving averages in technical analysis, offering a significant improvement over the Simple Moving Average by giving more weight to recent price data. Developed to address the SMA's lag problem, the EMA responds more quickly to price changes while still providing trend-smoothing capabilities. This makes it particularly valuable for traders who need faster signals without sacrificing too much noise reduction, and it serves as the foundation for many popular indicators including MACD and the Percentage Price Oscillator.

Parameters

Parameter Type Default Description
input_data Array Required The price data array (typically close prices)
period Integer 30 Number of periods for EMA calculation

Parameter Details

Note: Array elements should be ordered from oldest to newest (chronological order)

input_data - Typically uses closing prices for standard trend analysis - Can use other price types (high, low, open, typical price) for specialized applications - Requires at least period number of data points for initial calculation - More historical data provides better context for the EMA to stabilize - First EMA value is calculated as SMA, then exponential smoothing begins

period (time_period) - No universally "correct" period; choice depends on trading timeframe and strategy - Common periods and their uses: - 9-12 periods: Fast EMA for short-term signals, MACD fast line - 20-26 periods: Medium-term trend, MACD slow line - 50 periods: Intermediate trend indicator - 200 periods: Long-term trend, major support/resistance - Shorter periods are more responsive but generate more whipsaws - Longer periods are smoother but have greater lag - Recommended ranges: - Day trading: 8-21 periods - Swing trading: 20-50 periods - Position trading: 50-200 periods

Usage

Basic Usage

require 'sqa/tai'

prices = [44.34, 44.09, 44.15, 43.61, 44.33, 44.83,
          45.10, 45.42, 45.84, 46.08, 46.03, 46.41]

# Calculate 12-period EMA
ema = SQA::TAI.ema(prices, period: 12)

puts "Current EMA: #{ema.last.round(2)}"

With Custom Parameters

# Calculate multiple EMAs for trend analysis
ema_12 = SQA::TAI.ema(prices, period: 12)  # Fast EMA
ema_26 = SQA::TAI.ema(prices, period: 26)  # Slow EMA
ema_50 = SQA::TAI.ema(prices, period: 50)  # Trend filter
ema_200 = SQA::TAI.ema(prices, period: 200) # Long-term trend

puts "12-period EMA: #{ema_12.last.round(2)}"
puts "26-period EMA: #{ema_26.last.round(2)}"
puts "50-period EMA: #{ema_50.last.round(2)}"
puts "200-period EMA: #{ema_200.last.round(2)}"

Understanding the Indicator

What It Measures

The Exponential Moving Average measures the weighted average price over a specified period with emphasis on recent data:

  • Trend Direction: Shows the overall direction of price movement by smoothing out fluctuations while emphasizing recent prices
  • Momentum: The slope and distance of the EMA from price indicates trend strength
  • Support/Resistance: Acts as dynamic support in uptrends and resistance in downtrends
  • Fair Value: Represents a weighted consensus price level favoring recent data
  • Rate of Change: More responsive to recent price changes than SMA, making it better for identifying trend shifts

EMA answers the question: "What has been the weighted average price with emphasis on recent action, and is current price accelerating away from or converging toward that average?"

Calculation Method

The EMA is calculated using exponential smoothing:

  1. Calculate Multiplier: Determine the weighting multiplier based on the period
  2. Initialize with SMA: First EMA value uses SMA of first period prices
  3. Apply Exponential Formula: Each subsequent EMA uses previous EMA and current price
  4. Continuous Smoothing: The exponential nature means all past data influences current value, but with exponentially decreasing weight

Formula:

Multiplier = 2 / (period + 1)
EMA = (Price - Previous EMA) × Multiplier + Previous EMA

Alternative form:
EMA = Price × Multiplier + Previous EMA × (1 - Multiplier)

Example for 12-period EMA:
Multiplier = 2 / (12 + 1) = 0.1538 (15.38%)
Current price gets 15.38% weight
Previous EMA gets 84.62% weight

Example calculation:
Previous EMA = 45.00
Current Price = 46.00
EMA = (46.00 - 45.00) × 0.1538 + 45.00 = 45.15

Indicator Characteristics

  • Range: Unbounded; moves with price
  • Type: Trend-following overlay indicator with momentum characteristics
  • Lag: Moderate lag; less than SMA but more than DEMA/TEMA
  • Best Used: Trending markets, momentum strategies, crossover systems
  • Limitations: More reactive than SMA means more whipsaws in ranging markets; still lags price action

Interpretation

Value Ranges

The EMA itself doesn't have fixed ranges, but its relationship to price provides signals:

  • Price Above EMA: Bullish condition; price is trading above weighted average. Suggests uptrend or bullish momentum. The farther above, the stronger the bullish signal.
  • Price At EMA: Equilibrium point; price at weighted fair value. Often acts as support or resistance. Common pullback target in trends.
  • Price Below EMA: Bearish condition; price is trading below weighted average. Suggests downtrend or bearish momentum. The farther below, the stronger the bearish signal.
  • Distance from EMA: Large deviations suggest overbought/oversold conditions. Expect mean reversion. Distance measurement more relevant than with SMA due to EMA's responsiveness.

Key Levels

  • 12-period EMA: Popular fast EMA for short-term trend. Used in MACD calculation. Price above = short-term uptrend.
  • 26-period EMA: Popular slow EMA for medium-term trend. Used in MACD calculation. Price above = medium-term uptrend.
  • 50-period EMA: Important intermediate trend indicator. Acts as support/resistance. Widely watched by swing traders.
  • 200-period EMA: Major long-term trend indicator. Key support/resistance level. Institutional focus level.
  • Multiple EMA Alignment: When price > EMA12 > EMA26 > EMA50 > EMA200, this shows strong uptrend with all timeframes aligned.

Signal Interpretation

How to read EMA signals:

  1. Trend Direction
  2. EMA sloping upward: Uptrend
  3. EMA sloping downward: Downtrend
  4. EMA flat: Consolidation or range-bound
  5. Steeper slope indicates stronger trend

  6. Trend Strength

  7. Price far above rising EMA: Strong uptrend
  8. Price hugging rising EMA: Moderate uptrend
  9. Price oscillating around EMA: Weak or no trend
  10. Multiple EMAs fanning out: Strong trending market

  11. Reversal Signals

  12. Price crosses above EMA: Potential bullish reversal
  13. Price crosses below EMA: Potential bearish reversal
  14. EMA crossovers: Faster EMA crossing slower EMA signals trend change
  15. Failed EMA tests: Price unable to cross EMA suggests trend continuation

Trading Signals

Buy Signals

Specific conditions that generate buy signals:

  1. Primary Signal: Price crosses above EMA from below
  2. Indicates momentum shift from bearish to bullish
  3. Most reliable when EMA is flat or beginning to slope upward
  4. Stronger signal if price closes decisively above (not just touching)

  5. Confirmation Signal: Price pulls back to EMA and bounces (EMA acts as support)

  6. Shows EMA is respected as support level
  7. Provides lower-risk entry in established uptrend
  8. Best when volume declines on pullback, increases on bounce

  9. EMA Crossover (Golden Cross): Faster EMA crosses above slower EMA

  10. Classic bullish signal (e.g., 12 EMA crosses above 26 EMA)
  11. Indicates acceleration of upward momentum
  12. Stronger when both EMAs are rising

Example Scenario:

When price crosses above 50-period EMA while the EMA is rising,
consider a long position. Confirm with:
- Volume increasing on the breakout
- Price closing above EMA (not just wicking above)
- 200-period EMA also sloping upward or price above it
- RSI confirming momentum (above 50)
- Set stop loss below recent swing low or below EMA
- Target: Next resistance level or use trailing stop with EMA

Sell Signals

Specific conditions that generate sell signals:

  1. Primary Signal: Price crosses below EMA from above
  2. Indicates momentum shift from bullish to bearish
  3. Most reliable when EMA is flat or beginning to slope downward
  4. Stronger signal if price closes decisively below (not just touching)

  5. Confirmation Signal: Price rallies to EMA and rejects (EMA acts as resistance)

  6. Shows EMA is respected as resistance level
  7. Provides lower-risk entry for shorts in established downtrend
  8. Best when volume declines on rally, increases on rejection

  9. EMA Crossover (Death Cross): Faster EMA crosses below slower EMA

  10. Classic bearish signal (e.g., 12 EMA crosses below 26 EMA)
  11. Indicates acceleration of downward momentum
  12. Stronger when both EMAs are falling

Example Scenario:

When price crosses below 50-period EMA while the EMA is falling,
consider closing longs or initiating shorts. Confirm with:
- Volume increasing on the breakdown
- Price closing below EMA (not just wicking below)
- 200-period EMA also sloping downward or price below it
- RSI confirming weakness (below 50)
- Set stop loss above recent swing high or above EMA
- Target: Next support level or use trailing stop with EMA

Divergence Analysis

While EMA itself doesn't show divergence, comparing price action to EMA behavior provides insights:

Bullish Setup: - Pattern: Price makes lower low but remains above rising EMA, or bounces strongly from EMA - Identification: EMA continues rising while price corrects, EMA slope remains positive - Significance: Suggests correction within uptrend, buying opportunity - Reliability: High when price stays above EMA during correction, volume declines on pullback - Example: Stock drops from $100 to $95, touching EMA at $94. EMA still rising. Price bounces back above $97. Indicates healthy pullback in uptrend.

Bearish Setup: - Pattern: Price makes higher high but EMA begins flattening or falling, or price rejects EMA from below - Identification: Price momentum weakening despite higher prices, EMA slope decreasing or turning negative - Significance: Suggests weakening uptrend, potential reversal - Reliability: High when price starts oscillating around EMA after strong trend, volume decreases on rallies - Example: Stock rallies from $100 to $105 but EMA at $102 is flattening. Price starts closing below EMA. Indicates momentum loss.

Best Practices

Optimal Use Cases

When EMA works best:

  • Market conditions: Most effective in trending markets with clear directional moves. Less useful in choppy, range-bound markets where frequent EMA crosses generate whipsaws. Outperforms SMA in volatile trending markets due to responsiveness.
  • Time frames: Works on all timeframes. Most popular on daily charts for 12/26/50/200 EMA. Hourly charts common for day trading with 9/21 EMA. Works well on 4-hour and weekly charts.
  • Asset classes: Universal application across stocks, forex, commodities, cryptocurrencies. Particularly effective for momentum-driven assets. Popular in forex and crypto due to 24-hour markets and trending behavior.

Combining with Other Indicators

Recommended indicator combinations:

  • With Momentum Indicators (RSI, MACD): Use EMA for trend direction, RSI/MACD for entry timing. Only take RSI buy signals when price is above EMA (with-trend trades). MACD already uses EMAs (12/26), so 50/200 EMA adds additional trend context.

  • With Volume Indicators (OBV, Volume): Confirm EMA crossovers with volume. Valid breakouts above EMA should show increased volume. Low volume EMA crossovers are less reliable and often fail. Volume declining as price approaches EMA in uptrend = healthy pullback.

  • With Other Moving Averages: Multiple EMA periods (12/26/50/200) create trend hierarchy. Combine EMA with SMA for different perspectives (EMA for signals, SMA 200 for major trend). EMA ribbon (8/13/21/34/55) shows trend strength through alignment or compression.

Common Pitfalls

What to avoid:

  1. Using single EMA in isolation: EMA alone generates many false signals, especially in ranging markets. Always combine with trend confirmation (ADX), volume, or momentum indicators. Need multiple timeframe or multiple EMA confirmation.

  2. Chasing crossovers in choppy markets: In ranging markets, price crosses EMA frequently causing whipsaws. Use ADX (< 20 suggests chop) or ATR to identify ranging conditions. Consider using longer EMA periods or different indicators (Stochastic, RSI) in ranges.

  3. Over-optimizing EMA periods: Constantly adjusting EMA period to fit past data leads to curve-fitting. What works historically may not work forward. Stick to common periods (12, 26, 50, 200) used by majority of traders, creating self-fulfilling prophecy effect.

  4. Ignoring the exponential lag: While EMA is faster than SMA, it still lags price. In fast-moving markets, EMA crosses happen after significant moves already occurred. Use price action and support/resistance for entries, EMA for trend confirmation.

Parameter Selection Guidelines

How to choose optimal parameters:

  • Short-term trading (day trading):
  • Period: 9-21 for trend direction
  • Crossover pairs: 9/21 or 12/26 (MACD standard)
  • Focus: Intraday trends, quick reversals
  • Best timeframes: 5-min, 15-min, 1-hour charts

  • Medium-term trading (swing trading):

  • Period: 20-50 for swing moves
  • Crossover pairs: 20/50 or 13/48
  • Focus: Multi-day/week trends, overnight positions
  • Best timeframes: Hourly, 4-hour, daily charts

  • Long-term trading (position trading):

  • Period: 50-200 for major trends
  • Crossover pairs: 50/200 (institutional favorite)
  • Focus: Monthly/quarterly trends, major support/resistance
  • Best timeframes: Daily, weekly charts

  • Backtesting approach: Test various periods on historical data. Calculate win rate and profit factor for price-EMA crosses and EMA crossovers. Optimal period shows best risk/reward for your specific market, timeframe, and strategy. Consider transaction costs - more signals isn't always better.

Practical Example

Complete trading example with context:

require 'sqa/tai'

# Historical price data for a stock
historical_prices = [
  44.34, 44.09, 44.15, 43.61, 44.33, 44.83, 45.10, 45.42,
  45.84, 46.08, 46.03, 46.41, 46.22, 45.64, 46.21, 46.25,
  46.08, 46.46, 46.57, 45.95, 46.50, 46.02, 45.55, 46.08,
  46.34, 46.00, 45.75, 46.45, 47.02, 46.87, 47.20, 47.55,
  47.85, 48.10, 48.35, 48.60, 48.85, 49.10, 49.35, 49.60,
  49.85, 50.10, 50.35, 50.60, 50.85, 51.10, 51.35, 51.60,
  51.85, 52.10, 52.35, 52.60
]

# Calculate multiple EMAs for comprehensive analysis
ema_12 = SQA::TAI.ema(historical_prices, period: 12)
ema_26 = SQA::TAI.ema(historical_prices, period: 26)
ema_50 = SQA::TAI.ema(historical_prices, period: 50)

# Current values
current_price = historical_prices.last
current_ema_12 = ema_12.last
current_ema_26 = ema_26.last
current_ema_50 = ema_50.last

puts "=== EMA Trading Analysis ==="
puts "Current Price: #{current_price.round(2)}"
puts "12-period EMA: #{current_ema_12.round(2)}"
puts "26-period EMA: #{current_ema_26.round(2)}"
puts "50-period EMA: #{current_ema_50.round(2)}"
puts

# Determine overall trend
if current_price > current_ema_12 && current_ema_12 > current_ema_26 && current_ema_26 > current_ema_50
  trend = "STRONG UPTREND"
  bias = "BULLISH"
elsif current_price < current_ema_12 && current_ema_12 < current_ema_26 && current_ema_26 < current_ema_50
  trend = "STRONG DOWNTREND"
  bias = "BEARISH"
elsif current_price > current_ema_12 && current_ema_12 > current_ema_26
  trend = "SHORT-TERM UPTREND"
  bias = "CAUTIOUSLY BULLISH"
elsif current_price < current_ema_12 && current_ema_12 < current_ema_26
  trend = "SHORT-TERM DOWNTREND"
  bias = "CAUTIOUSLY BEARISH"
else
  trend = "MIXED/CONSOLIDATING"
  bias = "NEUTRAL"
end

puts "Trend: #{trend}"
puts "Bias: #{bias}"
puts

# Detect EMA crossovers
if ema_12[-2] < ema_26[-2] && ema_12.last > ema_26.last
  puts "BULLISH EMA CROSSOVER!"
  puts "12 EMA crossed above 26 EMA"
  puts "Momentum shifting bullish - consider long positions"
  puts
elsif ema_12[-2] > ema_26[-2] && ema_12.last < ema_26.last
  puts "BEARISH EMA CROSSOVER!"
  puts "12 EMA crossed below 26 EMA"
  puts "Momentum shifting bearish - consider closing longs"
  puts
end

# Check price position relative to EMAs
price_to_ema12_pct = ((current_price - current_ema_12) / current_ema_12 * 100).round(2)
price_to_ema26_pct = ((current_price - current_ema_26) / current_ema_26 * 100).round(2)
price_to_ema50_pct = ((current_price - current_ema_50) / current_ema_50 * 100).round(2)

puts "Price distance from 12 EMA: #{price_to_ema12_pct}%"
puts "Price distance from 26 EMA: #{price_to_ema26_pct}%"
puts "Price distance from 50 EMA: #{price_to_ema50_pct}%"
puts

# Trading signals
if current_price > current_ema_12 && historical_prices[-2] <= ema_12[-2]
  puts "BUY SIGNAL: Price crossed above 12 EMA"
  puts "Entry: #{current_price.round(2)}"
  puts "Stop Loss: #{(current_ema_26 * 0.98).round(2)} (2% below 26 EMA)"
  puts "Target: Extended move or previous resistance"
  puts

elsif current_price < current_ema_12 && historical_prices[-2] >= ema_12[-2]
  puts "SELL SIGNAL: Price crossed below 12 EMA"
  puts "Entry: #{current_price.round(2)}"
  puts "Stop Loss: #{(current_ema_26 * 1.02).round(2)} (2% above 26 EMA)"
  puts "Target: Extended move or previous support"
  puts

elsif price_to_ema12_pct > 5 && bias == "BULLISH"
  puts "TAKE PROFITS SIGNAL"
  puts "Price extended #{price_to_ema12_pct}% above 12 EMA"
  puts "Consider taking partial profits"
  puts "Potential mean reversion to EMA"
  puts

elsif price_to_ema12_pct < -5 && bias == "BEARISH"
  puts "COVER SHORTS SIGNAL"
  puts "Price extended #{price_to_ema12_pct.abs}% below 12 EMA"
  puts "Consider covering partial shorts"
  puts "Potential mean reversion to EMA"
  puts

elsif price_to_ema12_pct.abs < 1
  puts "PRICE AT EMA"
  if bias == "BULLISH"
    puts "Price testing 12 EMA support"
    puts "Watch for bounce - potential buying opportunity"
  elsif bias == "BEARISH"
    puts "Price testing 12 EMA resistance"
    puts "Watch for rejection - potential shorting opportunity"
  else
    puts "Price oscillating around EMA - ranging market"
  end
  puts

else
  puts "NO CLEAR SIGNAL - HOLD CURRENT POSITIONS"
  puts "Waiting for price to reach key levels or EMA crossover"
  puts
end

# Calculate EMA slopes for trend strength
ema12_slope = ((current_ema_12 - ema_12[-5]) / ema_12[-5] * 100).round(2)
ema26_slope = ((current_ema_26 - ema_26[-10]) / ema_26[-10] * 100).round(2)

puts "=== Trend Strength Analysis ==="
puts "12 EMA slope (5 bars): #{ema12_slope}%"
puts "26 EMA slope (10 bars): #{ema26_slope}%"

if ema12_slope > 2
  puts "Strong upward momentum on 12 EMA"
elsif ema12_slope < -2
  puts "Strong downward momentum on 12 EMA"
else
  puts "Flat or weak momentum on 12 EMA"
end

# EMA ribbon analysis (convergence/divergence)
ema_spread = ((current_ema_12 - current_ema_26) / current_ema_26 * 100).round(2)
puts
puts "12/26 EMA Spread: #{ema_spread}%"
if ema_spread.abs > 3
  puts "EMAs diverging - strong trending market"
elsif ema_spread.abs < 1
  puts "EMAs converging - potential consolidation or reversal"
end

Similar Indicators

  • Simple Moving Average (SMA): Equal weighting approach. SMA is smoother but lags more. Use SMA when you want maximum noise reduction and classical analysis. Use EMA when you need faster signals and momentum trading.
  • Weighted Moving Average (WMA): Linear weighting approach. WMA falls between SMA and EMA in responsiveness. Less common but useful for balanced approach without exponential mathematics.
  • DEMA: Double exponential smoothing for even less lag. DEMA is faster than EMA but may generate more whipsaws. Use DEMA in strong trending markets.
  • TEMA: Triple exponential smoothing for minimal lag. TEMA is fastest MA but most sensitive to noise. Use TEMA for momentum trading and strong trends.

Complementary Indicators

  • MACD: Uses 12 and 26 EMAs directly. MACD visualizes EMA crossovers and adds momentum histogram. Perfect combination - use EMA for trend, MACD for timing.
  • Bollinger Bands: Can use EMA as middle band instead of SMA. Creates more responsive volatility bands. Combine for volatility and trend analysis.
  • ADX: Measures trend strength. Use ADX to determine when EMA signals are most reliable (ADX > 25 = strong trend, use EMA crosses with confidence).
  • RSI: Momentum oscillator. Combine RSI with EMA: only take RSI buy signals above EMA (with-trend), only take RSI sell signals below EMA.

Indicator Family

EMA belongs to the moving average family: - SMA: Equal weighting, smoothest, highest lag - EMA: Exponential weighting, balanced, moderate lag - WMA: Linear weighting, between SMA and EMA - DEMA: Double EMA smoothing, low lag - TEMA: Triple EMA smoothing, lowest lag - KAMA: Adaptive weighting based on market efficiency

When to prefer EMA: For most trading applications, EMA provides the best balance of responsiveness and smoothness. It's the most popular MA for active trading, momentum strategies, and crossover systems. EMA's exponential weighting matches how traders naturally think (recent data matters more). Used by majority of traders, creating self-fulfilling prophecy at key EMA levels.

Advanced Topics

Multi-Timeframe Analysis

Use EMA across multiple timeframes for comprehensive analysis:

  • Higher timeframe EMA (daily 50/200 EMA) identifies major trend direction - this is your primary trend filter. Never trade against daily 200 EMA unless you have strong conviction.
  • Lower timeframe EMA (hourly 12/26 EMA) provides precise entry timing within the higher timeframe trend. Use for position entry and exit, but always align with higher timeframe.
  • Strongest trades occur when all timeframes align: price above daily 200 EMA, daily 50 EMA, hourly 50 EMA, and hourly 12 EMA. This is maximum trend alignment.

Example: If daily 50 EMA is rising and price is above daily 200 EMA, only take hourly 12/26 EMA bullish crossover signals. Ignore bearish crossovers against the major trend. Use hourly EMA crosses for entries in direction of daily trend.

Market Regime Adaptation

EMA behavior and effectiveness changes in different market conditions:

  • Trending Markets: EMA works excellently. Price respects EMA as support/resistance. Use EMA crossovers and price-EMA crosses confidently. Faster EMAs (12/26) outperform in strong trends.
  • Ranging Markets: EMA generates many false crossovers. Price oscillates above/below EMA frequently. Consider using longer periods (50+), adding ADX filter (< 20 = range), or switching to oscillators (RSI, Stochastic).
  • High Volatility (expanding ATR): Price makes large moves away from EMA. Increase EMA period to filter noise, or use ATR-based stops instead of EMA-based stops. EMA crossovers less reliable.
  • Low Volatility (contracting ATR): Price stays very close to EMA. Small moves trigger signals. Tighten stop losses and take quicker profits. Watch for volatility expansion (often follows contraction).
  • Breakout Markets: EMA crossovers lag initial breakout but confirm trend. Use price action for breakout entry, EMA for trend confirmation and trailing stops.

Statistical Validation

EMA reliability metrics and considerations:

  • Crossover Success Rate: EMA crossovers (12/26) have approximately 55-65% success rate in trending markets, but only 40-50% in ranging markets. Always identify trend regime first using ADX or visual analysis.
  • Price-EMA Cross Effectiveness: Price crossing 50 EMA has approximately 60-70% success rate when EMA slope confirms (crossing up with rising EMA, crossing down with falling EMA). Only 45-50% when crossing against EMA slope.
  • EMA as Support/Resistance: 50 EMA acts as support/resistance with approximately 65-75% success rate in established trends. First touch usually holds better than subsequent touches. 200 EMA is stronger (70-80% hold rate).
  • Optimal EMA Spacing: EMAs too close (9/12) generate excessive signals. EMAs too far (12/100) miss opportunities. 12/26 (MACD standard) and 20/50 provide optimal signal-to-noise ratio for most markets.
  • Whipsaw Rate: EMA generates approximately 30-40% false signals in ranging markets. Using ADX filter (only trade when ADX > 20 or 25) can reduce whipsaws by 50-60%.

References

  • Appel, Gerald. "Technical Analysis: Power Tools for Active Investors" (2005) - Developer of MACD, which popularized EMA usage
  • Murphy, John J. "Technical Analysis of the Financial Markets" (1999) - Comprehensive coverage of moving averages including EMA
  • Kirkpatrick, Charles D. and Dahlquist, Julie R. "Technical Analysis: The Complete Resource for Financial Market Technicians" (2010)
  • StockCharts: Moving Averages - EMA - Educational resource for EMA analysis
  • TradingView: Exponential Moving Average Guide
  • Wilder, J. Welles. "New Concepts in Technical Trading Systems" (1978) - Introduced exponential smoothing concepts

See Also