The thing with Python is that you get ready-made libraries, so the skill of the User depends on how well he/she can "play" with the libraries to get the desired result.
Whereas in AmiBroker, there are no such readily available libraries - users are expected to know what they are doing.
Yes and the libraries can be of very high quality and they reduce your work. In general, Amibroker is more limited to what it provides out of the box, which is not its fault. It is not meant to be a general purpose language, the target is traders.
In AFL, variables are vector-processed i.e. treated like an array even the StaticVars which gives AB tremendous speed and efficiency - you don't get that in Python.
Nonsense, panda/numpy are great libraries for array processing, i use them for my backtesting. AB will give you a built in backtester, AB has realtime DB which panda does not give directly.
With python you will have to write a backtester, its not so difficult to do and it can be just as fast ( faster in my case ). Or use a library like quantopian ?
Static vars is just a feature, it does not magically bring in any 'tremendous speed and efficiency'. Static is a basic feature in most languages and persistence can be easily achieved as well. I suspect you are not a programmer when you say such things, nothing wrong but please check what you say ...
Moreover, Python is not a structured programming language and often not resource friendly. For finance school students - Python or R or Excel is their best friend but not for professional Charting or Analysis (viz a viz Exploration, BackTesting (Individual + Portfolio), Optimization) purposes. Compare the execution speed of a complex chart or a CBT well-written in AFL to a simple AML.
Yes, AB has great charting and in my mind that is its only advantage over python for someone who can code reasonably ( although i have not really tried to look at charting with python).
What do you mean by 'structured programming language'. afl is interpreted too and so is also not resource friendly if you dont use it well. Why do you think is vector processing faster than loop ?
If anything, i really find afl very limiting in terms of language features, which is again fine as its not supposed to be a general purpose language.
One silly small example even in basic things - function scope by default is very unreliable. A variable is global or local based on how it is used first. So i have to read the entire code base to know whats happening in a function. This can lead to very subtle bugs if you are not aware. A much more sane approach will be local by default and global on declaration, anyway ...
With the advent of new Matrix and other Math functions in AFL, there is nothing that you can do in Python, that can't be done in AFL. On the contrary, there are many things that can be done in AFL, which cannot be done in Python. AFL is tailor-made for traders/investor needs. You can find your strategy's Sharpe ratio, Profit factor in few seconds that too optimized to each and every possibilities. I don't think anything else gives you the freedom, the way AFL does....
Now you are sounding like an advert. AB will give you convenience for what it provides OOB - which is good. But to say it cannot be done elsewhere is a bit much.
To keep this comparison game short, below I have enlisted a group of few simple Plot functions available in AFL. Please tell me how many lines of code one has to write in NT or MQL in order to achieve the same features at same speed, efficiency, scaling and robustness? Or is it even possible in other languages???
You might like something in NT/MT because that is readily available to you which is not in AB.
In my experience, AFL is not catered to the public in simplified format - one has to toil hard to grasp the core concepts. It took a beginner like me for more than a full-long dedicated year to start to appreciate AFL and the masses are only after instant-gratification. Respect, patience, devotion are long gone virtue of mankind. May be that's why people get easily frustrated with AFL but every fault lies within the skill-set of oneself. And its just a matter of time-factored realization only.
Appreciating a tool is fine, but lets not be blind to what other tools can do. AB is convenient and fast, has great charting, it has its pros and some reasonable limitations. It is not a general purpose language and is quite limited if used as such - which is ok.
python does not have the out of the box features, but is much better as a language ( it really is very good ) and has some great fast libraries. it will have its limitations too, multiprocessing needs some work to get it right, it is interpreted so cant compare to compiled languages ( libs alleviate it) etc etc, i am no expert ..