June 11


Advanced Stops and Targets Strategy Tool

By Jeff Swanson

June 11, 2012

automated trading, Automated Trading Development, EasyLanguage, stops, Video

Several recent articles I’ve written explained my techniques for developing and testing trading systems. The trading system we have been working on is a very simple breakout strategy called FirstStrike. The first couple of articles on this subject I used a regime filter and a trend strength filter to help reduce unproductive trading times. Next I wanted to explore a few exit techniques. But before jumping into testing exit techniques, I wanted to show you a simple tool I created to help me test other exits.

The tool is a simple strategy to assist me in testing various stops and targets. My program is not completely unique. It’s actually based off an existing TradeStation strategy, called _Stops&Targets. I’ve taken this program and modified it with several other exit techniques. The code is available for download at the bottom of this article and is called _Stops&TargetsAdvanced. This strategy can be inserted into any chart to help you quickly test various exit techniques.

Below is an image of the _Stops&TargetsAdvanced  strategy applied to a chart. You can see this strategy is running in parallel with another strategy called MA Simple. MA Simple is a moving average cross over system that only generates entry signals. All exit signals are generated by the _Stops&TargetsAdvanced strategy.

My code has the same stops and targets available in TradeStation’s original version, but I’ve expanded the capabilities to include the following nine new stops:

  1. Bar Count Exit – Exit a position based on the number of bars since the position was opened.
  2. ATR Hard Stop – Exit a position based on the average true range of the market. This is a fixed stop loss. In other words the stop does not advance as a position moves in your favor. However, the value of the stop loss is updated on each bar close to adjust for the current market ATR.
  3. ATR Trail – Trailing stop based on the average true range of the market.
  4. Square root ATR Trail – This stop was explained in the article  ATR Square Root.
  5. Noise Tolerant Stop – This technique was demonstrated in the article A Noise Tolerant Money Management Stop and provides a linear regression based stop which is also a non-optimized based exit.
  6. Moving Average Exit – Exit a position based upon when price crosses beyond a simple moving average.
  7. RSI Exit – Exit a position based on an RSI value.
  8. Day Of Week Exit – Exit a position based upon the day of the week. By using this stop you can close all positions on a specific weekday, such as Friday.
  9. Time of Day Exit – Exit a position at a specific time during the day. This is only used with systems that trade intraday.

Next I will explain the input values for these nine new stops.

  • ExitToTest – This indicates which stop to test. At the time of this writing there are nine stops to test. Simply enter the digit (see above for the correct digit) of the stop to activate.
  • NumBars – The number of bars to exit a position since the entrybar.
  • ATRLen – The number of bars to use in ATR calculation.
  • ATRMult – This number is the ATR multiple. The value is multiplied by the ATR to generate a final value.
  • NTStop_N – The look back period for the noise tolerant stop.
  • MALen – The look back period to use for the moving average based exit.
  • RSILen – The look back period to use for the RSI based exit.
  • iDayOfWwek – The day of week to exit. 1 for Monday and 5 for Friday.
  • ExitTime – The time of day to exit a position. Time should be expressed in military time.

The video explains the code and how to use these stops in much more detail. A future modification I would like to add would be to base exit decisions on a different time-frame. Currently all exit decisions are based on the same time-frame in which trades are executed. It’s a common practice to base exit decisions on a higher time-frame.

The code is available below and of course, you can freely change it by adding new stops or modify the existing stops. Please, change to your liking. Please note however, this tool is for backtesting. It has not been designed or tested on live markets. In closing, please leaving your comments below.

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.

  • Hi Jeff, big thanks for this info. The video doesn’t seem to be working, it says “This video is private”. Can you fix the permissions?

  • Hi Jeff, You mentioned future modification based on exiting on different time-frame? It would be good to see that too, have you done it on another article somewhere instead?

    • Hello John. There is a TradeStation ELD at the bottom of the article. The strategy should work fine on intraday charts. However, I’ve only tested it on standard time based bars.

  • I downloaded your Advanced Stops and Targets text file. When compiling it, the compiler does not recognize the function NTStop. I looked unsuccessfully for the code for this function. There is a link to an article on Noise Tolerant Stops that sounded promising but the link is broken.

    Thank you for all that you do on the website. I don’t visit it nearly as much as I would like to but learn something everytime I do.

  • Very good! I’m wanting to experiment with Ichimoku strategies . . . & experiment with automation. Any recommendations would be appreciated!

    • Hello John. I don’t think there are any Ichimoku strategies on this site. However, we do have a lot of other example strategies with code here. We also have articles on building strategies, here. Hope this helps!

  • Hey Jeff is there a way to change the code so that the stop method itself can be optimized automatically by tradestation?

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

    Learn To Code & Build Strategies
    Using EasyLanguage.