Quote from LeeD:
Regarding platform, I'm sure lots of people would recommend their favourite platform (or the one they are developing/sellling) but hear you need to do your own legwork. Make a shortlist of platforms (remember, platforms that are most popular are those that come free in some form, like NinjaTrader and MetaTrader, not necessarily thsoe most suitable). Search the web, read each platform's forums. Pays special attention to platform starting to lag while tracking a busy symbol like S&P 500 emini during increased market activity. Some platforms are much better than others.
If platform supports 1-tick, 5-tick etc bars, this can make programming a strategy easier.
Given you don't consider yourself a "professional programmer", the advantage of using a "platform" is the support. Datafeed and broker interfaces change frequently. As a platform developer yourself you'll have to follow these changes and check if they affect the operation of your platform, modify the platform... then test, test, test. As an end user it's easier if someone does all of this for you. On the downside, a platform would not support all broker features. One platform might not support price modification in existing order (so in a trailing stop you have to cancel the old stop and place a new one). Other platforms wouldn't support OCO (one cancels other) orders etc...
MQL is "compiled" but it's compiled into bytecode. So, by using a laguage that compiles into native code (C++, Delphi, Power Basic) or a laguge that runs in a virtual machine (C#, VB.NET, Java) you will gain at least 10x speed advanatge.
I believe you can plug DLLs into MetaTrader. This may be an easier first option before swutching the platform.
If you do complex calculations, these often fall into one or more popular classes such as matrix algebra or optimisation. For each class there are popular libraries that will likley do the task a few times faster than the code you write yourself (think of Intel MKL or Boost). If you need one of those, this limits the choice of programming laguage.
Similarly, some trading platforms would work with any compiled or NET laguage (in the form of a DLL) while with others you have to use the one the platfrom developers have chosen.
Further, the highest speed gain is usually obtained by improving your own algorithm. Mone calculations that don't have to be in a cycle outside the cycle. See if some calcualtions don't have to be done every tick etc.
When choosing a programming laguage, consider speed of developement versus speed of execution. 10% - 20% gain of C++ versus C# or vice versa is immaterial because computers are becoming faster alll the time. On the other hand, if you are fluent at the laguage, you can easier do things in a different way, which can easily speed execution up 2 times or more.
No, though it might help. Note most trading platfroms (including popular .NET ones) don't support calculating indicators/trading systems in multiple threads. This means they would use multiple cores for data collection, charting and housekeeping but all indicator/strategy logic will be executed on a single core.
If you want to do parallel calculations yourslef, it's an additionla level of complexity (like thread synchronisation and locking) that you might not want to handle. If you have 4 cores, just run 3 instances of your favourite platfrom (and keep 1 core for the operating system housekeeping).
C++ gives the developer more control over exact execution logic. For example, C# effectively enforces the use of built-in collections (list, hashmap etc). They are great for "general" use but the implementation may be massively suboptimal for your specific task. In C++ you can implement your own collections and finetune them for the specific task you are trying to accomplish.
I would strongly advise againts even considering assembly language. With the complexity of what is happening in moderrn processors the usual effect of an experienced C++ programmer trying to write in assembly languge is a massive loss of execution speed. Optimizing C++ compilers are just that good.
I am reading your thread for the second time now
. Great Thanks for sharing your expertise.