Indicators/probuilder · probacktest · proorder · proscreener

ElderRayBullPower

ElderRayBullPower in ProBuilder returns Elder Ray Bull Power, the distance between each bar's high and a moving average, measuring bullish buying pressure.

Syntax

probuilder
ElderRayBullPower[period, MAtype](price)

Parameters

NameTypeDefaultDescription
periodinteger13Lookback period of the moving average used as the value reference.
MAtypeinteger1Moving average type: 0 = simple, 1 = exponential, 2 = weighted, 3 = Wilder, 4 = triangular, 5 = end point, 6 = time series.
priceprice sourcecloseSeries the moving average is computed on, for example close, open, high, or low.

Formula

code
BullPower = high - MA[period, MAtype](price)

With the defaults, Bull Power is the bar's high minus a 13-period exponential moving average of the close.

How it works

Bull Power is one half of the Elder-Ray Index developed by Dr. Alexander Elder. The moving average stands for the market's agreed value over the lookback window. The bar's high marks the furthest point buyers managed to lift price during the bar. The difference between the two measures the maximum force bulls applied above fair value on that bar.

On most bars the value is positive, because highs typically sit above the average. Expanding positive values show buyers gaining strength. Values shrinking toward zero show buyers losing the ability to lift price above its average, and a negative reading means even the bar's high stayed under the average, a bar completely controlled by sellers.

Bull Power is normally analyzed next to ElderRayBearPower, which performs the mirror calculation on the bar's low. Together with the slope of the reference EMA they form the complete Elder-Ray method: trade in the direction of the EMA, and time entries with the opposing side's fading power.

Examples

Example 1, Bull Power histogram (Indicator)

probuilder
// Bull Power with a 13-period exponential average of the close
bullPower = ElderRayBullPower[13, 1](close)
RETURN bullPower AS "Bull Power", 0 AS "Zero line"

The standard Bull Power pane, the bar's high minus a 13-period EMA, plotted around a zero line.

Example 2, Elder-style short setup (ProOrder)

probuilder
// Sell short when the trend is down and buying pressure is failing
ema  = ExponentialAverage[13](close)
bull = ElderRayBullPower[13, 1](close)

IF NOT ShortOnMarket THEN
  // Falling EMA, positive Bull Power that is contracting
  IF ema < ema[1] AND bull > 0 AND bull < bull[1] THEN
    SELLSHORT 1 CONTRACT AT MARKET
  ENDIF
ELSE
  IF close > ema THEN
    EXITSHORT AT MARKET
  ENDIF
ENDIF

The classic Elder-Ray short condition: the EMA slopes down while Bull Power is positive but shrinking, showing buyers failing to sustain strength against the trend.

Example 3, Screening for strong bullish control (ProScreener)

probuilder
bull = ElderRayBullPower[13, 1](close)
bear = ElderRayBearPower[13, 1](close)
// Both sides above the average, full bullish control
SCREENER[bull > 0 AND bear > 0](bull AS "Bull Power")

Returns instruments where both Bull Power and Bear Power are positive, meaning the whole bar, high and low alike, traded above the 13-period EMA.

Interpretation

ReadingMeaning
Strongly positive and risingBuyers dominate and are strengthening.
Positive but fallingBuying pressure is fading, notable when the trend is down.
Near zeroHighs are capped around the average, balanced conditions.
NegativeEven the bar's high stayed below the average, sellers control the bar.

The usual combined reading: rising EMA plus Bull Power making new highs confirms an uptrend, while a price high that Bull Power fails to confirm is a bearish divergence, buyers reached less far above value even though price printed higher. As with Bear Power, the level is in price units and should be judged by direction and shape rather than absolute size.

Common errors and gotchas

  • Wrong bracket placement. Parameters go in square brackets, the price source in parentheses: ElderRayBullPower[13, 1](close). A call like ElderRayBullPower(13, close) does not compile.
  • Invalid MAtype code. The second parameter selects the average type and must be an integer from 0 to 6. Any other value does not correspond to a defined moving average.
  • Scale is instrument dependent. Bull Power is a price difference, not a normalized oscillator. Fixed numeric thresholds break when moved between instruments or timeframes.
  • Ignoring the trend filter. Strong positive Bull Power inside a downtrend often marks a rally into resistance. The Elder-Ray method reads Bull Power against the EMA slope, not in isolation.