EA-2236 · Momentum

Exp_FisherCGOscillator

This EA trades based on the FisherCGOscillator custom indicator, generating buy signals when the oscillator line crosses above its signal line and sell signals when it crosses below. It supports configurable money management modes, stop loss/take profit, and permissions for opening and closing positions independently for long and short sides.

Open the interactive view (equity curve, symbol switch)

Key facts

CategoryMomentum
RiskMedium
Blow-up riskLow
Rating★★★☆☆
TypeTrading EA
TimeframesH4, H8, D1
IndicatorsFisherCGOscillator
AuthorCopyright © 2014, Nikolay Kositsin

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

The strategy concept is based on crossover signals from the FisherCGOscillator, a momentum-based oscillator that applies Fisher transform to the center of gravity oscillator for smoother signals. Entry conditions: a buy is triggered when the oscillator line (Ind) crosses above the signal line (Sign), and a sell is triggered when Ind crosses below Sign; trades are only executed on new bar formation to avoid intra-bar noise. Exit conditions include fixed stop loss (1000 points) and take profit (2000 points), plus directional close on opposing signals — long positions close on sell signals and short positions close on buy signals. Position sizing is controlled by the MM parameter (default 0.1 = 10% of deposit) with five calculation modes: free margin-based, balance-based, loss share of free margin, loss share of balance, and fixed lot. Money management is delegated to the TradeAlgorithms.mqh library which provides standardized BuyPositionOpen/SellPositionOpen and BuyPositionClose/SellPositionClose functions with deviation control and signal timestamp tracking to prevent duplicate entries on the same bar. The default H8 timeframe with SignalBar=1 ensures signals are taken from the last closed bar, adding robustness against repaint and incomplete bar issues.

Strengths

  • Fisher transform applied to the CG oscillator produces smoother signals with fewer false crossovers, improving trade quality
  • Independent permission toggles for buy/sell open/close provide high flexibility to configure directional exposure
  • New bar detection (CIsNewBar) and default SignalBar=1 effectively prevent repainting and intra-bar signal noise
  • Five money management modes accommodate different risk appetites and account types
  • Explicit stop loss and take profit with a default 2:1 reward-to-risk ratio is sensible

Weaknesses

  • Depends on the custom FisherCGOscillator indicator file; if missing, the EA runs but trades silently fail with only a Print warning in OnInit
  • No spread filter or trading session filter, which can lead to unfavorable fills during low-liquidity periods
  • Fixed point-based SL/TP does not account for varying volatility across instruments, making it unsuitable for some symbols
  • OnInit returns 0 (success) even when the indicator handle is INVALID_HANDLE, allowing the EA to run in a broken state
  • No check for existing same-direction positions, potentially leading to duplicate entries on repeated signals

Possible improvements

  • Return INIT_FAILED from OnInit when the indicator handle is invalid, and add handle validity checks in OnTick before attempting CopyBuffer
  • Add spread filter and trading session filter to avoid entering trades during high-spread or low-liquidity periods
  • Consider ATR-based dynamic stop loss and take profit to adapt to different instruments and volatility regimes

Risk assessment

Overall risk: Medium

  • EA continues running with an invalid indicator handle, silently failing to trade without user awareness
  • Fixed-point SL/TP without volatility adjustment can cause frequent stop-outs on volatile instruments or excessive risk on calm ones
  • No existing position check before opening new trades, risking overexposure through duplicate same-direction entries

Evaluation scores

Code quality3.0
Strategy logic3.0
Risk management3.0
Robustness2.0
Innovation3.0
Documentation2.0
Overall2.7

Parameters

ParameterDefaultDescription
MM0.1Deposit percentage per trade
MMModeLOTLot calculation method (fixed lot or proportional)
StopLoss_1000Stop loss in points
TakeProfit_2000Take profit in points
Deviation_10Maximum price deviation in points (slippage tolerance)
BuyPosOpentrueAllow opening long positions
SellPosOpentrueAllow opening short positions
BuyPosClosetrueAllow closing long positions
SellPosClosetrueAllow closing short positions
InpInd_TimeframePERIOD_H8Indicator calculation timeframe
Length10FisherCGOscillator period
SignalBar1Bar index for entry signal

Similar Momentum 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.