EA-193 · Machine Learning

Perceptron

A perceptron-based neural network EA that uses 5 technical indicators (MA crossover, RSI, CCI, MA slope, Awesome Oscillator) as inputs to 5 sub-neural-networks, which are then combined by a meta-network to produce buy/sell signals. The synaptic weights are adjusted online using a simple reward/punishment mechanism based on whether the last trade was profitable or not.

Open the interactive view (equity curve, symbol switch)

Key facts

RiskHigh risk
Blow-up riskLow
Rating★☆☆☆☆
TypeTrading EA
TimeframesM15, H1, H4
IndicatorsSMA, RSI, CCI, Awesome Oscillator
Authorrdamorim@click21.com.br

Backtest results (H1, about 1 year)

SymbolP&LAnnualMax DDTradesWin rateSharpeRecoveryLosing streakPer tradeStatus
EURUSD0.00%0.00%0.00%0—————Not convertible yet
GBPUSD0.00%0.00%0.00%0—————Not convertible yet
USDJPY0.00%0.00%0.00%0—————Not convertible yet
XAUUSD0.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

This EA employs a multi-layer perceptron architecture consisting of 5 sub-neural-networks and one meta-network. Each sub-network takes 4 out of 5 indicator signals as input using a leave-one-out scheme, producing intermediate outputs via weighted summation, and the meta-network combines all 5 sub-network outputs into a final decision value. Entry conditions: buy when meta-network output is positive, sell when negative, with the additional constraint that no position is open and the trade direction differs from the last trade. Exit relies on fixed stop loss (default 100 points) and take profit (default 40 points). Position sizing is fixed at 0.1 lots with no dynamic adjustment based on account equity or risk. The synaptic weight adjustment uses a simple reward/punishment mechanism: profitable trades strengthen weights in the correct direction while losing trades reverse-adjust, with weights clamped between SinMin and SinMax bounds.

Strengths

  • Online learning capability with weights dynamically adjusted based on trade results, providing adaptability
  • Multi-indicator fusion decision making with 5 indicators providing signals from different dimensions, reducing single-indicator bias
  • Leave-one-out network architecture where each sub-network omits one indicator, increasing model robustness
  • Weight bounds (SinMin/SinMax) prevent unbounded weight growth and overfitting
  • Discrete indicator signals (-1/0/1) reduce noise interference from raw indicator values

Weaknesses

  • The perceptron only performs linear weighted summation without activation functions or nonlinear transformations, severely limiting representational capacity
  • SinapticsAjust() is never called anywhere in the code, making the entire weight adjustment logic dead code — the network cannot actually learn
  • Critical bugs in NN4 weight adjustment: incorrectly modifies NN3 weights (NNS3IND2 instead of NNS4IND2), and NNS2IND4 is mistakenly modified in NN3 sections at multiple locations
  • Fixed 0.1 lot position sizing with no money management strategy, unsuitable for varying account sizes
  • No new bar detection, causing recalculation and potential order attempts on every tick
  • Stop loss exceeds take profit (100:40), giving a risk-reward ratio of only 0.4, requiring extremely high win rate to be profitable

Possible improvements

  • Fix dead code: call SinapticsAjust() in OnTick after trade closure to activate the weight adjustment logic
  • Fix weight bugs: NN4 should modify NNS4IND2 not NNS3IND2, NN3 should modify NNS3IND4 not NNS2IND4
  • Add activation functions (e.g., tanh or sigmoid) to give the network nonlinear representational capacity
  • Add new bar detection to avoid recalculating every tick, add position checks and minimum trade interval
  • Implement dynamic position sizing based on account balance or risk percentage

Risk assessment

Overall risk: High risk

  • Core learning function SinapticsAjust() is never called, weights remain at initial value 1, the EA has no actual learning capability
  • Multiple copy-paste bugs in weight adjustment incorrectly modify other neural networks' weights
  • No new bar detection, trade logic runs on every tick
  • No spread filter, may open positions during high-spread conditions
  • Fixed lot size with no money management, risk-reward ratio of 0.4 requires very high win rate

Evaluation scores

Code quality1.0
Strategy logic2.0
Risk management1.0
Robustness1.0
Innovation3.0
Documentation1.0
Overall1.5

Parameters

ParameterDefaultDescription
SL100Stop loss in points
TP40Take profit in points
SinMax5Synaptic weight upper limit
SinMin0Synaptic weight lower limit
MAGIC999Order magic number
SinPlus0.03Synaptic weight positive adjustment step
SinMinus0.03Synaptic weight negative adjustment step
ma15Fast MA period
ma29Slow MA period
RSI14RSI indicator period
CCI14CCI indicator period
ma_a5IND4 MA period
IAO20Awesome oscillator bars to read

Similar Machine Learning 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.