StellarLite_ICT_EA
This EA implements ICT (Inner Circle Trader) concepts — specifically the Silver Bullet and 2022 Model strategies — for the Stellar Lite 5K prop firm challenge. It uses higher timeframe MA bias, liquidity sweeps, market structure shifts, fair value gaps, and NDOG/NWOG detection to find entries, with partial take-profits at 1:1, 2:1, and 3:1 R:R and trailing stop management.
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 is based on ICT concepts, using a higher timeframe (H1) 200-period SMA to determine trend direction, only trading in alignment with the trend. Entry requires five simultaneous conditions: a liquidity sweep (price piercing a key liquidity level then reversing), market structure shift (MSS confirming trend reversal), a fair value gap (FVG providing the entry zone), NDOG/NWOG confirmation (the current candle's range is within an ATR-based threshold), and price retracing into the FVG zone. The Silver Bullet strategy only trades during the NY AM Killzone (10:00-11:00), while the 2022 Model trades any time but uses inverse liquidity sweeps (inducement) for additional confirmation. Exits use partial take-profits: 50% closed at TP1 with SL moved to breakeven, 25% closed at TP2 with a trailing stop activated, and the remaining 25% held to TP3. Position sizing is based on a fixed risk percentage (0.25%) with lot size automatically calculated from the stop-loss distance. Money management enforces a 10% total drawdown and 5% daily drawdown hard limit, complying with prop firm challenge rules.
Strengths
- Strict money management: 0.25% risk per trade, 10% total drawdown and 5% daily drawdown limits fully compliant with prop firm challenge rules
- Well-structured partial take-profit: closes 50% at TP1 locking profit and moving SL to breakeven, then 25% at TP2 activating trailing stop, balancing profit protection with trend following
- Multi-condition entry filter: requires liquidity sweep + MSS + FVG + NDOG/NWOG five-fold confirmation, significantly reducing false signal entries
- Higher timeframe trend filter: uses H1 200 SMA for directional bias, avoiding counter-trend trades
Weaknesses
- ATR handle memory leak: CheckNDOG_NWOG creates and releases an iATR handle on every call, causing resource waste and potential performance issues with frequent invocations
- Overly simplified liquidity detection: FindNearestLiquidityLevel only finds the highest/lowest point in the lookback period without identifying true structural swing highs/lows, easily producing false signals
- Flawed MSS (Market Structure Shift) logic: only compares close/high/low of the last 3 bars without considering the magnitude or time span of structural breaks, prone to misjudgment
- Inverted FVG detection logic: the buy FVG condition checks rates[i].high < rates[i-2].low, which describes a bearish gap rather than a bullish FVG, inconsistent with the actual ICT definition
- Daily drawdown baseline uses equity instead of balance, inconsistent with most prop firm rules which typically use the day's opening balance
- Single position limitation: positionInfo.SelectByMagic only checks for existence of a position with the magic number, unable to manage multiple simultaneous positions
Possible improvements
- Move ATR handle initialization to OnInit() to avoid repeated creation/destruction in CheckNDOG_NWOG, improving performance and preventing resource leaks
- Improve liquidity level detection: implement proper swing high/low identification (e.g., fractal or ZigZag-based methods) instead of simply finding extremums in the lookback period
- Fix FVG detection logic: bullish FVG should be rates[i-2].high < rates[i].low (gap between bar i-2 high and bar i low unfilled by the middle bar), consistent with ICT definition
- Enhance MSS detection: add magnitude thresholds for structural breaks (e.g., ATR multiple beyond previous structure point) and consider longer time-span structural shifts
- Support multi-position management: use position iteration instead of single-position SelectByMagic, allowing the strategy to manage multiple trade signals simultaneously
Risk assessment
Overall risk: Medium
- Inverted FVG detection logic may cause entries in the wrong direction, leading to unnecessary losses
- Overly simplistic MSS detection may produce false structural break signals, increasing erroneous trade probability
- Repeated ATR indicator handle creation in CheckNDOG_NWOG on every tick may cause resource exhaustion in high-frequency tick environments
- Daily drawdown baseline uses equity instead of opening balance, which may violate actual prop firm evaluation rules
- String comparison for time filtering (timeStr >= SB_StartTime) may fail across midnight boundaries
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
RiskPercentPerTrade | 0.25 | Risk percentage per trade |
MaxTotalDrawdownPercent | 10.0 | Maximum total drawdown percentage |
MaxDailyDrawdownPercent | 5.0 | Maximum daily drawdown percentage |
InitialBalance | 5000.0 | Initial account balance |
TP1_RR | 1.0 | TP1 risk-reward ratio |
TP2_RR | 2.0 | TP2 risk-reward ratio |
TP3_RR | 3.0 | TP3 risk-reward ratio |
PartialClosePercentTP1 | 50.0 | Position close percentage at TP1 |
PartialClosePercentTP2 | 25.0 | Position close percentage at TP2 |
PartialClosePercentTP3 | 25.0 | Position close percentage at TP3 |
MoveSLToBE_AfterTP1 | true | Move stop loss to breakeven after TP1 |
BE_PlusPips | 1 | Additional pips for breakeven stop loss |
TrailingSL_Pips | 10.0 | Trailing stop in points |
Use_SilverBullet | true | Enable Silver Bullet strategy |
SB_StartTime | 10:00 | New York AM kill zone start time |
SB_EndTime | 11:00 | New York AM kill zone end time |
Use_2022Model | true | Enable 2022 Model strategy |
Use_OTE_Entry | true | Use Fibonacci OTE entry |
HTF | PERIOD_H1 | Higher timeframe period |
HTF_MA_Period | 200 | Higher timeframe moving average period |
HTF_MA_Method | MODE_SMA | MA calculation method |
DOL_Lookback_Bars | 120 | Liquidity lookback bar count |
NDOG_NWOG_Threshold | 0.5 | NDOG/NWOG ATR multiplier threshold |
OTE_Lower_Level | 0.618 | OTE Fibonacci lower level |
OTE_Upper_Level | 0.786 | OTE Fibonacci upper level |
ShowTradeLevels | true | Display trade level lines |
Similar Multi-Timeframe EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.