Forex
EA

EA: Bulls/Bears Power Reversal Expert Advisor

Last updated 2026-07-19

An Expert Advisor (EA) is different from every other download on this site — an indicator only plots a line or fires an alert, while an EA actually sends orders on your behalf. This free EA trades a reversal strategy built around Bulls Power and Bears Power, the pair of Elder-created oscillators that measure how far the market's high and low have pulled away from a moving average: it waits for one side of the market to fully lose control, then opens the opposite trade with an ATR-based Stop Loss, a proportional Take Profit, and risk-based position sizing, all handled automatically.

How the Strategy Works

Bulls Power and Bears Power are both built from the same 13-period EMA (Period_, default 13), just applied to different parts of the bar. Bulls Power is High − EMA: how far above the average the bar's high reached, a read on how much strength buyers showed at their best moment in that bar. Bears Power is Low − EMA: how far below the average the bar's low reached, a read on how much strength sellers showed at their worst moment for buyers. Both values can be positive or negative, and both float freely with no fixed upper or lower bound — there's no 0-100 scale to read here, only the sign and the direction of the cross.

This EA doesn't watch a single line cross a single zero level the way a more conventional momentum EA does. It watches two separate lines for two separate, asymmetric conditions. A BUY signal fires when Bears Power crosses from negative to positive — meaning even the low of the just-closed bar finished above the EMA, so sellers couldn't drag price below the average even at their best moment. A SELL signal fires when Bulls Power crosses from positive to negative — meaning even the high of the just-closed bar finished below the EMA, so buyers couldn't push price above the average even at their best moment. Each condition reads as "the losing side has just been shut out completely," which is a stronger and more specific claim than "the average of two lines swapped order," and it's the reason this EA is filed as a reversal strategy rather than a simple momentum-following one.

Stop Loss, Take Profit, and Position Sizing

PriceTake Profit (TP)Stop Loss (SL)BUY0Bears Power (crosses above zero — sellers have lost control)
Entry conditions: BUY when Bears Power crosses from negative to positive — SELL on the mirrored cross of Bulls Power from positive to negative — SL and TP are placed automatically from ATR

Both Stop Loss and Take Profit are sized from ATR rather than a fixed pip distance, so every stop reflects how much the pair is actually moving right now rather than a number chosen once and left unchanged regardless of conditions. Stop Loss distance is ATRMultiplier × ATR (default multiplier 2.0, ATR calculated over ATRPeriod, default 14), and Take Profit is then set at RiskRewardRatio × Stop Loss distance (default 2.0) — so a BUY placed on a 25-pip ATR-based stop automatically gets a 50-pip target, and every trade this EA opens, on any pair or timeframe, carries the same fixed reward-to-risk proportion.

Position size follows the exact worked-example method taught in Risk Management Basics: RiskPercent (default 1.0%) of account balance is divided by the Stop Loss distance to produce a lot size, so the dollar amount put at risk stays roughly constant trade to trade even as the ATR-based stop distance itself expands and contracts with volatility. A wide stop on a volatile pair yields a smaller lot; a tight stop on a calm pair yields a larger one. The calculated lot is normalized to the broker's minimum, maximum, and step lot size before the order is sent, and UseFixedLot is available as an escape hatch for traders who'd rather trade a constant lot size regardless of account risk — useful for testing, or for small accounts where percentage-based sizing would otherwise round down to the broker's minimum lot anyway.

Entry Conditions

  • BUY — Bears Power crosses from negative (or zero) to positive on the just-closed bar: the previous bar's Bears Power reading was at or below zero, and the current reading is above zero.
  • SELL — Bulls Power crosses from positive (or zero) to negative on the just-closed bar: the previous bar's Bulls Power reading was at or above zero, and the current reading is below zero.

Notice the BUY signal is read off Bears Power, not Bulls Power, and the SELL signal off Bulls Power, not Bears Power — this is easy to get backwards on a first read, so it's worth restating plainly: a BUY happens when the sellers' line proves sellers have lost the floor, and a SELL happens when the buyers' line proves buyers have lost the ceiling. Beyond the signal itself, standard safety mechanics govern every trade this EA can place: it evaluates entry conditions once per new bar only, tracked via the bar's open time, so a single cross can't trigger repeated trades within the same candle; it opens only one position at a time, checked by counting open trades filtered to this EA's own symbol and MagicNumber before any new entry is considered; and it checks the current spread against MaxSpreadPoints (default 30) before sending an order, skipping the entry entirely if the spread is too wide to trade at a reasonable price. Every order is tagged with MagicNumber (default 20260736), so the EA's position-counting logic never touches a trade you opened manually or a trade placed by a different EA running on the same account.

