January 13


Testing A Euro Currency Futures Scalping Strategy, Part 2

By Jeff Swanson

January 13, 2014

automated trading, Automated Trading Development, EasyLanguage, Euro Futures, mean reversion, scalping

This is a second part of examining a scalping strategy for the Euro currency futures. In the first article, Testing A Euro Currency Futures Scalping Strategy, we introduced a simple shorting concept. As a quick review here is what we started with. The strategy is based upon a 1% price envelope below the current price on a 5-minute chart. When price closes beyond the envelope a long trade is opened. The trade is closed when price returns to the envelope. Below is an image of the system with a trade example. Notice there are times when price touches the lower bands and no trade is entered. Price must close below the band to trigger a trade.

Typical scalp trade

We concluded the first article with a look at adding a hard stop value. The original trading rules had none. Exits were all based upon price returning inside the 1% envelope. We discovered stops drastically hurt the system. In this article we will continue to look at other stop methods and filters to improve performance.

Testing Stops

I spent the next few hours testing various stop loss methods. This included hard stop losses that don’t move and trailing stop losses that advance when the trade moves in your favor. I used dynamic stop losses based upon volatility and even more exotic stops such as the ATR Square Root trailing stop and the Noise Tolerant Money Management Stop. None of these stops produced the desirable results I was looking for, which was a smoother looking equity curve with a higher average profit per trade.

Since these were not working out, I decided to look at the two important values of our baseline system. Those would be the 200-period SMA average and the 1% envelope. I wanted to see how robust these values were. That is, if I change the values slightly will it dramatically change the results of the system? Furthermore, what does the performance of the system look like over a wide range of potential values. The first value to look at is the 1% envelope value around our 200-period SMA.

Testing 1% Envelope

Using TradeStation’s optimization feature I was able to test the values neighboring the 1% envelope value. The bar graph below depicts the results. The X-axis is the percentage value for the envelope and the Y-axis is net profit. Our default 1% value is clearly not an optimal value. In fact, it’s on the left-hand edge of a stable range found between 1.00 and 1.15. The median value within this range is about 1.58. Overall, each of the tested values produces a positive result and we do have a stable region. Moving our value more towards the center of this stable region may be a good idea in our final system. I like to see neighboring values produce similar results. Currently at 1.00% we have a sharp drop off in profit at the 0.95% value.

Let’s look at the average profit per trade vs. the envelope value. The graph below depicts the average profit per trade.

Looking at the graph above we can see the average profit per trade increases as we demand higher percentage distance from our SMA. This makes sense, but this comes at a cost as seen in the graph below which depicts the number of trades vs. the stretch percentage. In short, as we increase the envelope we generate more dollars per trade but generate fewer trades. This is the trade off we must determine.

Overall, the percentage envelope value does not look optimized and we may have an opportunity to modify it later based upon the net profit stable range.

Testing Look-back Period

Using TradeStation’s optimization feature I tested the look-back period of our simple moving average. The bar graph below depicts the results. The X-axis is the look-back period for the SMA and the Y-axis is net profit.

Here we can see our default value of 200 is far from optimal. In fact, as we continue to increase the look-back period we get more and more net profit until we reach the value of 290. But at what cost are we achieving this net profit? I also like to look at another metric which is the average profit we are making per trade. This is depicted in the graph below where the Y-axis is the average profit per trade.

Looking at the results from this perspective we can see as we increase the look-back period from our default value of 200 we are generating slightly less profit per trade. In some systems, such as a longer term swing system, this might not be a big deal. However, given this is a scalping system with a very slim profit margin per trade I would feel a bit uncomfortable reducing our average profit per trade. Overall, I’m inclined not to move the default value of 200.

Time Filter

The default system would be actively trading whenever the market was open. To me this is probably not a good idea since the market will have various characteristics throughout the trading day. For example, during the European open it may be very volatile and actively traded while during the U.S. afternoon it will most likely be less volatile and not as actively traded. So, the next item to test is time.

My first attempt was to trade the system when the Euro market was most active. Based on a previous study I was able to generate the following graph which depicts the number of ticks the Euro moves per hour. On the X-axis is the hour of the day and on the Y-axis the number of ticks moved. All times are in Central standard time.

From here we can see there are two major spikes of activity for the Euro. Not surprisingly they revolve around the 0200 European open and the 0830 U.S. open. It was these times I decided to test first. To me it looks like from 0200 to 1100 would be a nice active time to trade. The equity curve is below.

Not so hot. I then began to think that the scalping system is a mean reversion system and may do better outside of the most active trading hours. So I then looked at trading only after 1100 through 2300. The equity curve is below.

A world of difference! Look at the dramatic difference between the two equity curves based entirely on the hours of the day you trade. Below is a table comparing the results of our baseline system, trading the active hours and trading the quiet hours. Remember, the time filter is simply applied to the baseline system. No other changes have been made to the system.

EC Scalping System Performance


Active Hours

Quiet Hours

Net Profit




Profit Factor




Total Trades








Avg. Trade Net Profit




Annual Rate of Return




Max Drawdown (Intraday)








Expectancy Score




We can see from here that trading the quiet hours produces a substantial improvement in profit factor, average profit per trade and expectancy score when compared to the baseline system. We also reduce our maximum intraday drawdown but we do sacrifice some profit and our annual rate of return.


At this time the biggest thing we learned was the hours of the day seem to really impact the performance of the system. The tradable hours may be refined even further. Furthermore, we demonstrated that both the look-back period and the envelope percentage are not optimized values. In fact, we might have room to increase the value of the envelope percentage.

Are we finished? Not yet! We still have more to test including observing the performance on the out-of-sample data and using TradeStation’s Walk Forward Optimizer (WFO). So, keep an eye out for the next article.

Jeff Swanson

About the author

Jeff has built and traded automated trading systems for the futures markets since 2008. He is the creator of the online courses System Development Master Class and Alpha Compass. Jeff is also the founder of EasyLanguage Mastery - a website and mission to empower the EasyLanguage trader with the proper knowledge and tools to become a profitable trader.

  • Nice to see a nod to Bryant’s stop loss methods – they’re often great for trend-following approaches, and pretty much any stop-loss method has a negative impact on the performance for mean reversion strategies – so I don’t think there failure to improve performance with this particular strategy discounts their value in any way.

    I’m not familiar with the WFO feature in TS (for good reason), so it will be interesting to follow the next article in this series.

  • Hi, I had a question. When u say 1%. Say euro is today trading at 1.3516 and MA 200 is also 1.3516. 1% below 1.3516 would be 1.338, so you are waiting for the close to go almost 200 pips below the moving average. Isn’t that waiting for like almost 2 days considering eurusd moves about 100 pips on an average?

    • Keep in mind the trading system is looking for extreme moves beyond the 200-sma which is calculated using the 5-minute bar. Thus if the SMA is at 1.3516, a 1% move below the SMA would be about 135 ticks. The Euro can easily moves 300+ ticks in one hour.

  • Hi Jeff! I realize this is an old article but just thought I’d inquire about in-sample vs out-of-sample testing. Did you happen to test the time frame results with IS vs OOS data? I only ask because sometimes timeframe filters like this can appear to have an effect, only to dissipate over the longer haul. I’ve learned the hard way through personal experience. 🙂

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

    Learn To Code & Build Strategies
    Using EasyLanguage.