Exp_Elliott_Wave_Oscillator
This EA trades based on the Elliott Wave Oscillator (EWO), which is calculated as the difference between two smoothed moving averages of different periods. It opens buy positions when the oscillator turns upward from a declining state and sell positions when it turns downward from a rising state, with configurable position closing on signal reversal.
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 Elliott Wave Oscillator, which measures the difference between a short-period and a long-period smoothed moving average — essentially a momentum-type indicator. Entry conditions: a buy position opens when the oscillator turns upward from a declining state (Value[0]>Value[1] and Value[1]<Value[2]); a sell position opens when the oscillator turns downward from a rising state (Value[0]<Value[1] and Value[1]>Value[2]). Exit conditions: positions close on signal reversal when BuyPosClose/SellPosClose are enabled, plus fixed StopLoss and TakeProfit levels are applied. Position sizing supports four margin modes — free margin, balance, loss-free margin, and loss-balance — as well as a fixed lot mode. Money management is controlled via the MM parameter (default 0.1) with configurable margin calculation modes. The strategy employs a dual-layer smoothing algorithm with a first-stage SMA of period 5 and a second-stage JJMA of period 35, with up to 10 smoothing methods selectable via enumeration.
Strengths
- Uses Elliott Wave Oscillator combining momentum and trend judgment with clear logic
- Supports 10 smoothing algorithms with high parameter flexibility for different markets
- Provides dual exit mechanisms: fixed StopLoss/TakeProfit plus signal reversal closing
- Supports multiple money management modes for flexible position sizing
- Uses IsNewBar mechanism to prevent repeated trades on the same bar
Weaknesses
- Default StopLoss 1000 / TakeProfit 2000 points are unrealistically large for most currency pairs
- No spread filter — may generate false signals in high-spread environments
- No position check — may open duplicate positions causing overlapping exposure
- Signal logic relies on only 3-bar oscillator comparison, overly simplistic
- Lacks supplementary filters like trend confirmation or volatility filtering
Possible improvements
- Add position check to prevent duplicate opening in the same direction
- Add spread filter and volatility filter to reduce false signals
- Optimize default StopLoss/TakeProfit values to match actual market volatility
- Add trend filter (e.g., higher timeframe MA direction confirmation) to avoid frequent trades in ranging markets
Risk assessment
Overall risk: Medium
- Lack of position check may cause overlapping positions in the same direction, amplifying risk
- Fixed StopLoss/TakeProfit points do not account for market volatility changes, may be insufficient in extreme conditions
- Closing on signal reversal may cause frequent stop-outs in choppy markets
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
MM | 0.1 | Money management ratio or lot size, meaning per MMMode |
MMMode | LOT | Position sizing (free margin/balance/fixed lot, etc.) |
StopLoss_ | 1000 | Stop loss in points |
TakeProfit_ | 2000 | Take profit in points |
Deviation_ | 10 | Maximum slippage |
BuyPosOpen | true | Allow buy positions |
SellPosOpen | true | Allow sell positions |
BuyPosClose | true | Allow closing buy positions on reverse signal |
SellPosClose | true | Allow closing sell positions on reverse signal |
InpInd_Timeframe | PERIOD_H4 | NRTR_extr indicator timeframe |
MA_Method1 | MODE_SMA_ | First smoothing method |
Length1 | 5 | First smoothing period |
Phase1 | 15 | First smoothing phase parameter |
IPC1 | PRICE_MEDIAN_ | First MA layer applied price |
MA_Method2 | MODE_JJMA | Second smoothing method |
Length2 | 35 | Second smoothing period |
Phase2 | 15 | Second smoothing phase parameter |
IPC2 | PRICE_MEDIAN_ | Second MA layer applied price |
SignalBar | 1 | Signal reference bar index |
Similar Momentum EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.