EA-1772 · Trend Following

RenkoLineBreakVsRSI_EA

This EA trades based on the RenkoLineBreak indicator trend direction confirmed by RSI divergence from the 50 level. It places buy stop or sell stop pending orders when the RenkoLineBreak shows a sustained trend and RSI is sufficiently far from the midpoint. Positions are closed when the trend reverses or RSI crosses the opposite threshold.

Open the interactive view (equity curve, symbol switch)

Key facts

RiskMedium
Blow-up riskLow
Rating★★☆☆☆
TypeTrading EA
TimeframesM15, H1, H4
IndicatorsRenkoLineBreak, RSI
AuthorRone.

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

  • Has no stop loss or trailing stop

On its own this is not a typical blow-up pattern, 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 core strategy uses the RenkoLineBreak custom indicator to determine trend direction, confirmed by RSI divergence from the 50 midpoint as a filter. RenkoLineBreak reads buffer index 2 values: positive indicates uptrend, negative indicates downtrend, with TO_UP/TO_DOWN representing trend transitions. Entry conditions are: open a buy stop when trend is UP and RSI is below 50 minus the vertical shift, or open a sell stop when trend is DOWN and RSI is above 50 plus the vertical shift — this is a trend-confirmation-with-momentum-pullback logic. Exit conditions are: close longs when trend transitions to TO_DOWN or RSI exceeds 50 plus the shift, and close shorts when trend transitions to TO_UP or RSI falls below 50 minus the shift. Position sizing uses a fixed lot volume specified by InpVolume, with pending stop orders placed at prices derived from the high/low of the previous 3 bars plus an indent offset. Stop loss is set at the extreme of the previous 3 bars plus/minus indent, and take profit is a fixed pip distance. Although the code declares an MM_MODE enum with FIXED_LOT and FIXED_PERCENT options and includes MoneyFixedLot.mqh, it never actually instantiates or uses the money management class, relying solely on the input volume parameter.

Strengths

  • Dual-indicator filtration (RenkoLineBreak trend + RSI momentum) reduces false signals
  • Pending order entry mechanism ensures price confirmation before execution, avoiding chase entries
  • Explicit stop loss and take profit settings provide defined risk per trade
  • Automatically deletes old pending orders and closes positions on trend reversal, avoiding counter-trend exposure

Weaknesses

  • MM_MODE enum declares FIXED_PERCENT mode but it is never implemented, creating a mismatch between interface and code
  • MoneyFixedLot.mqh is included but never used, leaving a redundant dependency
  • DeleteAllOrders iterates the order list while deleting elements, which can skip orders due to index shifting
  • CheckPosition uses PositionGetInteger without first calling PositionSelect on the correct ticket, potentially reading stale position data
  • No slippage protection or spread filter, which may cause unexpected fill prices during volatile conditions

Possible improvements

  • Implement the FIXED_PERCENT money management mode or remove unused enum and include file to maintain code consistency
  • Fix the iteration-while-deleting bug in DeleteAllOrders by iterating backwards or collecting tickets first then deleting
  • Call PositionSelect with the correct ticket before reading position properties in CheckPosition to ensure accurate data
  • Add spread filter and slippage control parameters to avoid placing orders under adverse trading conditions

Risk assessment

Overall risk: Medium

  • DeleteAllOrders iteration-while-deleting bug may leave some orders undeleted, causing unexpected order fills
  • Incorrect position selection in CheckPosition may read wrong position attributes leading to erroneous closes
  • No spread filter mechanism, potentially filling at unfavorable prices during high-volatility periods

Evaluation scores

Code quality2.0
Strategy logic3.0
Risk management2.0
Robustness2.0
Innovation3.0
Documentation1.0
Overall2.2

Parameters

ParameterDefaultDescription
InpMinBoxSize500Minimum box size for RenkoLineBreak indicator
InpRsiPeriod4RSI indicator period
InpRsiVShift20RSI vertical offset from 50 midline for signal filtering
InpTakeProfit1000Take-profit in points
InpIndentFromHL50Pending order offset from high/low in points
InpVolume1.0Fixed trading lot size

Similar Trend Following 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.