EA-1102 · Momentum

Exp_BullsBears

This EA trades based on the crossover of Bulls and Bears power indicators, entering long when bulls overpower bears and short when bears overpower bulls. It uses customizable smoothing algorithms for signal generation and includes fixed stop-loss/take-profit levels with position closing logic. Trade execution is restricted to new bar formation on the specified timeframe.

Open the interactive view (equity curve, symbol switch)

Key facts

CategoryMomentum
RiskMedium
Blow-up riskLow
Rating★★★☆☆
TypeTrading EA
TimeframesH1, H4, D1
IndicatorsBullsBears (Custom), LWMA, Volume
AuthorCopyright © 2012, Nikolay Kositsin

Backtest results (H1, about 1 year)

SymbolP&LAnnualMax DDTradesWin rateSharpeRecoveryLosing streakPer tradeStatus
EURUSD0.00%0.00%0.00%0—————Run error
GBPUSD0.00%0.00%0.00%0—————Run error
USDJPY0.00%0.00%0.00%0—————Run error
XAUUSD0.00%0.00%0.00%0—————Run error

Converted from MQL5 to Python and run with the same rules for every EA. Positions use MT5 lot sizes (100,000 units per FX lot, 100 oz per gold lot) with 1:100 leverage, one order at a time, and a stop-out below 10% of the starting balance. Sharpe is computed from the equity curve. Results marked as unreliable are shown for completeness only.

Blow-up risk: No blow-up pattern found

None of the usual blow-up patterns were found in the code, and the account was not stopped out in our backtests. That is not a guarantee: any EA can lose money.

High: stopped out in our backtest, or martingale/grid sizing without a stop loss. Elevated: martingale or grid sizing with a stop loss, or several positions at once without a stop loss. What the label means and what we found →

Strategy analysis

The strategy concept is based on comparing market buying and selling power using the custom BullsBears indicator to detect shifts in bullish/bearish momentum. Entry conditions: a buy signal is generated when the UpTrend line exceeds the DnTrend line on the previous bar and the prior bar showed the opposite or equal relationship; a sell signal is the mirror opposite. Exit conditions include fixed stop-loss at 1000 points and take-profit at 2000 points, plus directional close signals where a new bullish crossover closes short positions and a bearish crossover closes long positions. Position sizing is controlled by the MM parameter where negative values represent fixed lot sizes and positive values represent a share of the deposit. Money management lacks dynamic adjustment mechanisms, and the wide 1000-point SL with 2000-point TP suits medium-to-long-term trend following rather than short-term scalping.

Strengths

  • Clear strategy logic based on bulls/bears power crossover signals, easy to understand and verify
  • Supports multiple smoothing algorithms (LWMA etc.) with flexible parameters for adaptability
  • Independent buy/sell open and close permission controls allow flexible directional configuration
  • Signal calculation only on new bar formation avoids redundant per-tick computation overhead
  • 2:1 reward-to-risk ratio (TP 2000 / SL 1000 points) provides positive expectancy potential

Weaknesses

  • No spread filter, which may generate false signals and unnecessary trades in high-spread environments
  • The 1000-point stop-loss is very wide, potentially leading to large losses during volatile markets
  • No trailing stop mechanism to lock in floating profits during favorable moves
  • OnInit declares a local CXMA object that is destroyed after min_rates_total calculation, which is inelegant design
  • Lacks multi-timeframe confirmation, relying on a single indicator signal prone to false breakout trades

Possible improvements

  • Add spread filter and volatility filter (e.g., ATR) to avoid opening positions under unfavorable market conditions
  • Implement trailing stop functionality to progressively lock in profits during favorable trends, improving reward-to-risk ratio
  • Introduce multi-timeframe confirmation, only allowing trades when the higher timeframe trend aligns, reducing false signals

Risk assessment

Overall risk: Medium

  • Stop-loss of 1000 points is very large, single trade loss can be significant with no dynamic SL adjustment
  • No check on existing position count, risking duplicate openings in the same direction
  • When MM is negative it is used directly as lot size with no minimum/maximum lot boundary validation

Evaluation scores

Code quality3.0
Strategy logic3.0
Risk management2.0
Robustness3.0
Innovation2.0
Documentation2.0
Overall2.5

Parameters

ParameterDefaultDescription
MM-0.1Deposit percentage or fixed lots; negative value = lot size
StopLoss_1000Stop loss in points
TakeProfit_2000Take profit in points
Deviation_10Maximum price deviation in points (slippage tolerance)
BuyPosOpentrueAllow opening long positions
SellPosOpentrueAllow opening short positions
BuyPosClosetrueAllow closing long positions
SellPosClosetrueAllow closing short positions
InpInd_TimeframePERIOD_H4Indicator timeframe
XMA_MethodMODE_LWMASmoothing method
XLength12Smoothing depth
XPhase15Smoothing parameter (JJMA range -100 to +100)
VolumeTypeVOLUME_TICKVolume type
SignalBar1Bar index for entry signal

Similar Momentum EAs

Backtests are historical simulations and do not guarantee future results. Not financial advice.

Get the weekly Arena report

One email a week: ranking changes, new signals and new research. No spam; unsubscribe any time.