Following the trend

Following the trend

Trend Trading Model, following the trend By Mr Cleanow I recently finished reading following the trend by Andreas F Cleanow.

In the book, Mr Cleanow constructs a simple Trend following Module which he then thoroughly tests across a diverse investment Universe. He then compares the results achieved by this simple trend module to the results achieved by most successful hedge funds.

The equity curve achieved by this model is more or less the same as what the big CTA’s out there are achieving year on year with acceptable draw downs. I decided to code the model and put it to test my self, as i’m still learning the programming  language used here i thought this would be a great exercise to test what i’ve learnt so far. There’s code which i commented out which i was using in my back tests, the add on portion is not part of the model, but i figured the model is designed to catch trends, so if it does catch a trend it only makes sense to compound positions as the trend develops, it impacts on results drastically. But the main exercise here to code the main model and run the tests myself. Reading the book was an eye opener.

 

Share this

Risk disclosure:

No information on this site is investment advice or a solicitation to buy or sell any financial instrument. Past performance is not indicative of future results. Trading may expose you to risk of loss greater than your deposits and is only suitable for experienced investors who have sufficient financial means to bear such risk.

ProRealTime ITF files and other attachments : How to import ITF files into ProRealTime platform?

PRC is also on YouTube, subscribe to our channel for exclusive content and tutorials

  1. ladefense • 05/18/2016 #

    Doesn t work …no signals
    Marche pas chez moi ….
     

  2. Stef • 05/18/2016 #

    Backtesting from 1 July 1979 to today results in 2 trades. Looks like there is a problem somewhere.

  3. Mhingas • 05/18/2016 #

    Hi Stef,
    will take a look shortly, and advise. 
    Rgds,
     

    • Mhingas • 05/18/2016 #

      hi Stef,
      the first two lines of code need to change to the last two respectively, so we put on a buy stop order tomorrow if the close today is the highest close in the past 50 days than, the logic is reversed for a short position
      donchianUpperBand=Highest[50](high)
      donchianLowerBand=Lowest[50](low)
      donchianUpperBand=Highest[50](close[1])
      donchianLowerBand=Lowest[50](low[1])

  4. Nicolas • 05/18/2016 #

    For your information, I have changed the code in the post, accordingly to Mhingas comment.

  5. wedret1 • 05/18/2016 #

    Hi Mhingas
    What instruments do you trade with this system in South Africa?

  6. Mhingas • 05/18/2016 #

    Hi wedret1,
    I run the strategy across all markets. commodities (including non agricultural commodities) ,energies, financials. Equities, but because this latter class is highly correlated, i don’t run it on individual stocks but the main indices. If one asset class is in a range, funds ( trends ) are moving in other asset classes. the strategy just needs to catch 2-4 directional trends a year, pay for losses incurred when markets are range bound, leave enough on the table to be up on the year.
    Rgds,
    Mathonsi c 

  7. trendfollower86 • 05/18/2016 #

    Thanks for the code. How do you intent to implement the position sizing. From my experience entries and exits are less important that correct and optimum position sizing.

  8. Periho • 05/18/2016 #

    My contribution is more on the strategy side; the method of catching a lasting trend on upper Doncian can benefit of being supported by a break out of volume of more than 1,5 the average daily volume over the last 20 days. Trailing SL 5-7 x ATR and holding time 4.5 months. Check that the paper have high volume > 200000/day and is within the range of institutional investor (US is USD5+) (i will be careful with Forex doing this)

  9. MikeGC • 05/18/2016 #

    Thank you @Periho, I got a very nice result with some minor mods to your code.  I have optimised the EMA’s and the Donchian Bands to produce an ME of 1.75, and an IRR of 121%.  I had to preload 200 bars to get it to start.
    // Definition of code parameters

    DEFPARAM CumulateOrders = true // Cumulating positions activated
    DEFPARAM PreLoadBars = 200

    //**********************************************Conditions to enter long positions***********************************************//
    ema50 = ExponentialAverage[c](close)
    ema100 = ExponentialAverage[d](close)

    Uptrend = (ema50 > ema100)
    donchianUpperBand=Highest[a](high[1])
    donchianLowerBand=Lowest[b](low[1])

    BuyCriteriaMet = (close > donchianUpperBand)
    initialstopExitPoint = Supertrend[3,10]
    IF NOT LONGONMARKET AND Uptrend AND BuyCriteriaMet THEN
    BUY 1 SHARES AT high stop
    ENDIF

    //AddOn
    AddOnToLongPosition = close CROSSES UNDER SAR[0.02,0.02,0.2]
    IF LONGONMARKET AND COUNTOFLONGSHARES < 3 AND POSITIONPERF > 0.02 AND AddOnToLongPosition THEN
    BUY 1 SHARES AT MARKET
    ENDIF

    //Exit Long
    ExitLongPosition = close < initialstopExitPoint
    IF LONGONMARKET AND ExitLongPosition THEN
    SELL AT MARKET
    ENDIF
    //********************************************End Conditions to enter long positions***********************************************//

    //**************************************ShortSell Conditions to enter long positions***********************************************//
    Downtrend = (ema50 < ema100)
    SellCriteriaMet = (close < donchianLowerBand)
    IF NOT SHORTONMARKET AND Downtrend AND SellCriteriaMet THEN
    SELLSHORT 1 SHARES AT MARKET

    ENDIF

    //AddOn
    AddOnToShortPosition = close < Supertrend[3,10] AND close CROSSES OVER SAR[0.02,0.02,0.2]
    IF SHORTONMARKET AND COUNTOFSHORTSHARES < 3 AND POSITIONPERF > 0.02 AND AddOnToShortPosition THEN
    SELLSHORT 1 SHARES AT MARKET
    ENDIF2Nicolas, I am having trouble uploading the code and the image: HTTP Error.

    //Exit Long
    ExitShortPosition = close > initialstopExitPoint
    IF SHORTONMARKET AND ExitShortPosition THEN
    EXITSHORT AT MARKET
    ENDIF

     

    • Periho • 05/18/2016 #

      This is great, the code is interesting – kindly clarify:

      Line 18: BUY 1 SHARES AT high stop | Please explain the function of: «high stop»
      Buying 1 SHARES at market is hardly profitable in my back testing . Any suggestions regarding calculation of position sizing?  
      Same for calculated losses, for example sizing of positions based on 2-3% losses  of the total risk capital?

      I am working on this myself and I will share it when its ready, however thoughts and ideas will be appreciated

  10. MikeGC • 05/18/2016 #

    Hi @Periho, 
    Re “Buy at high stop”, refer to this post http://www.prorealcode.com/topic/difference-between-buy-at-stop-and-buy-at-limit/.  The reason that buying at market does not work is that it seems the code depends on buying at a price higher than the current market price.  (This command was in the original code – I did not add it.)
    Your will find some interesting code for money management at http://www.prorealcode.com/topic/grid-orders-with-one-combined-stop-loss-and-limit-can-it-be-done/.
    Hope your coding is a great success – keep me posted.

  11. elsys • 05/18/2016 #

    Do you have a working version of the strategy?

