Using luck to your advantage: Improving on trailing stop mechanisms in FX trading

There is always a large level of uncertainty when entering a position in the market. A trade can always go in your favor or against you and in the very short term there is little you can do to predict individual trade outcomes. Of course in the medium to long term you expect a properly tested trading mechanism to show a positive expectancy but when it comes to individual trades you will have at most a small statistical edge that you need to care for as much as possible. However can we do something to make sure that we take advantage of the times where we are “lucky” instead of just working on the expectancy of the average case? Can we modify our trade management such that it accommodates situations in which we are extremely favored by chance? On today’s article we will be taking about some modifications to trailing stop mechanisms that can be carried out to increase your ability to benefit from pure chance that develops in your favor.


When you design your system based on average expectations you usually achieve sub-optimal results on a significant variety of trading scenarios. For example let us say you have designed a system that uses a trailing stop that always remains 100 pips behind the most favorable price that has happened and you see that this works fairly well for your system’s average trade. However there are some times when the market quickly moves 200 pips in your favor and then immediately retraces all those pips to effectively take out your stop. You wish you had some way of having your system move the stop further when such a scenario happens but you certainly wouldn’t want to make this a general case – because on most cases what you have works great – you just want to be able to take advantage of being lucky without damaging your general trading scenario.

To create tools that can help us take advantage of “lucky outcomes” we need to first define what “lucky” really means. In my view being lucky refers to times when you get a huge unexpected increase in price in your favor which may happen due to news being surprising and well aligned with your positions or some other similar unexpected event. In general we would consider something abnormal if the increase in price is significantly above the expected level of volatility. To do this you can calculate the expected volatility for a given trading hour – say look at the last 20 occurrences of that hour and see how much the market has moved – and you can then see whether movements within that hour are to be considered normal or abnormal. Any movement that is more than 2 to 3 standard deviations away from the average for a given bar should be considered a case of you being “lucky”.


After you determine that you have had a “lucky bar” you can then decide to boost your stop for the portion of that volatility that deviates from the average. This ensures that you tighten the stop around the huge leap in price but it also ensures that you leave room in case the movement leads to a huge trend that may benefit you much more significantly. In general it is a terrible idea to use take profits to attempt to take advantage of these occurrences but you do want to move any trailing stop closer to ensure that you can avoid giving back what has been given to you due to chance. When you do this you then ensure that whenever something like this happens you take advantage of it while giving your trade the breathing room it may require for a significant expansion over future advances.

You can keep track of all the “lucky bars” and simply accumulate positive advances on your trailing stop as this happens, this works very well with function based trailing stops which are time dependent instead of price dependent. If you determine that the average expected volatility for a bar is 20 pips and you get a 100 pip advance then you move the function based trailing stop instantly +80 pips and you secure most of what the market has given you due to some unexpected event. If after that bar there is another bar where an advance of 100 pips was made and you expected only a 40 pip movement then you bank another 60 pips. If your trailing stop function has an expected break-even point of 20 bars you can in fact have a much lower effective BE point if you just happen to be lucky.

Of course the above mentioned mechanism is only one way to detect what may be considered a “lucky bar” and many variations over this subject are possible. You can change the number of bars used to calculated the volatility distribution for a given hourly bar, you can change the threshold to consider a bar lucky or – better yet – you can introduce a “lucky function” in which the amount of pips that you add to your trailing stop depends linearly of how much a bar deviates from the average. In this sense you will have a much better tracking of lucky outcomes and your trailing function will vary accordingly with time. You can also introduce thresholds for lucky functions, for example only increase trailing from luck if the bar closes above the trade’s opening price or you can even only take into account luck if it happens within a given number of bars after entry.


Overall the concept of taking advantage of luck is quite important since you need to take advantage of as much as you can when you aren’t favored by your entries statistical edge but my mere random chance. Doing so ensures that you will be able to create strategies that won’t give back as much and will yet allow trades to breath according to predicted volatility levels. If you would like to learn more about automated trading system generation and how you can use advanced GPU technology to test potentially billions of price action based strategies every day  please consider joining, a website filled with educational videos, trading systems, development and a sound, honest and transparent approach towards automated trading in general.



Print Friendly, PDF & Email
You can leave a response, or trackback from your own site.

Leave a Reply

internal_server_error <![CDATA[WordPress &rsaquo; Error]]> 500