So I come from daytrading mostly and I can assure Amibroker has been super useful to backtest my strategies and generate lots of profits.
But, early this year started to hit some hard obstacles using it.
I've started developing strategies that use sub minute timeframes like 1 second or so, and things got complicated.
I trade US stocks. Mainly small caps. So the way datafeeds work usually they report bars that qualify to update the price. Many tickers dont even have trades for extendend periods of time. Many tickers have spare trades here and there and then suddenly one day they have a lot of volume in one day. And that is the day they become interesting and tradeable.
So what happens is you end up with a database with a lot of holes. Tickers that dont have bars most of the time and then for few days they have and then they fade again. And it is GOOD data feeds omit empty bars because you end up with a much simple database. You can easily skip periods of inactivity because they simply dont exist.
The problem arised when importing this kind of database into amibroker. In the real of minutes or longer everything worked fine. But when going into shorter timeframes like 1 second I hit an obstacle.
It looks that amibroker maintains a ranking table for every bar and for every ticker and explained to me that it is a global table, so I cannot take advantage of multithreading here.
My question is if there would be a way of disabling this global ranking. I still need to backtest all symbols as a whole, because I need to see the DD, but as a daytrader I dont need to rank the trades. I want to take them all as they present. This would be key to unlock a full new world of possibilities.
And believe me, theres a lot of possibilites in subminute timeframes.
Ranking is not a problem and does not limit multithreading in any way.
Score is just one float number per bar. Removing it would not change memory usage in any significant way.
Even if you did not have score, you still need to keep buy and sell signals (such as date/time, price, size and other params). In fact having ranking table DECREASES memory usage because thanks to ranking you don't need to keep all entry signals, but only top-ranked ones.
If you recall the discussion, the problem was not memory, it was speed.
Because of the data holes everywhere in many tickers, somehow amibroker was very slow to complete the backtest, but it didnt get the cpus busy, it was locking the table many times you explained me.
It would be wounderful to be able to backtest seconds data with holes. I could fill the data with missing bars but it would be a whole lot of redundant bars everywhere, and formulas and indicators would change also the results.
I dont know, I have achieved the same in python, and I can run it very fast with holes in the data, but the amibroker reports and easy to explore trades done and modify things on the fly still make it more suitable.
I wish I could backtest these gazillion of bars somehow and keep using amibroker.
Those two just create other problems. As I explained I dont want to have all the holes filled with redundant bars.
Just messes indicators formulas results. Besides realtime data doesnt work this way. When there are no trades there is no data reported. Having to fill all holes continously in realtime for all the market it is just not convenient. Amibroker should not assume data has to be padded and aligned, that is not how real data is.
Could not be possible an option to bypass ranking?
These are not redundant bars. These are jest previous (most recent) value held for the duration you don’t have data. The last known price.
The world will not bend to your favour just because you WANT.
You are aiming your “wants” in wrong direction. Even if you don’t define score symbols are anyway sorted one way or another for example alphabetically. Ranking is not you problem.
I wrote you already a couple of times: Old backtester (v.4.4) does not do any ranking and does not need any padding. It is available from Old Automatic Analysis window and does exactly what you are asking for (no ranking, no padding)