avatar
Register or

Likes

avatar avatar avatar avatar avatar avatar
Related users ' posts
Adolfo Onrubia Ups! Sorry. Variable "S" is to set an specific Spread if needed. Could be "0", or the distan...
GraHal Hi Adolfo, big thank you for your code, but I am a bit confused. Spread is the difference b...
Meta Signals Pro Hi, For me there is a mistake here L32 maxriesgo = round(equity*riesgo) => round(equ...
zilliq I think the "best"  method to backtest is  to do a simplier Walk forward backtest (and we ho...
volpiemanuele Hi, I have modified and optimized the strategy on FTSE 100 CASH Eur 1 on IG demo account. B...
Doctrading Defparam cumulateorders = false n=1 // Plus le "ratio" monte, moins il y a de positions ...
Malloc Bonjour :) Je sais que cette stratégie a été partagée il y a de ça plusieurs années mais ...
lilo789 Hi guys! Do you know if it is possible to set the buy size to a relative % of the available...
JR1976 Sembra performare molto bene   
giulomb E' tanto tempo che non lo guardo , non so neanche se il trading system soffre di iperottimiz...
giulomb E' tanto tempo che non lo guardo , non so neanche se il trading system soffre di iperottimiz...
luigiR Hallo doc, thank again for your strategy but can you suggest me  an example of the optimizat...
Wilko Do NOT take this system live! The backtest results will never be repeated live due to a shor...
mrripley99 So I've played around with this just recently and have achieved some good results in an IG d...
TradSuz C'est étrange, je note donc à nouveau les deux horaires achat et vente =9H/17H, le iRSI de l...
TradSuz Merci à Doctrading pour cette trame de code super et qui marche sur d'autres supports aussi....
Bibi83 Bonsoir à tous Juste pour vous informer que j'ai enlever les conditions short et que cela ...
Doctrading Yes, nice improvement ! You should test it with 20 points spread (common spread on IG Marke...
bandido Ho provato questa strategia anche sul dax, a causa dell'elevato spread IG sul ftse mib. Con...
gianlox con quale timeframe hai provato sul dax ?
Doctrading Maybe you can also change the hourly beginning of the day (not 23PM but 12AM, OOH in french)...
Duccio Hi Doctrading,there is a way to control the max loss of the positions in this code? For exa...
Doctrading Hello, Yes, there is a command I think, but I don't know it. Nicolas knows it. You can als...
verdi55 Strategies for sale usually are not worth their money, 'cause if they were, the author would...
triss1965@gmail.com Thats not cool at all.
demha sak Hello, I improved your algorithm by adding long positions: ``` DEFPARAM CumulateOrders = ...
giulomb Non capisco dove sta la strategia reversal
gianlox L'allegato Reversal-AUDNZD-4H.itf lo vedi ? Comunque la strategia è la stessa che vedi nel l...
entony salve qualcuno l ha provata in reale come sta andando??? bel lavoro comunque grazie  
Dave Hi, I'm new to coding and have been trying to modify the code a little to backtest an idea I...
Nicolas Better use the forums for coding assistance please. You'll get more results there for sure.
Dave Apologies - only just learning the site layout. Maybe you could delete the post?
Pierreee That a realy great strategy !!!  It's realy profitable in daily trade. I'm gonna put some ...
entony hello timeframe on what works best and how couples ??grazie
111111dw i am running this on the cac 5m time frame but the results are very different from the backt...
Nicolas RSI is an oscillator made for price centering. This strategy bet on mean reverting phenomena...
air Good start. Works decently during stock runaway bull market. I have tested it over 80 year p...
TheHovisTrader Hi - the way Larry trades it does not work - discovered that over 10 years ago! BUT If you ...
Nicolas You can try this code for buy and hold curve line: capital = 10000 mylot = 2 i1 = capi...
soukenson Bonjour Nicolas, Je ne comprends pas où ajouter le code que tu as a donné dans le code initi...
Nicolas Tu veux parler du code pour comparer avec le "buy and hold" ? Si oui, tu as tout ce qu'il fa...
phili711 Bonjour Si la moyenne 100 est au dessus de la moyenne 20 le trend est baissier zlors pourqu...
Nicolas La comparaison se fait entre la valeur de la moyenne actuelle et telle qu'elle était il y a ...
Thomas007 we should definitely open a new thread for intraday trading - can we post the link once it's...
Glen Marquis I wonder how this fairs on 5 or 15 mins. Maybe 21 or 25 instead of 14 .
Doctrading Hello, you can test it. It's not my best strategy... but I think someone can improve it.
Nicolas FR/Bonjour Steftonio, non pas de frais overnight calculé sur la durée du backtest, c'est une...
avatar
Anonymous Any reason why in 2016 this system is doing very bad respect the previous years?
Nicolas "very bad" is relative to the account equity. I do not forward test this strategy since I po...
Nicolas Aucune immobilisation du capital. Quel est le drawdown du buy & hold ? Je ne l'ai pas ca...
jctrader ok pour le codage mais le choix "indice" n'est pas le bon : moins de 5%/an pour le meilleur ...
Thomas Hi Nicloas nice one i do understand :D im trying to put in MA200 as a criteria so it only go...
DonDollar ...and I do not see any opened positions...strange...
DonDollar I found the answer by myself for the second question. But still no idea about the False and ...
Nicolas The line 12 of the code is the answer of your question. Before launching a new trade, the co...

Top