Parameters

  • Period_ (default 13) — the EMA period both Bulls Power and Bears Power are calculated against. This is the classic Elder default; a shorter value reacts faster and produces more crosses, a longer one is smoother but slower to confirm a reversal.
  • ATRPeriod (default 14) — the lookback used to calculate ATR for Stop Loss sizing.
  • ATRMultiplier (default 2.0) — Stop Loss distance = ATR × this multiplier.
  • RiskRewardRatio (default 2.0) — Take Profit distance = Stop Loss distance × this ratio.
  • UseFixedLot — switches position sizing from risk-based to a constant lot size.
  • FixedLotSize (default 0.01) — the lot size used when UseFixedLot is enabled.
  • RiskPercent (default 1.0) — percentage of account balance risked per trade, used to calculate lot size when UseFixedLot is disabled.
  • MaxSpreadPoints (default 30) — skips new entries while the spread is wider than this, to avoid opening trades at a bad price during illiquid conditions.
  • MagicNumber (default 20260736) — tags every order this EA places so its position-management logic never touches trades opened by hand or by a different EA.
  • EnableTrading — a master on/off switch, useful for pausing the EA without removing it from the chart.

Why "One Side Loses Control" Instead of a Simple Zero Cross

It's worth contrasting this design against the site's other zero-line-cross EA, the Awesome Oscillator momentum EA, because the two look similar at a glance — both trade a cross of zero with no secondary confirmation — but the underlying claim each one makes is genuinely different. The Awesome Oscillator EA watches a single line built from two moving averages of the bar's midpoint; a zero cross there means the fast average has overtaken the slow one, a statement purely about momentum shifting from one speed to another. This EA instead watches two separate lines, each built from a different, more extreme part of the bar (the high for Bulls Power, the low for Bears Power), and each condition it trades is really a statement about exhaustion: not "momentum flipped," but "the side that was losing just got completely shut out, even at its best moment in the bar."

That distinction matters for what each strategy is good at catching. A momentum EA tends to catch a market that's accelerating in a fresh direction — it's a continuation-flavored signal even though it's framed as a cross. This EA is built to catch the opposite situation: a market that has been moving one way, where the losing side finally fails to make any dent at all, which is the classic setup for a reversal. The tradeoff is that Bulls Power and Bears Power react to individual bars' extremes rather than to a smoothed average, so a single unusually wide bar can flip the reading even without a genuine change in the broader trend — which is exactly why the next section on caution matters so much for this particular EA. Pairing this signal with a trend-strength read like ADX or the broader structure discussed in Trend vs Range is a natural way to filter out reversal signals that fire in the middle of a trend still under full control.

Installation and Setup

EAs install into a different folder than indicators, and this is the step people miss most often.

  1. Download the file below for your platform.
  2. Open MetaTrader → click FileOpen Data Folder.
  3. Place the file in MQL4/Experts (MetaTrader 4) or MQL5/Experts (MetaTrader 5) — not the Indicators folder.
  4. Restart MetaTrader, then drag the EA from the Navigator window onto a chart.
  5. Enable AutoTrading (MT4) or Algo Trading (MT5) in the toolbar — the EA will not place any trades while this is off, even if it's attached to a chart.
  6. Review and adjust the input parameters in the EA's settings dialog before confirming.

A Word of Caution

Test on a demo account first, across different market conditions and multiple pairs, before risking real money — a backtest or a good run on a demo account never guarantees future results. This EA can and will lose on individual trades, and its biggest weakness is exactly the situation its signal is most tempted by: a reversal cross that fires in the middle of a genuinely strong trend, where the "losing side" that just got shut out for one bar goes right back to losing again a few bars later, and the reversal never actually arrives. Bulls Power and Bears Power react to a single bar's high or low rather than a smoothed value, so an unusually large bar inside an otherwise intact trend can trigger a cross that has nothing to do with an actual change in control. Consider pairing this EA with a trend-strength filter such as ADX before trusting a reversal signal on a pair currently in a strong directional move. Both the MT4 and MT5 files below are source code — open and read them fully, and understand exactly what every parameter does, before attaching this EA to a live account. This content is general education, not personalized investment advice.

Download the EA

How to Install — MetaTrader 4

  1. Download the bulls-bears-power-reversal-ea.mq4 file below.
  2. Open MetaTrader 4 → click FileOpen Data Folder.
  3. Place the file in the MQL4/Experts folder.
  4. Restart MetaTrader 4, then drag the EA from the Navigator window onto the chart.

How to Install — MetaTrader 5

  1. Download the bulls-bears-power-reversal-ea.mq5 file below.
  2. Open MetaTrader 5 → click FileOpen Data Folder.
  3. Place the file in the MQL5/Experts folder.
  4. Restart MetaTrader 5, then drag the EA from the Navigator window onto the chart.

Both files are source code — open and review the full code before using it, for your own safety.

Download bulls-bears-power-reversal-ea.mq4

For MetaTrader 4 — this is source code (.mq4), open and review it fully before using it.

Download File

Download bulls-bears-power-reversal-ea.mq5

For MetaTrader 5 — this is source code (.mq5), open and review it fully before using it.

Download File