Forex Factory (https://www.forexfactory.com/forum.php)
-   Platform Tech (https://www.forexfactory.com/forumdisplay.php?f=69)
-   -   Making an informed decision about the platform to go with (https://www.forexfactory.com/showthread.php?t=865826)

ForexTrender Jan 5, 2019 8:21pm | Post# 1

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.

forexcentric Jan 6, 2019 8:48am | Post# 2

Hi ForexTrender,

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.

So:
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!
Cheers!

emmzett Jan 6, 2019 8:50pm | Post# 3

...I'm not worried about picking up any language, I'm a software developer...
In general the process looks like this:

  1. Come up with an idea.
  2. Formulate it in pseudo code.
  3. Formulate it in the language/platform of your choice.
  4. Test it with the platform of your choice.
  5. Analyse the theoretical outcome.
  6. Trade it with the broker of your choice.
  7. Analyse the real outcome.

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.
No platform is perfect and no platform can fullfill all the specific needs. That's normal (independent of the price you pay), you cannot expect to find something that does it all.

The big question always is: Can you extend the platform in a way that it does what you want? Can you write your own code to extend the capabilities of the platform? Can you run this code with a broker of your choice? What choices do you have at all?

TradeStation (as an example) is used by many old dogs but it hardly understands intraday movements. It was never built for it. Even in my dreams I wouldn't think about using it for real trading.

What about NinjaTrader? Do I want to have a splended platform with all kind of magic, that isn't able to run in production reliably for 24 hours? No...

Do you need R? You definitely don't need R, that's for sure. All R can do can be done directly in MT4 with Math/ALGLIB. And faster...

Do you need Python? That boils down to the same question as "do I need Perl or do I need Bash". Yes, if you are comfortable with it it will help you. But you don't need it.

Do you need C#? Definitely "no way" as long as you are not working for a company which already has everything implemented in C#.


Go back to the basics, go back to plain C/C++. From there you can do anything and you can go everywhere. If you trade Futures try SierraCharts. Exceptionally good API. If you trade Forex go with MT4 and build everything around you need in C/C++. From there all doors are open.

Don't waste your time with MT5, it's a dead end.

Focus on testing and analysis, not so much on actual strategies. Your best ideas are not worth much if you can't prove them to yourself. If something is not testable it gets difficult. If you don't know the statistical outcome of your trades, don't go life.

PS: In short prefer a more simple but open/extendable platform over a sophisticated platform which claims to "do it all". Sayed that if you have the money look for people doing the development for you and feed them your ideas. Definitely the best choice. Have a look at Deltix and what they offer...


emmzett Jan 6, 2019 9:11pm | Post# 4

I went with MT4 for two reasons:

  1. It has one of the most open APIs. For regular users it looks like MQL but for experienced users it's C++. You can do whatever you want...
  2. There are countless MT4 brokers competing for your attention. You can easily switch wherever you want without changing infrastructure to spread your risk.


cinic Jan 7, 2019 5:49am | Post# 5

Hi ForexTrender,

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:

Backtrader www.backtrader.com
PyAlgoTrade https://github.com/gbeced/pyalgotrade
Zipline https://github.com/quantopian/zipline
Ultra-Finance https://code.google.com/p/ultra-finance/
ProfitPy https://code.google.com/p/profitpy/
pybacktest https://github.com/ematvey/pybacktest
prophet https://github.com/Emsu/prophet
quant https://github.com/maihde/quant
AlephNull https://github.com/CarterBain/AlephNull
Trading with Python http://www.tradingwithpython.com/
visualize-wealth https://github.com/benjaminmgross/visualize-wealth
tia Toolkit for integration and analysis https://github.com/bpsmith/tia
QuantSoftware Toolkit http://wiki.quantsoftware.org/index....ftware_ToolKit
Pinkfish http://fja05680.github.io/pinkfish/
bt http://pmorissette.github.io/bt/index.html
PyThalesians https://github.com/thalesians/pythalesians
QSTrader https://github.com/mhallsmoore/qstrader/
QSForex https://github.com/mhallsmoore/qsforex
pysystemtrade https://github.com/robcarver17/pysystemtrade
QTPyLib https://github.com/ranaroussi/qtpylib
RQalpha https://github.com/ricequant/rqalpha

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.

Good luck!

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?

Nicholishen Jan 7, 2019 7:47am | Post# 6

Hi ForexTrender, 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...
This guy pythons

ForexTrender Jan 8, 2019 1:32pm | Post# 7

Hi ForexTrender, 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 ...
Thanks, ForexCentric
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.
Thanks again

ForexTrender Jan 8, 2019 2:09pm | Post# 8

I went with MT4 for two reasons: It has one of the most open APIs. For regular users it looks like MQL but for experienced users it's C++. You can do whatever you want... There are countless MT4 brokers competing for your attention. You can easily switch wherever you want without changing infrastructure to spread your risk.
Thanks a lot, Emmzett, for taking the time to go through so many platforms and languages.
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.

forexcentric Jan 9, 2019 3:09am | Post# 9

{quote} 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?
Short answer: yes, I agree. A broker will never care about you and your interest. You're just a number.

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 ...

emmzett Jan 10, 2019 8:26pm | Post# 10

...So you're saying C/C++ is best? Why are you saying that MT5 is dead? ...but I'd like to know why....
There is no best language. The best language is always the one you are already most comfortable with. It's a matter of time and how much time/effort you are ready to invest to come up with something successfull. C/C++ is a good choice because it's simple, cross-platform compatible and open. It doesn't hinder you in any sense. It gives you opportunities in every sense. It is suported by the vast majority of service providers. It simply makes sense to use something like that. More than for example Delphi/Pascal.

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?

robots4me Jan 10, 2019 9:05pm | Post# 11

I didn't say MT5 is dead. I said MT5 is a dead end.
Agreed...

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.

Nicholishen Jan 11, 2019 3:49pm | Post# 12

{quote} Agreed... 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...
MT5 is a piece of crap. That being said, I don't ever remember a time that it didn't support magic numbers.


© Forex Factory