SP500 Optimizer 5min Strategy

SP500 Optimizer 5min Strategy

Good Day

I have been a silent member of this community for quite some time but suppose as time would allow I would try to become more active. I have been developing PRT strategies for almost 2 years now and have quite a few running live and profitable on various indexes and FX Pairs. I still need to get to a point where I can freely share my strategies but still find that slightly difficult (especially knowing some people sell your IP for profit). Anyhow this is just one of the many rabbit hole strategies I have developed in an effort to outperform a given index.

I actually wrote this today when the idea came to me to write a small time frame strategy that attempts to enter the market and take profit as soon as possible with the ability to stop and reverse direction quickly if the position becomes unprofitable. I am sure the general idea can be adapted to other timeframes and markets.

 

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. juanj • 05/11/2017 #

    As mentioned, this is a conceptual strategy to beat a buy and hold approach. Practically the costs of staying in the market for such extended periods can potentially outweigh the benefits if the market tends to range longer than what it actually trends. I will in the near future post some of my other strategies that spend much less time in the market and are much more practical to trade.

    • bertrandpinoy • 05/11/2017 #

      bonjour je test le robot sp500 Optimizer stategy. Je ne vois pas le SL dans le code??? merci

  2. juanj • 05/11/2017 #

    Here is the version adapted for the DAX. Which it also wildly outperforms.
    ///Spread set to 0.9 points for SP500
    ///Spread set to 3 points for DAX

    possize = 1
    pointsp = 90 //20 for SP500 //points where profit is to be locked in
    pointsb = 84 //36 for SP500 //points where stop is to be taken

    fast = average[12,4](close) //11,4 for SP500
    medium = average[14,4](close) //13,4 for SP500

    If countofposition = 0 then
    If fast > medium then
    BUY possize CONTRACT AT open + averagetruerange[3](close)*2 stop
    EndIf
    EndIf

    If longonmarket and close >= positionprice + pointsp then
    If close < close[1] then
    SELL AT MARKET
    EndIf
    ElsIf longonmarket and close <= positionprice - pointsb then
    SELLSHORT possize*2 CONTRACT AT MARKET
    EndIf

    If shortonmarket and close <= positionprice - pointsp then
    If close > close[1] then
    EXITSHORT AT MARKET
    EndIf
    ElsIf shortonmarket and close >= positionprice + pointsb then
    BUY possize*2 CONTRACT AT MARKET
    EndIf

    SET TARGET pPROFIT 100 //50 for SP500
     

  3. Oskar Bergvall • 05/11/2017 #

     Looks very interesting! Will try it on both sp500 and dax on one of my demoaccounts 🙂

  4. klaus • 05/11/2017 #

    I just backtested on my German IG account. Looks good almost 70% profit from Jan2016
    Unfortunately i was not able to insert a screen shot. Does somebody know how?
    ciao Klaus

  5. juanj • 05/11/2017 #

    I tested the strategy on FX today and seems to work very nicely.
    Here the example of EUR/USD with spread set to 0.8:
    ///Spread set to 0.9 points for SP500
    ///Spread set to 3 points for DAX
    ///Spread set to 0.8 for EUR/USD

    possize = 1
    pointsp = 0.0029//90 for DOW //20 for SP500 //points where profit is to be locked in
    pointsb = 0.0042//84 for DOW //36 for SP500 //points where stop is to be taken

    fast = average[10,4](close) //12,4 for DOW //11,4 for SP500
    medium = average[13,4](close) //14,4 for DOW //13,4 for SP500

    If countofposition = 0 then
    If fast > medium then
    BUY possize CONTRACT AT open + averagetruerange[3](close)*2 stop
    EndIf
    EndIf

    If longonmarket and close >= positionprice + pointsp then
    If close < close[1] then
    SELL AT MARKET
    EndIf
    ElsIf longonmarket and close <= positionprice - pointsb then
    SELLSHORT possize*2 CONTRACT AT MARKET
    EndIf

    If shortonmarket and close <= positionprice - pointsp then
    If close > close[1] then
    EXITSHORT AT MARKET
    EndIf
    ElsIf shortonmarket and close >= positionprice + pointsb then
    BUY possize*2 CONTRACT AT MARKET
    EndIf

    SET TARGET $PROFIT 130//105 for DOW //50 for SP500

     

  6. Francesco78 • 05/11/2017 #

    Thank you Juanj! It looks very nice, I am running live the one on Dax already and it is already making money 🙂
    One question on the EUR/USD. 
    I have changed the size from 1 to 2 by setting possize = 2 but it change the shape of the equity curve..
    What am I missing?
    Best
    Francesco 

  7. juanj • 05/11/2017 #

    Hi Francesco, I am glad you find the strategy useful. However you are rather brave to run the strategy live,usually running a strategy in a demo account for at least a month is strongly advised. However, if you understand the risk involved (as any good trader hopefully does) I wish you all the best.
    With regards to changing the possize parameter on the EUR/USD, since this increases the position exposure you would have to make the following modifications to incorporate possize since you are not dealing here with points as with the indexes but pips and dollars;
    pointsp = 0.0029*possize
    pointsb = 0.0042*possize
    SET TARGET $PROFIT 130*possize

  8. Francesco78 • 05/11/2017 #

    Thank you!

  9. Francesco78 • 05/11/2017 #

    Thank you! I think the pointsp and the pointsb are already in pips though so no need to change those. 
     

  10. juanj • 05/11/2017 #

    That is correct, was just about to edit my post to ignore the first part (pointsp and pointsb) as it is already in pips as you mention.

  11. zilliq • 05/11/2017 #

    Walk forward, walk forward Guys 😉

  12. criscolci • 05/11/2017 #

    Thanks for sharing your ideas.

  13. juanj • 05/11/2017 #

    As with all strategies that uses variables (back tested or forward tested) it is always a good idea to keep your variables optimized to current market conditions. I recommend running variable optimization on a monthly basis and carefully watch the MA on your equity curve for changing conditions requiring optimization. No amount of back or forward testing is sufficient to produce that ‘golden’ set of variables for future market conditions.

  14. juanj • 05/11/2017 #

    Version adapted for FTSE spread set to 3;
    ///Spread set to 0.9 points for SP500
    ///Spread set to 3 points for DAX
    ///Spread set to 0.8 for EUR/USD
    ///Spread set to 3 points for FTSE

    possize = 1

    pointsp = 55//0.0029 for EUR/USD //90 for DOW //20 for SP500 //points where profit is to be locked in
    pointsb = 45//0.0042 for EUR/USD //84 for DOW //36 for SP500 //points where stop is to be taken

    fast = average[11,4](close) //10,4 for EUR/USD //12,4 for DOW //11,4 for SP500
    medium = average[13,4](close) //13,4 for EUR/USD //14,4 for DOW //13,4 for SP500

    If countofposition = 0 then
    If fast > medium then
    BUY possize CONTRACT AT open + averagetruerange[3](close)*2 stop
    EndIf
    EndIf

    If longonmarket and close >= positionprice + pointsp then
    If close < close[1] then
    SELL AT MARKET
    EndIf
    ElsIf longonmarket and close <= positionprice - pointsb then
    SELLSHORT possize*2 CONTRACT AT MARKET
    EndIf

    If shortonmarket and close <= positionprice - pointsp then
    If close > close[1] then
    EXITSHORT AT MARKET
    EndIf
    ElsIf shortonmarket and close >= positionprice + pointsb then
    BUY possize*2 CONTRACT AT MARKET
    EndIf

    SET TARGET pPROFIT 55//130*possize for EUR/USD //105 for DOW //50 for SP500

     

  15. juanj • 05/11/2017 #

    I realize in the comments of my code I made reference to the parameters of the DOW when in reality I meant DAX.

  16. reb • 05/11/2017 #

     Very interesting strat juanj
     only one  remark, I find time on the market a bit high and then risky
    Reb

    • juanj • 05/11/2017 #

      Thanks Reb, I am aware. Interestingly enough though the time in market is much less in more volatile markets such as forex. See the EUR/USD example for instance. 

  17. zilliq • 05/11/2017 #

    Walk forward Guys, Walk forward as I said ! An optimization means nothing without “confirmation” by WF
    An optimization is quite easy, pass a WF is more complicated
    DAX Spread 3 points, 15000 unit
    Finish in gain
    2/5 >50 % WFE
    Ratio 45 %
    Not perfect but not bad

  18. zilliq • 05/11/2017 #

    Walk forward Guys, Walk forward as I said ! An optimization means nothing without “confirmation” by WF
    An optimization is quite easy, pass a WF is more complicated
    DAX Spread 3 points, 15000 unit
    Finish in gain
    2/5 >50 % WFE
    Ratio 45 %
    Not perfect but not bad

  19. zilliq • 05/11/2017 #

    I tried with 3 variables and now 6. Results in some hours …

  20. zilliq • 05/11/2017 #

    And of course thanks for your job Juan 😉

  21. zilliq • 05/11/2017 #

    WF with 6 variables stopped..Game Over..Be careful Guys …

  22. zilliq • 05/11/2017 #

    I will try with 6 variables on US500 …

  23. zilliq • 05/11/2017 #

    Game over on sp500 too …

  24. zilliq • 05/11/2017 #

    I tried with less variables and on mini 500 (as juan)
    Same results sadly…

  25. juanj • 05/11/2017 #

    Hi Zilliq, thank you for taking the time in doing some walk forward testing. You mentioned you used 6 valuables, but there is only 5 that requires optimization. Also what variable ranges did you use? As a side note, it is worth noting that frequent variable optimisation can keep a time optimised strategy surprisingly profitable. Just keep an eye on the equity curve. 

  26. Ketefster • 05/11/2017 #

    Juan, would love to see anything on the South African cash Top4o, if possible please.

  27. Dymjohn • 05/11/2017 #

    Hi juanj
    Interesting system but for someone not sure on the coding what does the  ,4 represent in the formula: 
    I tried graphing the average but couldn’t see what it represented?
    best regards
    dymjohn
    fast = average[11,4](close)

  28. juanj • 05/11/2017 #

    The value after the comma refers to the Moving Average type;
    0 = Simple,1 = Exponential,2 = Weighted,3 = Wilder’s Smoothed,4 = Triangular,5 = End Point, and6 = Time Series.

  29. Dymjohn • 05/11/2017 #

    Thanks for this, juanj, I didn’t know you could write the average method this way. I would have written it as TriangularAverage[11](close).
    Should you worry about “walk Forward” how is this calculated unless you test it for months before using?
    Regards
    dymjohn
    best r

  30. juanj • 05/11/2017 #

    @Ketefster I actually have quite a couple of SA Top40 strategies that I am personally running live. Send me an email on jd3gjacobs@gmail.co.za for more information.

  31. juanj • 05/11/2017 #

    @Dymjohn The above strategy is largely conceptual and hence not optimized using walk forward testing. I do however use walk forward tests extensively on development of my core strategies to establish a good set of optimized variables to start off with. However that said walk forward tests will never guarantee future performance, although a tight range of variables will show that you are on the right track. There is no such thing as a magic set of variables. It is necessary to regularly optimize variables to ensure your strategy is suited to current market conditions.

  32. Dymjohn • 05/11/2017 #

    Thanks for your comments, juanj, probably explains why I tend to optimize a strategy and then find I lose money when I trade it. The trouble is one can optimise today and market conditions change tomorrow I get the point about a tight range of variables though
    Thanks again
    Dymjohn 

  33. Benjamin • 05/11/2017 #

     Hi Juanj, thanks for sharing this, are you using the same sp500-optimizer-5min-strategy.itf for the German 30?
    Cheers

  34. juanj • 05/11/2017 #

    Hi @Benjamin, unfortunately as I have mentioned before I cannot say that I use this strategy. It was purely conceptual in design. I did post a version of the above adapted for the DAX. See earlier comments. However I cannot advise using this strategy without at least running it live for  a month or so. Even then re-optimization would be necessary to ensure performance related to then ‘current’ market conditions.

  35. Francesco78 • 05/11/2017 #

    Hi I created an optimized version that differentiate between long and short and that allows the first trade to be short
     

    • juanj • 05/11/2017 #

      Cool can you post it somewhere? Maybe create a topic on the forum?

  36. Francesco78 • 05/11/2017 #

    I tried to post it here but something doesnt seem to work..
    ///Spread set to 0.9 points for SP500///Spread set to 3 points for DAX//DEFPARAM flatafter = 230000//defparam flatbefore= 080000possize = 1pointspl = 110//20 for SP500 //points where profit is to be locked inpointsbl = 85//36 for SP500 //points where stop is to be taken
    pointsps = 90 //20 for SP500 //points where profit is to be locked inpointsbs = 105 //36a = 2.1b=2pf = 100periodfast = 3periodmedium = 15fast = average[periodfast,4](close) //11,4 for SP500medium = average[periodmedium,4](close) //13,4 for SP500
    If countofposition = 0 thenIf fast > medium thenBUY possize CONTRACT AT open + averagetruerange[3](close)*a stopEndIfEndIf
    If countofposition = 0 thenIf fast < medium thensellshort possize CONTRACT AT open – averagetruerange[3](close)*b stopEndIfEndIf
    If longonmarket and close >= positionprice + pointspl thenIf close < close[1] thenSELL AT MARKETEndIfElsIf longonmarket and close <= positionprice – pointsbl thenSELLSHORT possize*2 CONTRACT AT MARKETEndIf
    If shortonmarket and close <= positionprice – pointsps thenIf close > close[1] thenEXITSHORT AT MARKETEndIfElsIf shortonmarket and close >= positionprice + pointsbs thenBUY possize*2 CONTRACT AT MARKETEndIf
    SET TARGET pPROFIT pf //50 for SP500

    • juanj • 05/11/2017 #

      I like your modification. Have yo tried it on some of the other indexes or currencies?
      However looking at the DAX for YTD there is some concerns:
      Top = Original CodeMiddle = Buy and HoldBottom = Your Code

  37. Francesco78 • 05/11/2017 #

    thats weird, I get a completely different result..

  38. Francesco78 • 05/11/2017 #

    I cant attach the picture here, shall we exchange email?

  39. Pollux • 05/11/2017 #

    Hi Juan.
    Thanks for sharing. I like the concept. 
    I’m curious to find out what broker you use? IG? if so, you get about 3 months more data than me on the 5min timeframe.
    Have you tried this on the SA40?

  40. hvluthy@sunrise.ch • 05/11/2017 #

    Hi,
    Please forgive my question… I’m an absolute beginner.
    I’m trying to trade the US 500 1€ on a 25 contract base. So, changed “1” on line 3 into 25. I presume other numbers must be changed. Would you be good enough telling which ones, please.

  41. fatcat • 05/11/2017 #

    Sorry, but my Broker can only accept a buy-order depending on the averagetruerange-limit if there is a minimum distance from actual price level. Therefore the strategy is being hold quickly. No trading possible.

  42. nonetheless • 05/11/2017 #

    Hi juanj , thanks for posting this. I’m with IG and have been trying to run it on US 500 but orders keep getting rejected. Any idea why that might be?

  43. phoentzs • 05/11/2017 #

    Hello Juanj, I really like this concept. I especially like the possibility of a reversal when the market is going against you. I have created several versions with different inputs (RSI2, close>close(1) etc.) and with the possibility to go short or long as the first trade if the trend demands it. I also changed the diagnosis of the trend. It performs very well in so many markets. Of course, it’s often on the market for a very long time. Is that a good thing or a bad thing?
    Do you use this concept? Do you maybe have a few tips for me?

