Let’s take a look at a simple moving average crossover system and see if we can improve it. Specifically, can we improve the moving average system’s performance by reducing the number of whipsaws during those dreaded range bound markets? Whipsaws occur when a market moves from a trending mode to a consolidation mode. During this consolidation mode the system gets whipsawed from long to short creating a string of losing trades. Long trades suddenly reverse hitting your stop. Likewise for short trades. These ‘false signals’ can destroy your equity curve. In this article I’m going to present two simple methods to improve the simple moving average crossover system. These ideas can easily be implemented into your trading systems and may provide a great starting point for a trend following system.
Our baseline system will consist of two simple moving averages (SMA) executed on a daily chart of the Euro futures. I’m picking the Euro because it has demonstrated solid trending characteristics as opposed to the stock index markets which tend to be mean reverting. If you will recall, signals are generated when a faster moving average (trigger SMA or trigger line) crosses a slower moving average (slow SMA or slow line).
Slow SMA 50 period Trigger SMA 3 period Go Long when trigger crosses above Slow SMA Go Short when trigger crosses under Slow SMA Dates Tested: May 2001 – September 30, 2013 Commissions & Slippage: $30 deducted per trade Number of Contracts: 1
For those using TradeStation the Baseline System was created by inserting two strategies into the chart that were provided by TradeStation. Below are the two strategies. The first one controls the long entry (LE) rules and the second one controls the short entry (SE) rules. You can see the input fields contain the three and the 50 for the two different periods for our moving averages. By using these provided strategies you can build a moving average crossover strategy within seconds without any coding skills.
movAvg2Line Cross LE
MovAvg2Line Cross SE
Baseline System Equity Curve
These two simple rules produce a trading system that is actually profitable over the long term. This is a testament to the trending characteristics of the Euro futures market. However, there are periods of large drawdowns and long periods where no new equity highs are created. It’s not likely anyone would actually trade this with real money. The image below shows a recent period from 2011 when the Euro entered a consolidation phase during the summer months of June through August. During this time our Baseline System produced a string of eight consecutive losing trades.
Whipsaw Summer 2011
Improvement #1: Delayed Entry
With this entry method we are going to delay our entry into the market after the trigger line crosses the slow SMA. So, when the trigger line crosses the slow SMA we do not open our position right away. We delay for several bars. Let’s say we wait for 15 bars after the cross occurs. On the tenth bar after the signal we see if price is still above the slow SMA (for a long entry) and enter at the open of the 11th. If price is below our slow SMA we don’t open a new position. By doing this we eliminate some whipsaws at the expense of entering the trade later than the original SMA cross. The idea behind this method is if a new bull market is about to start, price should not fall back below the slow SMA. In short, it’s another way to measure the amount of conviction for the next market phase. However, we will keep the exit the same. When an EMA cross occurs we always close our open position. We only apply the delay when opening a new position.
The equity curve with our delayed entry actually moves the entire equity curve above the zero line. Fewer trades are taken and we reduce the total net profit. The equity curve also appears a little less jagged implying a slightly more smoother climb up. Below is an image showing the whipsaw summer time period in 2011. You will notice we have reduced the number of whipsaws from eight to zero.
Whipsaw Summer 2011
Improvement #2: Trading Bands
Unlike the standard moving average crossover where the trigger line must simply cross the slow SMA, our trigger line must now demonstrate conviction by crossing beyond the slow SMA. For example, picture another band above the slow SMA that is 1 ATR above the slow SMA. In order to open a new long position we require the trigger line to penetrate that ATR band above the slow line. Now picture another band that is one ATR below the SMA. This band represents our short trigger when we open a short position. We hope to eliminate some whipsaws by delaying our entry and forcing the market to show us some strength.
Some of you may have already noticed that what we have is a Keltner Channel. A Keltner Channel is nothing more than a moving average (slow SMA) with an upper band X number of ATRs above and below the slow SMA. The upper and lower bands act as the trigger to enter either a long position or a short position. The bands adapt to expanding volatility requiring more price conviction to initiate a new position. Likewise, these bands contract during lower volatility times. Thus, the entry and exit rules are more dynamic to a changing market than a simple moving average crossover.
The equity graph does not look too much different than our baseline system. The entire equity curve spends less time near the zero line and there are fewer trades. Below is the same time period showing the Band System has reduced the number of false signals from eight to two. This is a great improvement over the Baseline System.
Whipsaw Summer 2011
Each of the two methods improved the results of the original Baseline System. Looking at the table below we can see performance statistics such as profit factor, percent winners, and average trade net profit all increased. The Keltner produced the best overall statistics. We certainly don’t have a trading system that is tradable with real money, but we accomplished our mission. We reduced the number of whipsaws with our Delayed Entry System and Band Entry System. You can see this by looking at the number of trades taken by each system and the percent winning trades.
MA Improvements Peformance
Avg.Trade Net Profit
Annual Rate of Return
You can take this research in all types of directions. Here two more ideas.
Delay With Time Decay – Markets switch between trending and non-trending as we all know. Often you will notice a string of whipsaws on a moving average crossover system right after a great winning trade was closed. The market apparently is now morphing to a range bound market and will likely do this for sometime. However, as the days or weeks wear on the likelihood of a breakout probably increases. Thus maybe we can reduce the delay amount as time goes by. After the close of a successful trade we begin looking for the next cross with our default X bar delay. The market remains range bound and produces several false signals over the weeks but our system does not take any new signals. During these false signals our delay counter is reset but let’s not always reset it to X. Every day or every week we reduce our X day delay by one. We do this because we believe as time goes by a breakout becomes more likely. However, we never reduce X to reach zero or lower. In fact, we may never want to go much lower than 5 or so.
Trend Filter – In a previous article I used rsRank or a 200-period SMA as a trend indicator to help determine the bigger picture for the Euro. In other words, are we within a bullish or bearish market? Maybe only taking long trades during a bull market or taking short trades during a bear market would improve results. This would be an interesting and simple test to perform. I would love to hear your results.
Be sure to leave a comment below. I would love to hear any ideas or results from your own testing!
Have you looked into the Double Exponential Moving Average (DEMA) ? In thousands of back tests, trying every MA-based idea I could think of, the DEMA was by far the most reliable MA for crossovers that I saw.
I’ve personally not looked into the DEMA much at all. I’ll have to give it a try. Thanks for sharing your idea.
As soon as I get a little better at navigating my way around TradeStation and Easy Language I am looking forward to testing ideas like this! I’m curious to see how combining some of them would affect the results.
Great Andy! This is the best way to learn – get your hands dirty by building, testing and modifying code. Here are some links you may find helpful.
You can find some free tutorials over here:
TradeStation as some good examples but are more complicated:
EasyLanguage Discussion Forums:
EasyLanguage Programming Guide:
Hey there, nice tip on the delay, i have been experimenting using range candle chartingd and moving averages, i am having trouble programming them into probuilder, have you any ideas?
There’s a great book over at http://www.insideedge.net/el_lbe.php.
Not necessarily the first place to dip your toe in the water, but educational, and useful code as well. The last time I listened to an official Tradestation tutorial on arrays, the tutor couldn’t think why you would want to use one. Bill Brower can. Really good stuff.
You can find good EasyLanguage tutorials on these pages:
Enjoy the effot put in and respected readings as provided by your website. A quick question: could you explain why your coding never incorporates a setdollartailing function. The reason is the most obvious but I would like to here it from you.
Thanks again and keep up the grand work.
The little work I’ve done with setdollartriling has not worked out very well. Based on my testing it has often hurt the system more than helped. I’m not saying there are not valid uses for setdollartrailing, but I’ve not found very many occasions. I have often found that exiting based on time or an event, such as price crossing a threshold, to be much better as an exit. This also includes not moving my hard stop.
Sorry for the distraction i.e. spelling error – autocorrect function has its own mind.
You are right on your method of improving moving averages strategies as MAs are lagging and creating many whipsaws. What I rather do is using 2 EMAs instead of 2 SMAs. And when the faster crosses the slower on the daily chart I start trading on the basis of H4 (4hours) chart only in the direction of the (daily) trend until the faster EMA turns round in the daily chart(I mean when it points no more in the same direction with the slower but looks to be reversing, no need to wait until it crosses back the slower one on the daily before).
I must complete that many times, even if the faster EMA turns round as if reversing to cross back the slower, it may go back soon making the trend on the daily continue. In that case I continue trading on H4 charts in the direction of the same renewed (daily )trend.