Over the past two years, I've coded more than 500 robots. Most of them failed to generate any profit right away, and were quickly archived. A few made and held onto some profits for a few weeks, but then would eventually fail and lose all of the gains, and often quickly.
I didn't keep any solid data to track robot performance, so everything I write on this site concerning robot results is my opinion only.
That said, I wanted to mention several indicators that stick in my mind as offering reasonable performance in some of my robots.
The best performing indicator by far is RSI. Many of my robots use RSI as a confirming indicator, and I even coded some using ONLY RSI, with results better than I would have expected. I continue to use it today in many of my robot designs.
My favorite indicator is ADX. It seems to track trends and trend strength quite well. Also, I just like the way it looks.
I coded several robots using ADX, including a multi time frame ADX robot. It performed well for several weeks, before finally succumbing to the Forex Demons.
Another reasonable performing robot used ADX on the 1 hour chart, with a stochastic indicator on a lower time frame. It was hoping to catch pull backs in trends, and it did. For a while.
Lastly, I was very fond of the "force" indicator. I did code a robot using only this indicator, but it's performance was only slightly better than not trading at all, and again, only for a short time before eventually failing.
The force indicator includes a volume component (I think), and I like the idea of volume, even though I'm never sure how to use it in a robot. Plus, "force" sounds cool, don't you think?
I'm not sure what the worst performing indicators I've used were, because I wouldn't have used them for very long if performance was too terrible.
I have often tried to use Bollinger Bands and stochastic in robots, and they have been very unreliable. Bollinger Bands seem cool in theory, but I never know if the price will continue to track the extreme bands, or reverse when it hits them.
Stochastics are very unreliable, too. I can kind of see where prices change and the stochastic indicator shows this on a chart, but in code, it rarely comes out how it should.
Why do some robots seem to work sometimes, and not others?
I believe it's largely due to the timing of when I start testing them. The majority of the robots I coded were designed to track trends. If I happened to start testing a robot while a strong trend was in place, the robot may have performed well. But when the trend ended, the robot bombed.
Since the market is often not trending, the majority of the robots I started testing during this time quickly failed and were archived.
It took me a while to catch onto this phenomena. I could be forward-testing 20 robots at once, and they would all be losing money at different rates. Suddenly, for a day or two, sometimes even a week, most of them would start generating profit, sometimes even a lot. I would get hopeful. Then the trend would end and they would again resume losing money at various rates. The "better" robots just lost money at slower rates ;)