Exp_AroonHornSign
This EA trades based on signals from the custom AroonHornSign indicator, opening buy positions on upward momentum signals and sell positions on downward momentum signals. It supports configurable money management modes, stop-loss/take-profit, and separate toggles for opening and closing positions on each signal direction. The strategy also performs a historical bar scan to detect close signals when both open and close permissions are enabled.
Open the interactive view (equity curve, symbol switch)Key facts
Backtest results (H1, about 1 year)
| Symbol | P&L | Annual | Max DD | Trades | Win rate | Sharpe | Recovery | Losing streak | Per trade | Status |
|---|---|---|---|---|---|---|---|---|---|---|
| EURUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | Not convertible yet |
| GBPUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | Not convertible yet |
| USDJPY | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | Not convertible yet |
| XAUUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | Not convertible yet |
Why this EA never traded: no entry rule survived the conversion.
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 the AroonHornSign custom indicator derived from the Aroon indicator, capturing trading signals from price momentum direction changes. Entry conditions: a buy signal triggers when the indicator's upper buffer (index 1) produces a non-zero, non-EMPTY_VALUE value on the specified signal bar, and a sell signal triggers similarly on the lower buffer (index 0). Exit conditions operate in two parts: the signal itself can directly trigger reverse-side position closure (e.g., an up signal triggers sell-side closure), and when both open and close permissions are enabled for buy and sell sides, the EA scans historical bars backward to find earlier opposing signals as close confirmation. Position sizing is controlled by the MM parameter, supporting five modes: percentage of balance, percentage of free margin, percentage after loss on balance/margin, or fixed lot size. Stop-loss and take-profit are set in points with large default values (SL=1000, TP=2000), indicating the strategy targets larger trend movements. The EA uses an IsNewBar mechanism to ensure signal calculation occurs only once per bar, preventing repeated trades on the same bar.
Strengths
- Uses the Aroon momentum indicator to capture trend direction changes with clear and intuitive logic
- Provides flexible money management modes supporting fixed lots and multiple proportional calculation methods
- Buy and sell side open/close controls are independently configurable, adapting to different trading scenarios
- Employs IsNewBar mechanism to limit signal calculation to once per bar, preventing duplicate signal triggers
- Configurable stop-loss and take-profit parameters provide a basic risk control framework
Weaknesses
- The historical bar scanning exit logic has performance concerns, potentially iterating over a very large number of bars when Bars count is high
- The min_rates_total calculation has a bug: line 68 overwrites the MathMax result from line 67 with 3+SignalBar, rendering the ATR/Aroon period check useless
- Lacks spread filter and trading session filter, potentially executing trades under unfavorable conditions
- No position check logic exists, potentially opening duplicate positions in the same direction when one already exists
- Indicator handle failure only prints Russian error messages, hindering international debugging
Possible improvements
- Fix the min_rates_total calculation bug by taking MathMax of MathMax(AroonPeriod,ATR_Period) and 3+SignalBar
- Add a maximum search range limit to the historical bar scan to prevent excessive iteration and performance issues
- Add spread filter and trading session filter to improve live trading quality
- Add position check logic to avoid duplicate entries in the same direction
Risk assessment
Overall risk: Medium
- The min_rates_total calculation bug may allow trading logic to execute even when indicator data is insufficient
- Lack of position checking may cause duplicate entries in the same direction, amplifying risk exposure
- Default stop-loss of 1000 points and take-profit of 2000 points with a large gap means single-trade losses can be significant
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
MM | 0.1 | Money management parameter, lots or ratio |
MMMode | LOT | Margin calculation mode (fixed lots, balance percentage, etc.) |
StopLoss_ | 1000 | Stop loss in points |
TakeProfit_ | 2000 | Take profit in points |
Deviation_ | 10 | Maximum allowed slippage |
BuyPosOpen | true | Allow buy to open |
SellPosOpen | true | Allow sell to open |
BuyPosClose | true | Close long positions on reverse signal |
SellPosClose | true | Allow closing short positions on signal reversal |
InpInd_Timeframe | PERIOD_H4 | trend_arrows indicator timeframe |
AroonPeriod | 9 | Aroon indicator period |
SignalBar | 1 | Signal bar index (0 for current bar) |
Similar Momentum EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.