• Overview
  • Reviews
  • Comments (10)
  • What's new


This Expert Advisor uses RJ Prince Acceleration Indicator for entry signals, combined with position management techniques introduced in RJHulk and RJSurfer EAs. The idea behind these techniques is simple: As new trading signals are received, nonprofitable trades are modified and combined with the new ones into a long or short position and and attempt is made to close the whole position in profit. With accurate signals, one can expect to earn profits in a consistent way for a long time. Trading is performed following trend direction, to some extent "surfing" the price waves. The EA can work with almost any currency pair and timeframe.

RJSurferPA EA resembles a grid trading strategy, because it makes use of the wavy nature of the market, but it is a completely different approach for the following reasons:

  1. No pending orders are used, only market orders.

  2. Orders are not opened at fixed price levels, entry point are determined by market conditions. Parameter StepCorrect set the minimal distance for corrections. In corrections TP are adjusted, so all orders of the same type will close simultaneously hopefully with profit. Setting the parameter to zero will disable this feature.

  3. Buy and Sell series are managed simultaneously, but they are independent from each other.

  4. Stop Loss is managed by opening an opposite order. SL and TP are adjusted so both orders close at same price, hopefully with profits. Setting StopLoss parameter to zero will disable this feature.

  5. Entry signals are obtained from RJ Price Acceleration Indicator and are filtered using the additional parameter TimeFrame. Filtering is simple, buy near last low and sell near last high.

The Expert has an unique feature: it allows to use only part of the account funds. This feature was implemented with the intention to simulate withdrawals in MT4 Strategy Tester but became a handy tool for risk control. It works as follows: Expert will stop trading and close all orders if equity falls below a defined amount, so we have a virtual stop loss set at account level. This amount initially is set by parameter Limite and is increased monthly from profits according to parameter SecProfLevel.

Other details of RJSurferPA:

  • The EA is evaluated at new bars, not every tick. This allows very fast optimization, even in visual mode (recommended).

  • Trades initially has no stop loss.

  • Strategy is not FIFO-compliant, so not use with US brokers.

  • EA trades following trend, so most of the time drawdown will be small.

  • EA adjust automatically to 4 or 5 digits quotes.

Being powerful and versatile, this strategy is also dangerous and if poor managed can cause big losses. Before trading, you must understand and have experience in risk and exposure management. Also it requires patience and, may be, a paradigm shift when trading. Here you let losses run, until they can be corrected and sometimes you will have significant drawdowns.


  • EAComment (string).
  • Magic (int)
    Magic Number.
  • PeriodHMA (int)
    Smoothing Period for MA.
  • MethodHMA (int)
    Averaging Method for MA.
  • PriceHMA (int)
    Applied Price for MA.
  • Accel (double)
    Acceleration value to trigger trading signals.
  • StepCorrect (double)
    Minimal distance in pips to open a new correcting order of the same type.
  • TakeProfit (double)
    Take Profit in Pips.
  • StopLoss (double)
    Minimal distance in pips to open correcting order of opposite type.
  • Lots (double)
    Volume for opening first trade in any direction. Volume for correcting orders is calculated internally.
  • Limite (double)
    Amount of account balance that will remain locked. The initial value will be increased from profits.
  • SecProfLevel (double)
    Percent of monthly profits that will be added to locked funds.
  • MedRiskLevel (double)
    Reference value to evaluate risk as a percent of Trading Funds (AccountBalance - Locked Funds). Not used in calculation, only for informational purposes. Levels are defined as follow:
    Low Risk <= 0.5 * MedRiskLevel * Trading Funds
    High Risk > 2 * MedRiskLevel * Tradin Funds.
  • LockProfits (bool)
    If true, EA will close open orders and stop trade if equity falls below Limite.
  • TradeProfits (bool)
    If true, EA will increase Lots when Trading Funds - MaxFloatingPL > 2*InitialCapital.
    EA will use last High and Low values from this timeframe to filter entry signals.
  • AgressiveMode (bool)
    If true, EA will trade more frequently. Useful for trending pairs. Use with caution.
  • MaxSpread (double).
  • OperateOnBar (int)
    Usually 1, mean that EA operates based on last closed bar signals.

Trading Results

EA is traded on my trading signals: RJSurferPA F4Y and RJSurfer Alpari.

No reviews
Version 1.40 - 2014.11.18
1. Fixed bug causing incorrect display on some color schemes.
2. Added extra checks for trading conditions.
Version 1.30 - 2014.10.20
1. Expert incorporates risk management. This feature is activated by parameter UseDDControl and acceptable risk level is determined by the value of parameter MedRiskLevel.
2. Expert logic is reverted to version 1.0. (Results will be the same when default values UseDDControl=false and HTShift=1).
3. Average value of floating profit/loss is shown.
4. If parameter Limite is greater than 70% of account balance, it will reduced to such value and increased from profits. If Limite is greater than Balance then Limite will set to zero.
5. If parameter Timeframe is not greater chart timeframe, additional filtering is disabled. Expert will trade only by indicator signals.

Default parameters values are appropriate for EURUSD, H1 and correspond to preset 2014001-eurusd-h1-rjsurferpa-2000-r21

Monitoring available at https://www.mql5.com/en/signals/62312
Version 1.20 - 2014.09.26
1. Corrected bug preventing indicators loading.
2. Filter is improved when checking more bars from an upper timeframe. The EA now includes RJHTLevel indicator. If TimeFrame parameter is lower than chart timeframe, the additional filtering is disabled.
3. Implemented restart after equity stop feature is implemented.
4. Position management uses two more methods to control DD:
a. After a defined number of orders in a series (TradesLimit parameter), an opposite order is opened.
b. When TradesLimit is greater than 0, it controls maximal number of correcting orders in a series.
These methods can be used in any combination with the existing ones.
5. TradeProfits and AgressiveMode parameters are fixed as false.
6. LockProfits is fixed as true.

Default parameters' values are appropriate for EURUSD, H1.