Making an informed decision about the platform to go with
I'm sure it's been covered a lot here but I wasn't able to find anything by searching.
I'm looking at some tips on Metatrader vs other tools (even Python, which I'm familiar with from work but i don't know in which environment it could be used for trading). Also, how is R when it comes to algo trading?
For FX I suppose MT4/5 is the best (just because it's been built with FX in mind) but what about the stock market?
Also, how is Tradestation compared to MetaTrader? (this one I worked with before, but not Tradestation)
I'm not worried about picking up any language, I'm a software developer, but I want to make an informed decision.
Thanks a lot!
Please send me a link to a similar thread if you know about one, I don't want to start a new discussion if there are already discussion on the topic.
Here there are my 2 cents, I wrote them maybe it'll help something. If not, just discard ...
If it would be in my book, I would firstly choose a good broker, and after that I would learn its platforms and adapt to what it will offer to me. I would search if algo trading with that broker give the same good results as manual trading ( because it's well known that algo trading and manual trading are very different approaches ), and only after this I would think about programming languages and so on ...
But, this is just me and maybe my approach isn't the right one ... And it seems that you are biased to algo trading, so I will propose you three alternatives that I explored in the past. I mention that the last one is linked to FXCM, but I have no interest with them, I just explored that in the past and that's all.
1. cTrader: https://ctrader.com/ Well, it's dotNet based, EA's and indies are in C# ( using cAlgo ), there is a debate over who's better between cTrader and MTx ... You will easily find it on the web ( I mean the debate ).
2. Zorro: https://zorro-trader.com/index.php It's an independent platform for trading and analyzing, you'll have to use some proprietary scripting language
3. FXCMQuant: https://www.quantnews.com/ Well, this is strictly linked with FXCM, it uses Python and REST. Maybe you don't want to go live with FXCM, but you can use a demo and make analysis... Anyway, using FXCMQuant doesn't require a live account.
Good luck, buddy!
If you do this a few times you'll realize that one of the most important features of a trading platform is its ability to get adapted to your needs. Your needs will constantly change, and you need a platform as flexible as possible. You don't want the platform to restrict you.
I went with MT4 for two reasons:
I think you already learned that there is no perfect turn-key solution to start developing and running live algo-trading ideas for forex and you will probably have to use multiple tools.
Algo-trading can be roughly divided into 3 separate areas:
- Prototyping / development
- Testing, optimizing and validating
- Running live
Most of platforms can do 1 or 2 things so at the end you will still need customized solution to cover all 3 areas reliably. And then there is a data problem - you either get some limited historical data with your platform (MT, ctTader) or need to get it from somewhere else (like with ninjatrader).
So your options are:
forex-centered platforms - MetaTrader and cTrader. I'm pretty sure there is more, especially if you count specific brokers with proprietary API/platforms, but lets skip that. I personally hate MT4 with all my heart and can't wait until it dies, leaving the market share for players from this millennium. It's C/C++ based, is horribly un-intuitive, pure pain in the ass to work with (and I spent a lot of time trying to tame it), but it is so archaic I just gave up discarding all work progress. The only benefit is - you have probably the largest selection of forex brokers that support it, and that's it.
cTrader (C# based) could be a wonderful platform if it wouldn't take them literally years to release new features. And they are still behind their main competitors in term of features. However, API is really elegant and easy to understand (if you have a decent OOP understanding) and that is my go-to tool for quick prototyping and charting. It is fast too and great for a multi monitor setup. Testing, optimizing and validating is not sufficient (in my opinion) yet, although there are some backtesting/optimizing capabilities.
Then there is Ninjatrader (C# based) - ridiculously flexible, but not so intuitive, with a bit steeper learning curve. You can trade almost anything with it - (stocks as well, since you asked about that). Can import/backtest tick-level data, create fancy multi-TF multi-instrument algos, but apparently not so reliable in running live (too complex and cluttered system). It's really decent platform for prototyping (and you don't have to pay for it if you are not trading live) and is a great option if you don't want to spend a lot of time building your tools from scratch - but eventually you will have to port your algo to some other system to run it live - especially for forex - since just a few brokers are available.
There are bunch of other tools like sierrachart, Tradestation, Multicharts, etc. - they are comparable to ninjatrader (although based on different languages) - lots of features, lots of flexibility and complexity - but just a few broker choices eventually (if any for forex). Haven't personally tested any of these in depth.
Regarding python - it is extremely popular choice for algo trading, and for a good reason. It's really fast way to prototype and develop ideas. There are MANY frameworks to choose from - the most popular being Backtrader:
Trading with Python http://www.tradingwithpython.com/
tia Toolkit for integration and analysis https://github.com/bpsmith/tia
QuantSoftware Toolkit http://wiki.quantsoftware.org/index....ftware_ToolKit
I personally do not use any of them, python is just a supplemental tool to the platforms mentioned at the beginning of the post, but that is just my specific style, based of visual modelling.
To sum up once again: the is no single platform that would give you fully functional solution (at least for retail traders) - you will have to either create one yourself or use a mix of exiting tools.
Of course it helps, lots of info that you gave me!
I didn't realize that different brokers means different languages.
I heard that the education the brokers do shouldn't necessarily be trusted, as they don't have my best interest in mind necessarily. Do you agree?
I'll look over the broker links.
So you're saying C/C++ is best?
Why are you saying that MT5 is dead? I'm not contradicting you here but I'd like to know why
For me it makes sense to use C/C++, as I used it a lot in the past. Happy to hear that
I think MT4 would make a lot of sense for me, too. Thanks for going into details about why MT4.
Detailed answer: Well, the brokers cares about their image on the scene ( I mean the serious ones ). They will offer some services ( education, API, indicators, ... ) above the basic one ( which is a more or less functional trading platform ) not because they care about you, but they want to create a better image in the market, and, more important, in your mind. So, I will reformulate your sentence: "My image about the education the brokers do shouldn't necessarily be trusted". They do what they can, they use some half-truths in their education and assemble them in a seemingly-coherent and seemingly-very-solid "fundamental truth". This is the essence of marketing. And the ultimate scope of this is to "allocate memory" in your brain ( on the heap, not on stack ). Just be aware about that "thread" which likes to "allocate memory" in your brain.
The solution is to study what they offer, study what independent people says ( like on this forum ), and build your own way through this. Connect the half-truths in the right way for you. And be aware that a connection that someone else consider "the right way for him/her" isn't necessarily the right way for you ...
I didn't say MT5 is dead. I said MT5 is a dead end. For manual traders MT5 may be a valid option but it's a dead end for algorythmic trading. In MT5 MetaQuotes removed the interface to access price history. Without that a platform is useless for testing and for optimization, no matter what other features are promoted by marketing departments. I guess that most agree that MetaQuotes has one of the worst reputations in the industry, and for a reason. In fact I know it when it comes to business customers. But this is not because the software is bad. MetaTrader4 by itself is exceptionally good. It's because the company behind it has interests that don't match the interests of end users. This did work in the past but it will not in the future. Disabling/removing a substantial part of a trading platform doesn't happen by incidence, nor by mistake. Imagine you had a Java or Python trading framework releasing a new version and forbiding access to history. Wouldn't such a product be an oxymoron?
Another reason why MT5 is a "dead end" is it doesn't support Magic Numbers. If you trade portfolios of EAs (i.e. many strategies at the same time) then you need a way to track how each performs. When designing MT5, MetaQuotes intended to discourage hedging -- so they removed support for Magic Numbers. But Magic Numbers are not just for hedging. MetaQuotes later realized the error of their ways and have since added a second accounting system (https://www.metaquotes.net/en/metatrader5/news/4696). This confirms what @emmzett mentioned above -- by eliminating Magic Numbers in MT5 it became painfully clear that MetaQuotes' marketing interests are completely unaligned with the interests of users.
© Forex Factory