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
Francesco78 I did a little bit of work on that and now the results looks better and more stable. Please...
Francesco78 I did a little bit of work on that and now the results looks better and more stable. Please...
Khaled Hi Francesco , thank you for sharing your hard work. Any idea why all orders are executed at...
JanWd Thank you for the coding, it seems promising. FTSE gives for the short term (5 min) promis...
Jan Wind 21.04.2019: I retested the strategy for the DAX 5 minutes , it works fine for 10.000 bars, b...
bertrandpinoy hello Francesco, are you still working on this strategy?
Francesco78 Many thanks JR1976 for your improvement,  although results with your filter looks better th...
JR1976 HI Francesco, in  effect  3 consecutive lose  in May and today .... doesn't work well ,  ne...
Francesco78 Hi JR, yes indeed quite disappointing in may and today, but still within the max drawdown sh...
Wilko And not only readable.... makes it much easier to iterate different entry/exit-conditions, d...
IGOSNELL Hi Interesting strategy, when I used $ M-R Dif EURUSD M15 Long if does not enter any positi...
ilvillans HI, I modified the system, from good results but from this error: Replace the variables wit...
avatar
bjoern With the same parameters? For me the results are negative
avatar
bjoern Oh ok, with the initial posted parameters it is positive
victormork yes! It's not like you want to put it on live but when I for example take the version I have...
victormork Hi, I would just like to share my own take on this strategy. I'm using 30 min on EURUSD but ...
mckubik Thanks. I will run a Test. 
poonsl2828 Hi! bjoern May i know what timing should i change for time zone (Singapore (GMT +8:00) ...
Samitha Prasanna Hi ALE, would you be able to provide the values for the below part of the code (time >=1...
Player Bonjour, J'ai testé cette stratégie sur EurUSD en 1 heures sur 10000 unités et le résultat ...
Player Vue du rapport du Backtest https://ibb.co/8BMrBz6
Nacho Molto bene, ho voluto parlare di una cosa che sto trovando con questa strategia, ho girato s...
Francesco78 Ciao Nacho, grazie per il commento, onestamente  a me non e' mai capitato, ma ho fatto solo ...
Pietro Ranzato ciao francesco grazie mille. pietro ranzato non riesco a contattarti sono interessato al tuo...
Nicolas Restart your platform in order to be sure to use the last version, there was a version rollb...
bertrandpinoy bonjour voud pouvez m envoyer le code modifier par vous?
Nicolas Désolé , je ne comprends pas votre question.
rama LOWEST[15(close[0]) also gives the same
TempusFugit Ok, but you are missing the 120 lookback period
Globalmarkets79 Hello, I tried to run the code but i had an syntax error that "This variable is not used in ...
DEIO Hi sublime06, I tank you for the compliments, but first of all I STRONGLY want to warn yo...
bertrandpinoy Bonjour Deio excusez moi je ne comprend pas le principe du SL et du TP sur votre strategie.....
bertrandpinoy bonjour avez vous un TP et SL pour cette strategie? merci
Derek Nice strategy. Have you tried adding a stop loss since there are a few sharp drawdowns? I ...
Piston_Broke Non so .... da qui la mia domanda iniziale :-)
Piston_Broke Hi Derek. I have tried many different ways to apply SL's to this and similar versions of th...
Nicolas Indeed, if you are not willing to loose, you will always win. Averaging down losers can carr...
David You're always safer going Long especially with averaging down on an index as the probability...
Oskar Bergvall  I noted Davids and Nicolas remarks. Could it be possible to make an indicator for contraria...
Nicolas si il n'y a pas de stoploss définit dans le code, alors c'est normal :)
bertrandpinoy bonjour merci pour la réponse. Oui b sur ... est il possible que le SL soit coder sous une a...
Nicolas ok mais pourquoi poser la question ici ? Pour des questions non spécifique à cette article, ...
David Somogyi Hello, This is merely a filter indicator for measuring high fractality, which helps to av...
bertrandpinoy bonjour ce code fonctionne toujours?
Nicolas Faites un backtest, vous aurez des réponses.
Jessar Hi friends, is there any way to program the system to close the position when you have a lon...
Pring00 Hello @Nicolas, thanks for this code! Just what i was looking for. I'm fairly new to this...
Nicolas Needs custom coding, ask for a mod in a dedicated topic, in the appropriate forum please.
Lotar
8 years ago
Nicolas You can send it to contact@prorealcode.com and I'll attach it here. Thanks for your sharing!
Francesco78 Hi Lotar, which variables would you choose to recalibrate it to the present market condition...
Degardin Arnaud unfortunatly in today's market it's not working at all...
Derek Clarification: Automatic rollover will be into the nearest forward but I prefer the farthes...
gatowman Hallo Derek, ich bin neu hier, wo finde ich die beiden Indikatoren? kansst du sie als itf p...
bertrandpinoy BONSOIR j ai tenté votre modification mais PRT ne l accepte pas "erreur de syntax" pouvez vo...
Nicolas it is based on seasonality of DAX.
Luciano Santiago Juárez Hello I am new here I am trying to understand this code IF monthlyMultiplierLong > 0 ...
Luciano Santiago Juárez Sorry the code copied bad the line I dont understand is: ELSIF monthlyMultiplierLong 0 THEN
GabrielVP Hola. ¿Has probado a incorporar compras en el mismo sistema? o ¿sería posible? disculpa mi i...

Top