avatar
Register or

Likes

avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar
Related users ' posts
Anjuna Marine Thanks for sharing this. I've tested it over 13 years, and each year has been profitable. I ...
phoentzs
6 months ago
Gio56 Bonjour, merci pour ce code. j'ai juste un problème sur le code, j'ai un message “L’instru...
Nicolas Il faut supprimer cette ligne qui est utile uniquement pour visualiser des valeurs durant le...
Gio56 Super merci Nicolas cela fonctionne. Top
sfl Removing the short side will help, I would like to know from the author where are the condit...
WE ARE SOCIETY DEFPARAM cumulateOrders = False rem CAC40 (france40) en 10 secondes rem à la ligne ci-dess...
David Daget Bonjour. A noter que cette stratégie fonctionne aussi sur le ftse. Ce qui n'est pas surprena...
YvesRobert Hello daviddelaferla. Ok, but to optimize period and mode, filter1 and filter2 must be 0 or ...
davidelaferla Hello YvesRobert! To optimize period and mode, filter1 and filter2 must be 0
Germano77 hello, thx for sharing, but wich broker do you use? At IG I got the notification "automatic...
sfl what do you think using it with weekly timeframe ?
sfl CAC on Weekly timeframe, long only, short dosent work. Defparam cumulateorders = false ...
superfalcio This kind of strategies coming from Connors research usually work well on timeframes from 1D...
Stanko Ciao Crusoe, grazie per il commento: confermo che il trailing stop non funziona bene. Provo ...
taklause I was wondering, you said it works on the 1 min Chart, but you never use it in the code as t...
Stanko Ciao taklause. Utilizzando il grafico a 1 minuto e fino al grafico a 15 minuti il codice fun...
Ciccarelli Franco Hai ragione, mi dava valori alti perchè usavo questo loss "SET STP LOSS 1xAverageTrueRange{1...
YvesRobert Hello davidelaferla, how do you put a stop loss and where exactly ? the moment you enter on ...
Hypersimo Buongiorno Davide a quale distanza inserire stop loss e tp nella strategia? grazie
ProRealAlgos Hi Crusoe76. Do you mean that you would like a short version of this?
crusoe76 yes please
banjoo78 Hi, first of all thank you for your sharing. I'm new of ProRealTime and I can't replicate y...
ProRealAlgos Same here ;)
YvesRobert Hello, can someone explain this strategy because I don't understand what the program does ex...
andyfx79 l have been demoing for the past couple of weeks with great results , but during a bear mark...
ProRealAlgos.com Hi JohnScher. Yes I think you refer to the strategy called "Turnaround tuesday". This strate...
JohnScher I am not alluding to the turnaround tuesday. The general opinion is that Turnaroundtuesday ...
ProRealAlgos.com Yeah that's maybe not of importance. Anyway. Enjoy! :)
superfalcio Hello, very interesting. Do you have already some tested condiction including timeframe and ...
KumoNoJuzza Hi Guys. This looks very interesting but don't overnight fees kill the profit when trading o...
ThaNoizy Yes, you cannot use CFDs on IG for Weekly strats you need to use their Index Futures, they h...
KumoNoJuzza Thanks. I did not know IG had Futures. I am always missing an info or a detail. I used to th...
JohnScher Short variant, see at https://www.prorealcode.com/topic/late-lunch-trade-dax40-strategy/
DANY Hi JohnScher, Thanks a lot for your contribution. Consider this release to avoid overfit...
JohnScher Thank you so much for exploring the Late Lunch Strategy. For discussion and in answer to yo...
BenJuice JohnScher, merci de partager ta stratégie. Je suis nouveau dans ce domaine, sur ton code q...
JohnScher As a percentage of the price, here 2%. StopLoss as well as TargetProfit. SL and TP come ...
Wilko I absolutely love the simplicity of this mean-reversion strategy. Well done!
Patrice210 bonjour STANKO, effectivement la première ligne apparait en anomalie et je ne comprend pas v...
KumoNoJuzza Hi guys, Thanks @Stanko and everyone for your contributions. I have been playing around ...
Stanko Hi KumoNoJuzza, thanks for the post. I also tried your code with Dax and the performance is ...
snucke i dont think you understod the question. i did not ask about the band pass indicator. i as...
thomas2004ch Hi, Is this startegy suitable for daily SPY? Regards
ebous64 Je cherche à traiter des effets de bords avec un encadrement ajustable des variables. Vous a...
JohnScher Postscript: It's running in the live right now. One position after the other is opened. ...
ullle73 nice!! how's it been since your last post on going live? :)
thomas2004ch Hi, Is this strategy suitable for daily SPY? Regards
adconsulting
2 years ago
japan 225 cash 1 h
japan 225 cash 1 h
28
Strategies
superfalcio Ora è tutto ok e gira correttamente!!! Grazie, mi sembra veramente notevole a prima simulazi...
Meta Signals Pro Hi @adconsulting, Thanks a lot for these contributions. I am currently running live 2 of y...
superfalcio Ciao @adconsulting, stavo rifacendo un check dei tuoi sistemi, quello su eurusd-30 min... on...
wally Hola soy nuevo en el mudo robots. Alguien seria tan amable de poner el archivo itf.file ya q...
Darren Nash I found this works well on the DOW
thomas2004ch Hi John, Is your strategy suitable for daily SPY? Regards
KAMJKAZE thanks, really interesting!
2c95 thanks, why do U prefer average than lowest ? to close under average does'nt mean another...

Top