Exp_Arrows_Curves
This EA trades based on signals from the custom Arrows_Curves indicator, opening buy positions on buy arrows and sell positions on sell arrows. It supports configurable money management, stop loss/take profit, and separate permissions for entry and exit. The strategy also searches historical bars for stop signals to close existing positions when no direct close signal is generated.
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 trend-following based on arrow signals generated by the custom Arrows_Curves indicator. Entry conditions: a buy position opens when indicator buffer 1 (Buy buffer) produces a non-empty, non-zero value on the specified signal bar, and a sell position opens when buffer 0 (Sell buffer) produces such a value. Exit conditions are twofold: first, opposite signals trigger position closes (buy signal closes shorts, sell signal closes longs); second, the EA iterates through historical bars checking stop buffers (buffer 2 for SellStop, buffer 3 for BuyStop) to find stop signals for closing positions when no direct close signal is present. Position sizing is controlled by the MM parameter, where negative values represent fixed lot sizes and positive values represent a share of the deposit per deal. Money management uses fixed stop loss and take profit in points, with a default SL of 1000 points and TP of 2000 points, yielding a 2:1 reward-to-risk ratio. The strategy includes a new bar detection mechanism to prevent repeated trades within the same bar and a deviation parameter to control slippage tolerance.
Strengths
- Reasonable reward-to-risk ratio of 2:1, supporting long-term positive expectancy
- Independent permission controls for buy/sell opening and closing provide high flexibility
- New bar detection mechanism prevents duplicate trades within the same bar
- Supports both deposit share and fixed lot position sizing modes
- Configurable stop loss and take profit parameters provide clear risk control
Weaknesses
- Depends on the custom Arrows_Curves indicator whose internal logic is opaque, making signal quality impossible to evaluate independently
- Historical bar iteration for stop signal search may be inefficient with large datasets, posing performance risks
- No spread filter mechanism, which could lead to unfavorable fills in high-spread environments
- Re-reading Buy/Sell buffers inside the stop signal search loop is logically redundant and wastes resources
- No maximum position count limit or maximum drawdown protection mechanism
Possible improvements
- Add spread filtering and maximum position count limits to enhance risk management capabilities
- Optimize the stop signal search logic by avoiding redundant buffer reads inside the loop, improving both performance and code clarity
Risk assessment
Overall risk: Medium
- Relies on external custom indicator signals whose reliability cannot be independently verified
- Stop signal search iterates historical bars, which may cause execution delays with large datasets
- Lacks maximum drawdown protection and maximum position limits
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
MM | -0.1 | Deposit percentage or fixed lot, negative=lot size |
StopLoss_ | 1000 | Stop loss in points |
TakeProfit_ | 2000 | Take profit in points |
Deviation_ | 10 | Maximum slippage in points |
BuyPosOpen | true | Allow buy position opening |
SellPosOpen | true | Allow sell position opening |
BuyPosClose | true | Allow closing long positions |
SellPosClose | true | Allow closing short positions |
InpInd_Timeframe | PERIOD_H4 | Indicator timeframe |
SSP | 20 | Indicator linear reversal period |
Channel | 0 | Channel range reduction value, 0-50 |
Ch_Close | 30 | Stop-loss channel reduction value (added to main channel) |
relay | 10 | Historical lookback offset in bars |
SignalBar | 1 | Bar index for entry signal |
Similar Trend Following EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.