Pullback EA

countertrend forex robot

This is the review of my best private EA. It works on EURUSD and USDCHF, M30. As the title says, it trades pullbacks. After a long rally, under certain volatility conditions, the market retraces and then continues to trend. This EA trade pullbacks in the direction of the trend. It’s different from a trend follower because usually a trend follower opens a trade when a new trend forms, most of the time after a resistance line is broken. This forex robot waits for a retrace, then places a trade at the very first sign of trend continuation. The number of trades is limited to one, only one trade at a time is the key to success if you are trading using a portfolio.

The strategy

If the price goes up and the volatility is high, the EA waits for the rally to finish, then draws a line at a certain level bellow the current price. If the price goes down bellow that line and then up, a long trade is placed.

If the price goes down fast and the volatility is high enough, the Ea waits for the rally to finish then draws a line at a certain level above the current price. If the price retraces, then starts to go down again, a short trade is placed.

This is the most successful of my private EAs because it trades according to the market fundamental law: the trend continues only after a correction as Elliot theory clearly shows.

Take profit and stop loss levels

It opens positions at the end of the current candle, but it closes them whenever necessary, it doesn’t wait for the current candle to close in order to exit the trade. Take profit and stop loss are also broker side thus protecting the account if the VPS shuts down or if the internet connection is lost.

Take profit:  between 35 and 69 pips
Stop loss: between 45 and 128 pips

Take profit is smaller than stop loss but the number of winning trades exceeds the number of losing trades. The big advantage is the fact that 0nce open, a trade has enough room to move, this way the noise is eliminated. Same principle applies for my other trend follower EA.

Backtests and statistics for EURUSD

13 years backtests:


Pullback backtests EURUSD

Pullback backtests EURUSD


Total number of trades: 1722
Won pips: 17,829
Maximum drawdown: 710 pips
Maximum drawdown length: 381 days (more than 1 year)
Average pips per year: 1371
Won trades: 72%
Lost trades: 27%
Maximum consecutive wins: 21
Maximum consecutive losses: 7
Average consecutive wins: 5
Average consecutive losses: 2
Average profit trade: 49 pips
Average loss trade: 90 pips

Backtests show that all years are profitable:

Pullback profits EURUSD

Pullback profits EURUSD


 Backtests and statistics for USDCHF

13 years backtests

Pullback backtests USDCHF

Pullback backtests USDCHF

Total number of trades: 1465
Won pips: 16,216
Maximum drawdown: 784 pips
Maximum drawdown length: 390 days (more than 1 year)
Average pips per year: 1247
Won trades: 76%
Lost trades: 23%
Maximum consecutive wins: 25
Maximum consecutive losses: 6
Average consecutive wins: 6
Average consecutive losses: 2
Average profit trade: 43 pips
Average loss trade: 97 pips

Backtests show that all years are profitable:

Pullback profits USDCHF

Pullback profits USDCHF


Combined backtests

Total number of trades: 3187
Won pips: 34,045
Maximum drawdown: 962 pips
Maximum drawdown length: 286 days (less than one year)
Average pips per year: 2618
Won trades: 74%
Lost trades: 26%

Pullback combined profits

Pullback combined profits


1. When EURUSD and USDCHF are traded together, the drawdown length is reduced by 25%!

2. When EURUSD and USDCHF are traded together, the overall drawdown increases with only 26% while the profit gets doubled!

Robustness analysis

1. 3187 trades during 13 years is enough for the combined backtests to be considered valid from this point of view.

2. Backtest shows 1645 long trades and 1542 short trades, the distribution is almost equal which is great!

3. The profits are almost equally distributed over the years and this is a great thing too.

4. It passes my personal robustness criteria:

Real Profit Ratio (RPR) = ((WFER * Total profit in pips) / number of years to backtest) / MCWCS


WFER = Walk Forward Efficiency Ratio

MCWCS = Monte Carlo Worst Case Scenario (MC analysis is performed having the best selected parameters as a starting base)

If RPR<0.5, the EA should be discarded.
If RPR>0.5 AND RPR<0.6 – modest performance
if RPR>0.6 AND RPR<0.8 – good performance
if RPR>0.8 – an excellent EA!

In this case, RPR is 0.8 – excellent performance.

You may wonder why am I using this weird formula. I’m using it because it respects the following:

– money is made in the future, not in the past, so in order to see how this EA should behave in the future, I’m performing a WFR analysis first. Total profit of pips made in the backtests are multiplied with Walk Forward Efficiency Ratio which is usually less than 1 because in real life we expect less pips than in backtests.

– MCWCS (Monte Carlo Worst Case Scenario) shows us the worst case scenario we can expect.

– My formula is nothing more than the number of pips we can expect in real life / maximum drawdown in pips shown by MCWCS.

My pullback EA passes this.

5. It survives on a correlated pair without any adjustments of external parameters.


A standalone EA has the same disadvantage: drawdown length. I don’t care much about the maximum drawdown if it recovers fast but I really do care about the drawdown period, I don’t have time to wait years until it makes some profits.

We have just seen earlier that the drawdown length is significantly reduces when USDCHF and EURUSD are traded together because they are negatively correlated pairs.

I’m aiming a portfolio with a drawdown length of no more than 3 months and this EA is definitely a part of it, please see my portfolio section.