What 567,000 Backtests Taught Me About Algo Trading Exits
UPDATE: January 2023
If you are looking for generic descriptions of exit strategies, just head to the bottom of the page. Most of the top part of the article is detailed and in-depth trading exits and code...
Ask any trader how they trade, and 8 times out of 10 the answer will involve the entries they use to trade:
“When the trendline is confirmed, I enter.”
“When the close is above the 9 bar moving average and the RSI is not oversold, I go long.”
“When the order flow suggests a downwards push, I go short.”
If you need any more proof of the popularity of entries, just look at trading videos on YouTube. Most of them are focused on entries. Even my You Tube channel, which hits on a variety of trading topics, has entry videos as its most popular selections.
"Many times exits are even more important than entries!"
If you are looking for generic descriptions of exit strategies, just head to the bottom of the page. Most of the top part of the article is detailed and in-depth trading exits and code...
Ask any trader how they trade, and 8 times out of 10 the answer will involve the entries they use to trade:
“When the trendline is confirmed, I enter.”
“When the close is above the 9 bar moving average and the RSI is not oversold, I go long.”
“When the order flow suggests a downwards push, I go short.”
If you need any more proof of the popularity of entries, just look at trading videos on YouTube. Most of them are focused on entries. Even my You Tube channel, which hits on a variety of trading topics, has entry videos as its most popular selections.
"Many times exits are even more important than entries!"
But entries are only part of the story. Money management, psychology and position sizing all play a role. And, of course, exits. Many times exits are even more important than entries!
So, to give exits their long deserved recognition, I am going to study a variety of them, with some fairly standard entries. Which exit is the best? That is what I hope to determine in this study.
What Exits Should I Choose?
If you have read any of my previous research, you know I favor simplicity over complexity. My experience is simple strategies tend to hold up better over time than complicated, multi-variable strategies. Therefore, to get a wide range of exits, I am going to examine some "simple" ones, some “intermediate” level exits and some "complicated" exits:
Simple Exits
1. Stop and Reverse Exit
2. Time Based Exit
3. Dollar Stop Loss
4. Dollar Profit Target
5. Dollar Stop With Profit Target
6. Average True Range Stop Loss
7. Average True Range Profit Target
8. Average True Range Stop With Profit Target
Intermediate Exits
9. Trailing Stop
10 Breakeven Stop
Complicated Exits
11. Parabolic Stop
12. Chandelier Stop
13. Yo-Yo Stop
14. Channel Exit
15. Moving Average Exit
Each of these exits will be described in a later section. For each exit, I will run 9 different combinations of the exit parameter or parameters.
I should point out I do NOT use market on close MOC orders in this study. Why not? Here's a discussion of the pitfalls with Market On Close MOC orders.
Entries, Markets, And Everything Else
Simple Exits
1. Stop and Reverse Exit
2. Time Based Exit
3. Dollar Stop Loss
4. Dollar Profit Target
5. Dollar Stop With Profit Target
6. Average True Range Stop Loss
7. Average True Range Profit Target
8. Average True Range Stop With Profit Target
Intermediate Exits
9. Trailing Stop
10 Breakeven Stop
Complicated Exits
11. Parabolic Stop
12. Chandelier Stop
13. Yo-Yo Stop
14. Channel Exit
15. Moving Average Exit
Each of these exits will be described in a later section. For each exit, I will run 9 different combinations of the exit parameter or parameters.
I should point out I do NOT use market on close MOC orders in this study. Why not? Here's a discussion of the pitfalls with Market On Close MOC orders.
Entries, Markets, And Everything Else
I’ll test each of the 15 exits with 5 unique entries (Tradestation code shown):
1. Simple Momentum Entry
If close>close[InputVar2] then buy next bar at market;
If close<close[InputVar2] then sell short next bar at market;
2. Breakout Next Bar Entry
If high=highest(high,InputVar2) then buy next bar at market;
If low=lowest(low,InputVar2) then sell short next bar at market;
3. Single Moving Average Cross Entry
If close crosses above average(close,InputVar2) then buy next bar at market;
If close crosses below average(close,InputVar2) then sell short next bar at market;
4. Bollinger Band Entry
If close crosses above BollingerBand( close, InputVar2, -2) then buy next bar at market;
If close crosses below BollingerBand( close, InputVar2, +2) then sell short next bar at market;
5. Volatility Entry
If Close> close[1] + AvgTrueRange( InputVar2 ) * 1.5 then buy next bar at market;
If Close< close[1] - AvgTrueRange( InputVar2 ) * 1.5 then sellshort next bar at market;
Note that there is one input to optimize for the entry, the input “InputVar2.” This is a lookback length, and for the study I will vary this from 15 to 35 in steps of 10.
Markets
I am going to test the exits on 40 different futures markets (Tradestation continuous contract symbols shown).
Currencies
@AD, @BP, @CD, @DX, @EC, @JY, @SF
Ags/Softs
@BO, @C, @CC, @CT, @FC, @KC, @KW, @LC, @LH, @O, @OJ, @RR, @S, @SB, @SM, @W
Metals
@GC, @HG, @PL, @SI
Energies
@CL, @HO, @NG, @RB
Interest Rates
@FV, @TY, @US
Stock Indices
@ES.D (day session),@ES, @NK, @NQ, @RTY, @YM
"How Do You Determine What The Best Result Is?"
1. Simple Momentum Entry
If close>close[InputVar2] then buy next bar at market;
If close<close[InputVar2] then sell short next bar at market;
2. Breakout Next Bar Entry
If high=highest(high,InputVar2) then buy next bar at market;
If low=lowest(low,InputVar2) then sell short next bar at market;
3. Single Moving Average Cross Entry
If close crosses above average(close,InputVar2) then buy next bar at market;
If close crosses below average(close,InputVar2) then sell short next bar at market;
4. Bollinger Band Entry
If close crosses above BollingerBand( close, InputVar2, -2) then buy next bar at market;
If close crosses below BollingerBand( close, InputVar2, +2) then sell short next bar at market;
5. Volatility Entry
If Close> close[1] + AvgTrueRange( InputVar2 ) * 1.5 then buy next bar at market;
If Close< close[1] - AvgTrueRange( InputVar2 ) * 1.5 then sellshort next bar at market;
Note that there is one input to optimize for the entry, the input “InputVar2.” This is a lookback length, and for the study I will vary this from 15 to 35 in steps of 10.
Markets
I am going to test the exits on 40 different futures markets (Tradestation continuous contract symbols shown).
Currencies
@AD, @BP, @CD, @DX, @EC, @JY, @SF
Ags/Softs
@BO, @C, @CC, @CT, @FC, @KC, @KW, @LC, @LH, @O, @OJ, @RR, @S, @SB, @SM, @W
Metals
@GC, @HG, @PL, @SI
Energies
@CL, @HO, @NG, @RB
Interest Rates
@FV, @TY, @US
Stock Indices
@ES.D (day session),@ES, @NK, @NQ, @RTY, @YM
"How Do You Determine What The Best Result Is?"
Bar Sizes
Since results can vary dramatically depending on the size of the bar that is tested, I will test 5 different bar sizes:
60 minute
120 minute
360 minute
720 minute
1440 minute (daily)
Test Period
I will run all cases thru 10 years of historical data, from Jan 1, 2010 to Jan 1, 2020.
Other Test Criteria
As always, I will include proper amounts for slippage and commission in the study. Each market has its own value for slippage, based upon its liquidity and volume. I’ll use values that I have determined from real money trading, and also from in-depth analysis of bid-ask prices.
For some of the exits, the use of “Look Inside Bar Backtesting - LIBB” is necessary to get accurate results. If you do not know what LIBB is, or why it is important, check out this video, starting at 8:02: https://youtu.be/tNWdJeHRZNE?t=482
How To Compare Results
Of course, when comparing 567,000 tests, the question “how do you determine what is best?” will inevitably come up.
I am going to look at 2 different metrics:
Return on Account = Total Net Profit / Maximum Drawdown (shown in charts and tables as “Average of Return On Account”)
# of Cases With Net Profit > $25K = High Net Profit Cases (shown in charts and tables as “Sum of Prof > $25K”)
Of course, I could write a whole article on why I chose these particular metrics, and someone could counter with reasons why other performance metrics would be better.
My goal here was to compare risk adjusted returns, and also to identify which combinations produced a “good” overall Net Profit. My personal experience is that when both of these metrics are mediocre, chances are the strategy entry and exit just are not that good.
Summary Of Testing
40 markets x 5 Bar Sizes x 5 Entries x 3 Lengths per Entry x 15 Exits x 9 Settings Per Exit = 405,000 Unique Tests (later on in Part 5 I will add in more exits to the study, which will increase the test total to 567,000)
If you work with Tradestation at all, you’ll soon realize that all of this testing would be very tedious and time consuming!
Luckily, I have a great helper tool. It is called Multi-Opt, and it automates a lot of the testing process. So, for example, you do not have to run unique optimizations on every market and bar size. Multi-Opt uses Tradestation’s OOEL (Object Oriented Easy Language) and the Tradestation Optimization API to speed the process up.
Unfortunately, Multi-Opt is not available to the general public, but luckily it is available exclusively to students of my Strategy Factory workshop.
Even with Multi-Opt to speed up the testing, running all the cases actually took over 100 hours of non-stop testing, even after utilizing multi-threading.
"ALWAYS verify results with your own testing/analysis"
IMPORTANT NOTE:
I’ll be showing the results I obtained from this testing; if you run tests yourself, you may get different results, and therefore reach different conclusions. You may program entries and exits differently than I did, or you may use different ranges for variables than I did.
And just because Exit A is better overall than Exit B with average performance metrics, it does not mean it is always better. Maybe certain markets or bar sizes work better with Exit B than Exit A, for example.
The point here is that you can use the results I found to guide your research in testing, but ALWAYS verify results with your own testing/analysis. At the end of the day, you are going to be the person trading your account, so you should also be the person testing your particular strategies.
That being said, this study can be a huge time saver for you. For instance, why bother testing systems with the worst exit? Focus on the good results first!
Baseline (Stop and Reverse) Exit Results, and Time Based Exit Results
Stop and Reverse
It might seem like the Tradestation Easy Language code:
If close>close[InputVar2] then buy next bar at market;
If close<close[InputVar2] then sell short next bar at market;
has no exit at all, but that is not the case. With Tradestation, a “buy” comment means 2 things. First, any short is exited. Second, a long position is initiated. Vice versa for short trades. Thus, these standard buy/sell short keywords are stop and reverse commands.
For the stop and reverse exit case, that is the only exit – a reverse in position. These strategies are then, by definition, always in the market.
I should point out for this study that all exit cases include stop and reverse built in. That is because of the code show above. As mentioned previously, this code will reverse an existing position. And that is what I used for all the cases I am running.
As an alternative (I’ll leave the reader to test this), I could have run entry code like this:
If mp=0 and close>close[InputVar2] then buy next bar at market;
If mp=0 close<close[InputVar2] then sell short next bar at market;
“mp” refers to marketposition, so with the code above, the entries are only activated if the current position is flat. There is no stop and reverse for this code.
If you try such code, just remember to have other exits in the strategy; otherwise the strategy may enter a position and never exit!
Time Based Exit
If the trader assumes an entry signal will be “good” only for a certain number of bars, exiting after a certain number of bars makes a lot of sense. It has been said that legendary trader John Henry favors this type of exit.
In Tradestation, the code looks like this:
If MP=1 and BarsSinceEntry>InputVar4*5 then sell next bar market; //exit long trades
If MP=-1 and BarsSinceEntry>InputVar4*5 then buytocover next bar market; //exit short trades
I’ve set up InputVar4 to vary from 1 to 9, so with this exit, the strategy will stay in the trade for 5 to 45 bars after entry.
Now on to the results…
With all the data, the results are pretty clear: Stop and Reverse Exits are much better than Time Based Exits.
Stop & Reverse Exits provide a higher Avg Return on Account, and produce more “highly profitable” cases (after adjusting for the fact that Stop and Reverse exits have only one exit value, while time based exits have 9 values).
The other interesting thing to note is that overall, both exits lose money over the 10 year test, on average. Of course, a lot of that could be due to the markets chosen, the entries and the bar sizes.
Let’s see what breaking down the data a bit further looks like…
By Market Sector
When viewed by market sector, Stop & Reverse is always better than the Time Based Exit. And the only sectors, on average, that make money are Metals and the Stock Indices. This could be because of the trendiness of those sectors, as compared to other sectors.
By Bar Size
Many algo traders (myself included) will tell you that bigger chart bar sizes tend to be better for trading systems. Whether this is due to reduced noise in the larger bar sizes, or possibly getting further from the realm of high frequency trading firms, all other things being equal, daily bars are more profitable than 60 minute bars.
As shown in the tables below, the worst results are with the shortest bar – the 60 minute bars. The best bars are actually 720 minute (12 hours), followed by 1440 minute bars.
By Entry Type
I’ve previously done separate studies on entries before, and the conclusion was that breakout entries were superior to other common entries.
Results for this study confirm those earlier results.
Best entries for Stop & Reverse Exit:
1. Breakout
2. Bollinger Bands
3. Volatility Break
4. Momentum
5. Moving Average Cross
Best entries for Time Based Exit:
1. Bollinger Bands
2. Volatility Break
3. Breakout
4. Moving Average Cross
5. Momentum
For both exits, the top 3 entries were Bollinger Bands, Volatility Break and Breakout. And for 4 of the 5 entries, the Stop & Reverse exit was better than the time based exit.
By Entry Lookback Length
For each of the 5 entries, there is a lookback length for the calculation. I chose 15, 25, and 35 bars for the lookback, since this roughly corresponds to a short, medium and long term length.
These lookback lengths are not really all that different though. I probably should have tried 5, 50 and 100 or 200 bars for lookback. Oh well!
Results for these 3 lookbacks are similar, although the more responsive shorter lengths are better.
By Exit Parameter Value
Since Stop & Reverse has no exit parameter, the results will be the same for each value. For the Time Based Exits, the values shown in the tables below should be multiplied by 5 to convert to "number of bars to exit after".
The results show again that Stop & Reverse exits are always better than time based exits. Also of note it that quick time based exits (5 bars) are, as a whole, much worse than 45 bar exits.
Conclusion – Stop & Reverse Vs. Time Based Exits
From this study, it is pretty clear that the Stop & Reverse is a better exit than the Time Based Exit, regardless of the market sector, bar size or practically any other parameter.
Of course, that does not mean time based exits should be discarded, but it is good to know that many times they might just add system complexity without adding any real value.
Quick Takeaway, Part 1:
First Try Stop & Reverse Exits, Before Adding in Time Based Exits
Part 2 – Other Simple Exits
In this section I’ll look at 6 relatively simple exits – can any of these outperform the stop and reverse exit?
First I’ll start with dollar based stops and targets. In another study I did, I showed that many times ATR stops were better than Dollar stops. But, this is a different study, and we will see if we reach different conclusions.
For all testing, the input “InputVar4” runs from 1 to 9. So, the stop values in dollars per contract will run from $500 to $4500. Profit targets will run from $1000 to $9000. Finally for the value of InputVar=9, there is no stop loss or profit target.
Dollar Stop
Pretty much as simple as it gets. Having just this exit will let profits run until the reverse entry takes you out. No limit on potential profit.
SetStopLoss(InputVar4*500); //Dollar Stop Exit
Dollar Target
This profit target uses a limit order, so you should check to make sure that your platform will fill limit orders only if the limit price is exceeded.
This exit alone can be dangerous, as you are looking for the reverse entry to exit any bad trades. The loss on a trade could be significant. On the flipside, you are limiting your profit by having a target, which may not turn out to be a good idea.
SetProfitTarget(InputVar4*1000); //Dollar Target Exit
Dollar Stop Loss and Dollar Target
This exit has both a stop loss and a profit target. I have arbitrarily picked the profit level to be 2x the stop level. This obviously could be something that is optimized – maybe I’ll do a study of that in the future…
SetStopLoss(InputVar4*500); //Dollar Stop Exit
SetProfitTarget(InputVar4*1000); //Dollar Target Exit
In this section I’ll look at 6 relatively simple exits – can any of these outperform the stop and reverse exit?
First I’ll start with dollar based stops and targets. In another study I did, I showed that many times ATR stops were better than Dollar stops. But, this is a different study, and we will see if we reach different conclusions.
For all testing, the input “InputVar4” runs from 1 to 9. So, the stop values in dollars per contract will run from $500 to $4500. Profit targets will run from $1000 to $9000. Finally for the value of InputVar=9, there is no stop loss or profit target.
Dollar Stop
Pretty much as simple as it gets. Having just this exit will let profits run until the reverse entry takes you out. No limit on potential profit.
SetStopLoss(InputVar4*500); //Dollar Stop Exit
Dollar Target
This profit target uses a limit order, so you should check to make sure that your platform will fill limit orders only if the limit price is exceeded.
This exit alone can be dangerous, as you are looking for the reverse entry to exit any bad trades. The loss on a trade could be significant. On the flipside, you are limiting your profit by having a target, which may not turn out to be a good idea.
SetProfitTarget(InputVar4*1000); //Dollar Target Exit
Dollar Stop Loss and Dollar Target
This exit has both a stop loss and a profit target. I have arbitrarily picked the profit level to be 2x the stop level. This obviously could be something that is optimized – maybe I’ll do a study of that in the future…
SetStopLoss(InputVar4*500); //Dollar Stop Exit
SetProfitTarget(InputVar4*1000); //Dollar Target Exit
Earlier I referenced an earlier study I did on stop losses. If you want the "condensed" version, just watch this video:
Average True Range Exits
ATR Stop
ATR based exits are calculated using the 14 bar Average True Range. No limit on potential profit.
SetStopLoss(BigPointValue*InputVar4*AvgTrueRange(14)/3);
ATR Target
This profit target uses a limit order, so you should check to make sure that your platform will fill limit orders only if the limit price is exceeded.
This exit alone can be dangerous, as you are looking for the reverse entry to exit any bad trades. The loss on a trade could be significant. On the flipside, you are limiting your profit by having a target, which may not turn out to be a good idea.
SetProfitTarget(BigPointValue*InputVar4*AvgTrueRange(14)/1.5);
ATR Stop Loss and Dollar Target
This exit has both a stop loss and a profit target. I have arbitrarily picked the profit level to be 2x the stop level. This obviously could be something that is optimized – maybe I’ll do a study of that in the future…
SetStopLoss(BigPointValue*InputVar4*AvgTrueRange(14)/3);
SetProfitTarget(BigPointValue*InputVar4*AvgTrueRange(14)/1.5);
Overall Results
Results can be summarized as follows:
Stop & Reverse Exit is still the best.
Dollar based exits are generally better than ATR exits.
Target exits are generally better than stop exits.
Of all 3 combinations (stop, target or stop/target), the stop/target is always the worst.
The findings here are generally in line with the results of an earlier study I did. In that study, I found stop and reverse (“no exit” in earlier study) was the best, and ATR was a bit better than dollar exits (this study shows dollar exits are a bit better). This could be because of different strategies used, different performance metrics, etc.
I think the major takeaway is that the Stop & Reverse Exit still reigns supreme!
Stop & Reverse Exit is still the best.
Dollar based exits are generally better than ATR exits.
Target exits are generally better than stop exits.
Of all 3 combinations (stop, target or stop/target), the stop/target is always the worst.
The findings here are generally in line with the results of an earlier study I did. In that study, I found stop and reverse (“no exit” in earlier study) was the best, and ATR was a bit better than dollar exits (this study shows dollar exits are a bit better). This could be because of different strategies used, different performance metrics, etc.
I think the major takeaway is that the Stop & Reverse Exit still reigns supreme!
By Market Sector
For just about every market sector, Stop & Reverse is the winner. 2nd best is the Dollar Target exit. This flies in the face of the common market adage “let your profits run.” Maybe you only let your profits run up to a point. Interesting!
By Bar Size
Bar size analysis leads you to Stop & Reverse with 1440 minute bars as being the best.
Bar size analysis leads you to Stop & Reverse with 1440 minute bars as being the best.
By Entry Type
Maybe some entries work best with certain exits. What does the data tell us?
Once again, for the most part, Stop & Reverse exits are the best.
Quick Takeaway, Part 2:
First Try Stop & Reverse Exits, Then Try Dollar Target Exits
Maybe more complicated exits can beat out Stop & Reverse. I’ll examine that in Part 3.
Quick Takeaway, Part 2:
First Try Stop & Reverse Exits, Then Try Dollar Target Exits
Maybe more complicated exits can beat out Stop & Reverse. I’ll examine that in Part 3.
Part 3 - More Complicated Exits
Looking at the results so far, the simplest of simple exits - the Stop & Reverse Exit - is the clear winner. The video below discusses the first two parts of this article, and adds some additional analysis:
Looking at the results so far, the simplest of simple exits - the Stop & Reverse Exit - is the clear winner. The video below discusses the first two parts of this article, and adds some additional analysis:
In this section, I’ll take a look at some complicated exits. More complicated exits are usually a double edged sword. Many times these exits have more parameters to “tune,” which is great for creating backtests, but not necessarily great for real time performance. Remember, the more parameters to optimize, the greater the chances of curvefitting.
Trailing Exit
The trailing exit is simply an exit that trails below long positions, and vice versa for short.
//trailing stop
If marketposition=1 and openpositionprofit<maxpositionprofit-InputVar4*500 then sell next bar at market;
If marketposition=-1 and openpositionprofit<maxpositionprofit-InputVar4*500 then buytocover next bar at market;
where InputVar4*500 is the dollar amount you want to trail. Note this is not a stop order, but rather a market order that gets placed at next bar open.
The way I've written it, the condition is checked at the end of every bar. Note that maxpositionprofit is a Tradestation keyword, and it calculates the maximum profit at any point during the bar.
You could convert this exit to a stop order if you wanted to.
So let's say you had InputVar4=5. That means the trailing level is 5*500= $2500 per contract.
If maxpositionprofit never goes above $0, then when openpositionprofit drops below -2500, you will get an exit signal.
If maxpositionprofit hits $4000, then when openpositionprofit drops below 1500, you will get exit signal.
Breakeven Exit
A breakeven exit is pretty simple – when the profit reaches a certain point, if the profit goes back to $0, the position is exited. This is executed using a simple Tradestation keyword:
SetBreakEven(InputVar4*500);
Parabolic Exit
Chandelier Exit
Yo-Yo Exit
The Parabolic, Chandelier and Yo-Yo stops are all fairly complicated exits. I won’t explain them in detail here – there are plenty of good resources if you want to learn about them:
Parabolic - https://www.investopedia.com/terms/p/parabolicindicator.asp
Chandelier - https://corporatefinanceinstitute.com/resources/knowledge/trading-investing/chandelier-exit/
Yo-Yo Exit – I could not find a good explanation of this stop, but here is a nice graphic (courtesy of Chuck LeBeau)
Overall Results
So let's see how these 5 complicated exits perform, compared to our baseline (and current champion) Stop & Reverse Exit. Remember, the Stop & Reverse is in all the strategies, so the complicated exits will not take the place of stop & reverse, but will hopefully exit at more appropriate times than the stop & reverse does.
Results for these more complicated exits are grouped into 3 categories. First, there is the “good” group, which has a single constituent - the Breakeven Exit. It is not much worse than the Stop & Reverse Exit. The next group has the Trailing Exit and the Parabolic Exit, with performance definitely a step down from the Breakeven Exit. The Chandelier Exit and Yo-Yo Exit are in the worst performing group.
These different levels of performance (good, average, poor) can also be seen in a comparison chart of all the exits so far:
Results can be summarized as follows:
Stop & Reverse Exit is still the best.
Breakeven Stops are almost as good as Stop & Reverse.
These results hold true regardless of market sector (Stop & Reverse and Breakeven are always the best two), bar size or entry. The results and conclusions are pretty consistent.
One other interesting note here is that the smaller breakeven stop thresholds ($500 - $1000) tend to perform better. But overall the Stop & Reverse still is better than the Breakeven stop.
Can anything beat the Stop & Reverse Exit?!?!?!
Stop & Reverse Exit is still the best.
Breakeven Stops are almost as good as Stop & Reverse.
These results hold true regardless of market sector (Stop & Reverse and Breakeven are always the best two), bar size or entry. The results and conclusions are pretty consistent.
One other interesting note here is that the smaller breakeven stop thresholds ($500 - $1000) tend to perform better. But overall the Stop & Reverse still is better than the Breakeven stop.
Can anything beat the Stop & Reverse Exit?!?!?!
Once again, for the most part, Stop & Reverse exits are the best.
Quick Takeaway, Part 3:
First Try Stop & Reverse Exits, Then Try Breakeven Exits
Quick Takeaway, Part 3:
First Try Stop & Reverse Exits, Then Try Breakeven Exits
Up until this point, all the exits used have been based in part on the entry signal. The stop I have examined are based on dollars and ATRs, and use the trade entry price or bar to determine the actual level.
What about exits that did not care about the trade entry? In other words, exits based on their own calculations. Can they beat out Stop & Reverse? I’ll examine that in Part 4.
What about exits that did not care about the trade entry? In other words, exits based on their own calculations. Can they beat out Stop & Reverse? I’ll examine that in Part 4.
Part 4 - 2 Technical Indicator Type Exits
For all the exits so far (except for Stop & Reverse and Yo-Yo), the exits were tied in some way to the entry price. The Breakeven stop, for example, is set based on the entry price, and the profit and loss from that point. So are all the dollar and ATR stops and targets. And the parabolic and chandelier stops, while incorporating price action in them, are still based on the conditions when the trade begins.
Well, maybe the best time to exit has no relationship to when you enter. Possibly, a good exit can be determined based on analysis of price itself - simple technical levels, indicators, etc. Many traders use support and resistance lines, for example, to exit.
Of course, looking at technical indicators for exiting opens the door to an unlimited array of exits - every entry you can think of could instead function purely as an exit.
Back in 2017, I hosted a weekend retreat for an advanced group of traders in Cleveland, Ohio. One of the things we did was build entries and exits as a group. And one of the findings was that "entries as exits" worked pretty well - usually better than standard run of the mill stops.
This short video explains the concept a bit better:
For this section, I’ll try 2 simple and popular, yet usually effective, exits based on technical indicators/price action.:
Channel Exit
Simply exit long positions on the next bar if the lowest low of the last X bars is hit. Vice versa for short positions.
Moving Average Exit
When in a long position, if the close crosses below the X bar moving average, exit the long position. Vice versa for short.
I chose these 2 "entries as exits" because they are pretty common, and easy to implement. Obviously, I just scratched the surface with this concept, so I'll leave it to the reader to take the next steps with the idea.
Overall Results
Yuck!
These exits are nowhere near as good as Stop & Reverse. So, rather than bore you with details of the results, I’ll just stop here. The Channel & Moving Average Exits - at least how I tested them - are not that good.
Here are the results for Return on Account and Cases With Profit > $25K, for all 15 of the tested exits.
These exits are nowhere near as good as Stop & Reverse. So, rather than bore you with details of the results, I’ll just stop here. The Channel & Moving Average Exits - at least how I tested them - are not that good.
Here are the results for Return on Account and Cases With Profit > $25K, for all 15 of the tested exits.
This has been an interesting study so far, but also a bit depressing. I thought for sure something - anything! - would beat the simple Stop & Reverse Exit. Yet nothing has!
Maybe my results are a fluke, a testament to keeping strategies simple. Maybe you'll get different results in your testing (I highly encourage you to try).
Quick Takeaway, Part 4:
Stop & Reverse Exits Still The Best!
Part 5 - Combination Exits
OK, I'll admit it - I am a bit bummed about the findings so far. Sure, back in Part 1 I found that Stop & Reverse Exits were the best, but I felt for sure one of the other 14 exits I tried would do better.
Yet nothing has topped Stop & Reverse yet! And keep in mind, that is across multiple market sectors, bar sizes, entries and entry parameter settings. In almost all cases - and certainly overall as a whole - Stop & Reverse is the clear winner.
Up to this point, the top 4 exits for Average Return on Account look like this:
OK, I'll admit it - I am a bit bummed about the findings so far. Sure, back in Part 1 I found that Stop & Reverse Exits were the best, but I felt for sure one of the other 14 exits I tried would do better.
Yet nothing has topped Stop & Reverse yet! And keep in mind, that is across multiple market sectors, bar sizes, entries and entry parameter settings. In almost all cases - and certainly overall as a whole - Stop & Reverse is the clear winner.
Up to this point, the top 4 exits for Average Return on Account look like this:
Maybe a combination exit would improve performance. For example, having a Dollar Target with a Breakeven Exit, or a Dollar Target with A Trailing Exit.
I will test 6 of these combination exits:
Dollar Target with Breakeven Exit
Dollar Target with Trailing Exit
Dollar Stop with Breakeven Exit
Dollar Stop with Trailing Exit
Dollar Stop/Target with Breakeven Exit
Dollar Stop/Target with Trailing Exit
Results
The combination exits are shown highlighted in the tables below.
I will test 6 of these combination exits:
Dollar Target with Breakeven Exit
Dollar Target with Trailing Exit
Dollar Stop with Breakeven Exit
Dollar Stop with Trailing Exit
Dollar Stop/Target with Breakeven Exit
Dollar Stop/Target with Trailing Exit
Results
The combination exits are shown highlighted in the tables below.
So, none of the combinations improve upon the simpler single exits. This is a bit disappointing!
The study has done a lot of testing, and what have we found? Stop & Reverse Exits – pretty much the simplest exit possible – turns out to be the best. This is pretty much true across different market sectors, different bar sizes and different entries.
After seeing all the data, I REALLY want something to beat simple Stop & Reverse. While I was thinking of ideas, I was chatting with my Strategy Factory student Rogerio from Brazil. He attended my workshop a few years ago, and it still developing systems the Strategy factory way (nice!).
Anyhow, in chatting with Rogerio, I thought of this variation:
Stop and Reverse With a Dead Zone (Hysteresis)
With a normal Stop and Reverse, you are always in, Long or Short:
If high=highest(high,InputVar2) then buy next bar at market;
If low=lowest(low,InputVar2) then sell short next bar at market;
After talking with Rogerio, I thought "what if I front run that reverse, and exit earlier?" Would that make a difference?
Something like this:
If high=highest(high,InputVar2) then buy next bar at market;
If low=lowest(low,InputVar2) then sell short next bar at market;
If marketposition=-1 and high=highest(high,InputVar2-5) then buytocover next bar at market;
If marketposition=1 and low=lowest(low,InputVar2-5) then sell next bar at market;
I arbitrarily selected a 5 bar "front run" - maybe something shorter will be better, maybe something longer.
For each entry, I included this new "dead zone" feature. Here are the results...
Results
I ran the test with the 3 best exits: Stop & Reverse, Dollar Target and Breakeven. Those results are in the column "Average of Return on Account" - nothing new here, they were discussed earlier.
Then, I ran those same 3 cases with the Early/Fast Stop option, as described above. These results are in the column "Average of Return on Account with Fast Stop (no Reverse)." These are the new results.
As you can see below, in each case the results are WORSE with the new exit.
Results
I ran the test with the 3 best exits: Stop & Reverse, Dollar Target and Breakeven. Those results are in the column "Average of Return on Account" - nothing new here, they were discussed earlier.
Then, I ran those same 3 cases with the Early/Fast Stop option, as described above. These results are in the column "Average of Return on Account with Fast Stop (no Reverse)." These are the new results.
As you can see below, in each case the results are WORSE with the new exit.
Just to confirm the results were not a fluke, I decided to look at each individual entry - maybe some entries like this early exit option, while some do not.
NOPE!
NOPE!
So, based on this study, trying to "front run" the standard Stop & Reverse Exit is not a worthwhile pursuit.
Conclusion
What has this study taught us?
Stop & Reverse Exits are the best
Dollar Target Exits and Breakeven Exits are runners up – close to, but not as good as, performance of Stop & Reverse
No Exit generates profit across all market sectors, bar sizes and entry method
That is what I found, in a pretty comprehensive research project. But, could you do the test yourself, and find something different? ABSOLUTELY! As I explained in the beginning, I made a lot of decisions about how and what to test. If you test something different - maybe use different entries, for example - then you might reach completely different conclusions.
So while this study might help you avoid certain dead-ends in testing, I HIGHLY RECOMMEND you test things for yourself. That is what I teach my Strategy Factory students, and I find they have much more confidence in their own trading because of it!
How I Plan On Using Results
Stop and Reverse will always be the first thing I test. Next, I'll look at Dollar Target exits, followed by Breakeven exits. I will use this as part of my Strategy Factory process, which helps ensure that the risk of curve fitting and over optimization remains low. If you want to learn more award the Strategy Factory - the process I used to win a Worldwide, Real Money Trading Contest - just visit this link: Strategy Factory Workshop
So, good luck, and happy testing!!!
****************************************************************
This Exit Challenge is closed, results can be found here: www.kjtradingsystems.com/can-these-exits-beat-stop-and-reverse.html
Challenge: Do you think you have an exit that can outperform Stop & Reverse, on the 5 entries, 40 markets, 5 bar sizes and 10 years I tested? I’d love to hear from you!
Rules
1. Send me the code for your exit in Tradestation format (make sure it is verified). The exit has to be ready to go - I will not code it for you. See examples below)
2. Exit can have up to 2 parameters to optimize (you have to give me the ranges to use, and remember I take the average results, not optimum. So your ranges should produce good results not matter the value used.) BIG HELP: The first parameter should be called "InputVar2" and the second one "InputVar4" - if you do that before you submit, it will make my job easier.
3. If you optimize 1 parameter, you can have up to 9 values. If you have 2 parameters to optimize, you can have 3 values for each parameter (9 cases total). You can have fewer than 9 total values, also.
4. The code has to be fairly simple (in my final judgment)
5. No proprietary or secret formulas allowed, because if it beats Stop & Reverse, I’ll share your code with all readers. So if you want to keep your exit a secret, don’t send it in!
6. Criteria will be “Average Return On Account” - just like I calculated in this study. It has to beat this:
7. One submission per person
8. Since testing takes a while, I will accept only the first 15 submittals
9. I will test with LIBB=1 minute,
10. No SetDollarTrailing, SetPercentTrailing or any other exits (in my opinion) which I feel might be tricking the backtest
11. I will accept the first 15 submittals before December 15th.
12. I am the final judge on all decisions.
13. Void where prohibited by law.
Prizes
If your exit outperforms the Stop & Reverse Exit, I’ll send you autographed copies of all 4 of my books.
AND if multiple people submit winning exits, I’ll give the top 3 a $1500 discount on my Strategy Factory workshop! (Current workshop students are only eligible for the autographed books, not the discount.)
Finally, for the best exit that beats Stop & Reverse, you will be recognized as the “Exit Champion” and I’ll post your info (if you desire) on my website and social media.
This Exit Challenge is closed, results can be found here: www.kjtradingsystems.com/can-these-exits-beat-stop-and-reverse.html
Entries
E-mail me your exit code and parameter ranges, in Tradestation Easy Language format. Send it to [email protected]
My 2 Exit Entries
Here are 2 examples to follow if you are making a submittal:
*******************************************************************
Exit Challenge Submittal
Catchy Exit Name: PP8175
Name: Kevin Davey
E-Mail: [email protected]
If this exit wins, I give Kevin the right to publish code and results: Yes
Code:
//Inputs, ranges:
//ppfloor1 = 1000 to 3000, step 1000 (3 values)
//ppratio1 = .50 to .70, step .10 (3 values)
//set ppfloor and ppratio values to protect profit
Input: ppfloor1(1000); //don’t invoke exit 1 until $1000 profit level is reached
Var: ppfloor2(0); //don’t invoke exit 2 until ppfloor2 profit level is reached
Var: ppfloor3(0); //don’t invoke exit 3 until ppfloor3 profit level is reached
ppfloor2=2*ppfloor1;
ppfloor3=3*ppfloor1;
Var:ppratio(0); //depends on maxpositionprofit
Input:ppratio1(.60); //profit exit 1 keep ratio – keep 60% of maximum profit
Var:ppratio2(0); //profit exit 2 keep ratio – keep ppratio2 of maximum profit
Var:ppratio3(0); //profit exit 3 keep ratio – keep ppratio3 of maximum profit
ppratio2=ppratio1+.15;
ppratio3=ppratio2+.15;
If maxpositionprofit>=ppfloor1 then ppratio=ppratio1;
If maxpositionprofit>=ppfloor2 then ppratio=ppratio2;
If maxpositionprofit>=ppfloor3 then ppratio=ppratio3;
If maxpositionprofit>=ppfloor1 then begin
if (openpositionprofit/maxpositionprofit)<ppratio then begin
if marketposition=1 then Sell next bar at market;
if marketposition=-1 then Buy To Cover Next bar at market;
End;
End;
*******************************************************************
*******************************************************************
*******************************************************************
Exit Challenge Submittal
Catchy Exit Name: Tradestation SetPercentTrailing Replacement (https://community.tradestation.com/Discussions/Topic_Archive.aspx?Topic_ID=8714#46331)
Name: Kevin Davey
E-Mail: [email protected]
If this exit wins, I give Kevin the right to publish code and results: Yes
Code:
//Inputs, ranges:
//FloorAmt = 500 to 2500, step 1000 (3 values)
//TrailingPct = 20 to 60, step 20 (3 values)
inputs:
PositionBasis( false ),
FloorAmt( 1 ),
TrailingPct( 20 ) ;
variables: BSE( 0 ), HH( 0 ), LL( 0 ), HighProfit( 0 ), CalcFloor( 0 ), Trail( 0 ), MyStopPrice( 0 ) ;
if MarketPosition <> 0 then
begin
BSE = BarsSinceEntry( 0 ) ;
CalcFloor = FloorAmt ;
if PositionBasis then
HighProfit = MaxPositionProfit( 0 )
else
HighProfit = MaxContractProfit( 0 ) ;
end;
if MarketPosition = 1 then
begin
HH = Highest( High, BSE ) ;
if HighProfit >= CalcFloor then
begin
Trail = (TrailingPct * .01) * ( HH - EntryPrice( 0 ) ) ;
MyStopPrice = HH - Trail ;
end;
end;
if MarketPosition = -1 then
begin
LL = Lowest( Low, BSE ) ;
if HighProfit >= CalcFloor then
begin
Trail = (TrailingPct * .01) * ( EntryPrice( 0 ) - LL ) ;
MyStopPrice = LL + Trail ;
end;
end;
if MarketPosition <> 0 and MaxPositionProfit > FloorAmt and MyStopPrice <> 0 then
begin
if MarketPosition = 1 then
Sell ("Alt%Trl LX") Next Bar at MyStopPrice Stop ;
if MarketPosition = -1 then
BuytoCover ("Alt%Trl SX") Next Bar at MyStopPrice Stop ;
end ;
8. Since testing takes a while, I will accept only the first 15 submittals
9. I will test with LIBB=1 minute,
10. No SetDollarTrailing, SetPercentTrailing or any other exits (in my opinion) which I feel might be tricking the backtest
11. I will accept the first 15 submittals before December 15th.
12. I am the final judge on all decisions.
13. Void where prohibited by law.
Prizes
If your exit outperforms the Stop & Reverse Exit, I’ll send you autographed copies of all 4 of my books.
AND if multiple people submit winning exits, I’ll give the top 3 a $1500 discount on my Strategy Factory workshop! (Current workshop students are only eligible for the autographed books, not the discount.)
Finally, for the best exit that beats Stop & Reverse, you will be recognized as the “Exit Champion” and I’ll post your info (if you desire) on my website and social media.
This Exit Challenge is closed, results can be found here: www.kjtradingsystems.com/can-these-exits-beat-stop-and-reverse.html
Entries
E-mail me your exit code and parameter ranges, in Tradestation Easy Language format. Send it to [email protected]
My 2 Exit Entries
Here are 2 examples to follow if you are making a submittal:
*******************************************************************
Exit Challenge Submittal
Catchy Exit Name: PP8175
Name: Kevin Davey
E-Mail: [email protected]
If this exit wins, I give Kevin the right to publish code and results: Yes
Code:
//Inputs, ranges:
//ppfloor1 = 1000 to 3000, step 1000 (3 values)
//ppratio1 = .50 to .70, step .10 (3 values)
//set ppfloor and ppratio values to protect profit
Input: ppfloor1(1000); //don’t invoke exit 1 until $1000 profit level is reached
Var: ppfloor2(0); //don’t invoke exit 2 until ppfloor2 profit level is reached
Var: ppfloor3(0); //don’t invoke exit 3 until ppfloor3 profit level is reached
ppfloor2=2*ppfloor1;
ppfloor3=3*ppfloor1;
Var:ppratio(0); //depends on maxpositionprofit
Input:ppratio1(.60); //profit exit 1 keep ratio – keep 60% of maximum profit
Var:ppratio2(0); //profit exit 2 keep ratio – keep ppratio2 of maximum profit
Var:ppratio3(0); //profit exit 3 keep ratio – keep ppratio3 of maximum profit
ppratio2=ppratio1+.15;
ppratio3=ppratio2+.15;
If maxpositionprofit>=ppfloor1 then ppratio=ppratio1;
If maxpositionprofit>=ppfloor2 then ppratio=ppratio2;
If maxpositionprofit>=ppfloor3 then ppratio=ppratio3;
If maxpositionprofit>=ppfloor1 then begin
if (openpositionprofit/maxpositionprofit)<ppratio then begin
if marketposition=1 then Sell next bar at market;
if marketposition=-1 then Buy To Cover Next bar at market;
End;
End;
*******************************************************************
*******************************************************************
*******************************************************************
Exit Challenge Submittal
Catchy Exit Name: Tradestation SetPercentTrailing Replacement (https://community.tradestation.com/Discussions/Topic_Archive.aspx?Topic_ID=8714#46331)
Name: Kevin Davey
E-Mail: [email protected]
If this exit wins, I give Kevin the right to publish code and results: Yes
Code:
//Inputs, ranges:
//FloorAmt = 500 to 2500, step 1000 (3 values)
//TrailingPct = 20 to 60, step 20 (3 values)
inputs:
PositionBasis( false ),
FloorAmt( 1 ),
TrailingPct( 20 ) ;
variables: BSE( 0 ), HH( 0 ), LL( 0 ), HighProfit( 0 ), CalcFloor( 0 ), Trail( 0 ), MyStopPrice( 0 ) ;
if MarketPosition <> 0 then
begin
BSE = BarsSinceEntry( 0 ) ;
CalcFloor = FloorAmt ;
if PositionBasis then
HighProfit = MaxPositionProfit( 0 )
else
HighProfit = MaxContractProfit( 0 ) ;
end;
if MarketPosition = 1 then
begin
HH = Highest( High, BSE ) ;
if HighProfit >= CalcFloor then
begin
Trail = (TrailingPct * .01) * ( HH - EntryPrice( 0 ) ) ;
MyStopPrice = HH - Trail ;
end;
end;
if MarketPosition = -1 then
begin
LL = Lowest( Low, BSE ) ;
if HighProfit >= CalcFloor then
begin
Trail = (TrailingPct * .01) * ( EntryPrice( 0 ) - LL ) ;
MyStopPrice = LL + Trail ;
end;
end;
if MarketPosition <> 0 and MaxPositionProfit > FloorAmt and MyStopPrice <> 0 then
begin
if MarketPosition = 1 then
Sell ("Alt%Trl LX") Next Bar at MyStopPrice Stop ;
if MarketPosition = -1 then
BuytoCover ("Alt%Trl SX") Next Bar at MyStopPrice Stop ;
end ;
After writing this article, I got some great feedback, but a small portion of traders were just overwhelmed. Too much code. Strategies that were too complicated,. And so on. So, I put together this little add-on write up of more generic exit techniques. These are some great exit trading strategies concepts.
They can be the best forex exits and best futures market exits around.
You'll have to build your own code for these!
They can be the best forex exits and best futures market exits around.
You'll have to build your own code for these!
Trend-Following Strategy
A trend-following strategy is when traders look to buy strength and sell weakness. This means that they look to buy an asset or security on pullbacks in price, or after it shows signs of strengthening.
When buying a strong trending asset, traders should always look for signs of a reversal before exiting the position. Let the trend run until is runs no more is my motto!
When buying a strong trending asset, traders should always look for signs of a reversal before exiting the position. Let the trend run until is runs no more is my motto!
Momentum Reversal Strategy
The momentum reversal strategy looks to take advantage of impulse reversals in price. This involves identifying when an asset has created impetus over a given period of trend, which can usually be determined by the size of the moves being made.
Traders should then look to enter at that point, and exit once they see signs of a reversal. By entering more trades during these periods, it increases the chances of success as momentum tends to be strong in both directions.
Traders should then look to enter at that point, and exit once they see signs of a reversal. By entering more trades during these periods, it increases the chances of success as momentum tends to be strong in both directions.
Reversion to the Mean Trading Strategy Exit
The reversion to the mean trading strategy is a form of mean reversion. This principle suggests that when an asset’s price has deviated from its historic average for some period of time, it will, in all likelihood, move back toward its original state. Traders should look for signs of this happening and enter trades as soon as they can capitalize on the price action.
Once they believe that the price has moved far enough away from the mean, they should exit out of their position and wait for the next potential entry point.
Once they believe that the price has moved far enough away from the mean, they should exit out of their position and wait for the next potential entry point.
Countertrend Strategy Exit
In contrast to a mean reversion trading strategy, the countertrend strategy works in the opposite direction and trades against market trend. Basically, when a trader notices that an asset’s price is diverging from its trend, they take a short position and make money when the price eventually reverts back to its original state.
This can be an effective way of making profits, but traders must ensure they have the correct exit strategy in place before entering into any trades.
This can be an effective way of making profits, but traders must ensure they have the correct exit strategy in place before entering into any trades.
Contrarian Investing Strategy Exit
Contrarian investing involves taking a position that goes against the majority opinion of other investors. The idea behind contrarian investing is to buy or sell an asset when its price is low and out of favor, in the hopes that it will eventually rebound and generates a profit. A key part of successful contrarian trading is to establish an exit plan before entering any trades. This should include a mental stop-loss and/or close prices that might signify when it’s time to abandon a trade if not profitable.
The Breakout or Reversal Exit Strategy
The breakout or reversal exit strategy is a great choice for traders looking to take advantage of sudden market changes. This strategy involves exiting a position before the price reverses, allowing you to exit with profits and avoid losses. To use this technique, wait for the price to break out of its current range and enter into a new trend.
nce established, look for an opportunity to exit the trade before it turns around again.
nce established, look for an opportunity to exit the trade before it turns around again.
The Contingency Exit Strategy
The contingency exit strategy is an essential part of any trading plan. This strategy includes preparing in advance what will trigger your exit from a trade. For instance, if you are using the breakout strategy described above, you could set a lower mark to indicate when it’s time to exit the trade and lock in profits.
The contingency exit strategy also applies to losing trades; when prearranged conditions are met, you should consider exiting your position to avoid further losses.
The contingency exit strategy also applies to losing trades; when prearranged conditions are met, you should consider exiting your position to avoid further losses.
The Trailing Stop Loss Exit Strategy
Trailing stops are great because they help you to manage risk and optimize your gains. This exit strategy involves you continuously modifying the stop-loss level of a particular trade as it reaches its desired rate of profit. As the currency pair rises in value, your stop-loss will move alongside it, affording you more protection from competing trends that can erode your position.
As soon as the forex currency pair’s rate begins to fall, however, the trailing exit could activate – ensuring that any profits are locked in.
As soon as the forex currency pair’s rate begins to fall, however, the trailing exit could activate – ensuring that any profits are locked in.
The Automatic Breach Trigger Exit Strategy
Here’s another great exit strategy, perfect for Forex traders or futures traders who plan to be away from their trading desk.
This strategy is based on setting a notification that can trigger once a position has breached a certain price level. It’s usually used in multi-day trends, and the trailing stops will be set at the desired rate of profit then when the price reaches this level all positions are closed by the trader, thus realizing their maximum gain and reducing risk.
This strategy is based on setting a notification that can trigger once a position has breached a certain price level. It’s usually used in multi-day trends, and the trailing stops will be set at the desired rate of profit then when the price reaches this level all positions are closed by the trader, thus realizing their maximum gain and reducing risk.
The Limit Order Exit Strategy
Here’s one last exit strategy...
The limit order exit strategy is designed for those traders who are looking to get out on a specific price level. In this case, the trader sets up an order ahead of time, so they will receive a notification when that preset level is met. This is great for those traders who don’t want to be trading 24 hours a day, as they can easily enter in the details before leaving their trading desk, and then receive their gains when the set threshold is reached.
The limit order exit strategy is designed for those traders who are looking to get out on a specific price level. In this case, the trader sets up an order ahead of time, so they will receive a notification when that preset level is met. This is great for those traders who don’t want to be trading 24 hours a day, as they can easily enter in the details before leaving their trading desk, and then receive their gains when the set threshold is reached.
If you enjoyed this article, please share it with your social media traders and friends!
About The Author: Kevin Davey is an award winning private futures, forex and commodities trader. He has been trading for over 25 years.Three consecutive years, Kevin achieved over 100% annual returns in a real time, real money, year long trading contest, finishing in first or second place each of those years.
Kevin is the author of the highly acclaimed best trading book "Building Algorithmic Trading Systems: A Trader's Journey From Data Mining to Monte Carlo Simulation to Live Trading" (Wiley 2014). Kevin provides a wealth of trading information at his website: http://www.kjtradingsystems.com
Copyright, Kevin Davey and KJ Trading Systems. All Rights Reserved. Reprint of above article is permitted, as long as the About The Author information is included.
Kevin is the author of the highly acclaimed best trading book "Building Algorithmic Trading Systems: A Trader's Journey From Data Mining to Monte Carlo Simulation to Live Trading" (Wiley 2014). Kevin provides a wealth of trading information at his website: http://www.kjtradingsystems.com
Copyright, Kevin Davey and KJ Trading Systems. All Rights Reserved. Reprint of above article is permitted, as long as the About The Author information is included.