System Trading and Testing A Lot

I know it has been a while since my last post but my recent fascination with finding or testing magical indicators (in search of the ‘holy grail’) has led me down a path to test everything. My move to Tradestation I highlighted in my last post was greatly in an attempt to do this at a much quicker pace as writing the formulas or even code to test simple ideas in Ninjatrader & Excel become too much of a task and I needed to quickly express my trading ideas. This is mostly because I still work part-time and only trade part-time but as you have read I hope that my goal is to trade full-time and that is seeming to require full-time effort ahead of the leap of faith.

Easy Language has been great and a quick learn (much simpler than Ninjascript) but it is also very limiting in the sense that I need to type everything out and then logically think about how it would test and work with other ideas I wanted to test. I had three main goals when I set out on this programming and testing journey: Validate the usefulness of existing indicators, validate licensed indicators, and potentially combine or create my own.

Testing traditional technical analysis indicators (Moving Averages, Volume, RSI, Stochastics, MACD, OBV, ADX) was very eye opening because most of the indicators hardly worked as presented and in the short-term but I was pleasantly surprised with longer-term swings and especially when using an opposite signal for exit or a reversal. My conclusion was these popular indicators cannot be used for day trading but can certainly be used to gain context and for some longer term swing trades. I believe the main reason is that most just have too much lag. When you get the crossover a lot of the move has already happened and you wind up buying at ‘retail’ prices instead of ‘wholesale’ prices.

I then started to test the licensed indicators although this was a bit of a pain as I found most of these vendors did not permit this easily. I had to create workarounds often times exporting indicator values and importing them as a new data series back into the platform and it was in general a nightmare if the vendor was unwilling to cooperate. I think the vendors’ unwillingness is probably enough proof as I needed and the more I learn about Easy Language a vendor could easily create a private function that just outputs the desired results so I could use it in my own code. So seems most just do not want their garbage tested which I guess makes sense if you are a snake oil selling mo-fo. Regardless, most of these indicators proved to be similar to simple technical analysis indicators’ usefulness and this is when I had the epiphany to try and improve them – which my be my greatest advancement to date.

I typically found large improvements combining these indicators which is an obvious avenue to begin on and I doubt anyone thinks these indicators should be used alone (vendors excluded). Basically I wanted to know if RSI was more useful before or after a moving average crossover or when MACD was positive or negative or when Stochastics was overbought or oversold. Then repeat this for each popular indicator but while combining the licensed indicators too.

I tried to write a big strategy in Easy Language that would match and combine all these indicators I had and find me the best combinations but slowly learned a lot about computers and programming. First I am a very bad programmer even though I am capable of getting (most) things done that I want to test, I have just realized it is very inefficient when I write code so everything takes a very long time. Second was that Tradestation is still 32 bit (vs. 64 bit) so it is quite slow to do large scale processing and I currently let my computer work through the night. This is bad long-term because the computer works 24 hours a day. I use it to trade during the day and then crunch numbers all night. I am in search of a new solution to do this more efficiently as I am very happy with my early findings and tests.

Leave a Reply

Your email address will not be published. Required fields are marked *