The pressure has been strong from PM's and private email to make the engine run in C++ for a variety of reasons.
In the last 24 hours, I was digging into how to do it. So as to make sure that's an option.
Upon closer inspection it has become clear that C++ will likely be significantly faster. One reason is the "reference counting" that the garbage collector must do "atomically" which means thread locking. In C++ you can control when that's needed (and it's not needed in most of the engine).
So it's possible that will speed it up significantly.
It turns out there's an automated tool that converts C# to native C++. It's lacking one important feature after paying for it but the author said he'll add it within 2 days.
That will only leave me to write the "glue" code from C# to C++.
(It will also be easy to make Java glue code at that point too!)
So this means that the following will stay in C#:
(The rest of these components could rather easily be redone using Java or C++. Charting especially needs it because that's very Windows specific right now. In Java you probably want to use JFreeChart as the foundation. Is there a c++ equivalent?)
The following are outside the engine and staying in C#:
Charting.
Optimization algorithm.
Performance Stats.
Black Box Server.
Execution Server.
Indicator Library (very few).
Function Library (very few).
Custom Trading Rules.
What will be cool about this is a much greater interoperability.
Eventually someone could develop strategies on windows using a the C# GUI but write trading rules in Java or C++.
And then roll those trading rules to the black box without any code changes since the engine will run on any server using the GNU C++ compiler.
Any thoughts?
As far as release date, I'm keeping that posted on the home page of tickzoom.org. Currently January 11th at midnight.
But this could easily bump it out another week if I run into any glitches. And it depends on the convert tool company adding that new feature to convert C# properties to C++ getters and setters.
It short I decided it will be better to knock this out before releasing because once released, I 'll be very busy with answering questions.
Wayne
In the last 24 hours, I was digging into how to do it. So as to make sure that's an option.
Upon closer inspection it has become clear that C++ will likely be significantly faster. One reason is the "reference counting" that the garbage collector must do "atomically" which means thread locking. In C++ you can control when that's needed (and it's not needed in most of the engine).
So it's possible that will speed it up significantly.
It turns out there's an automated tool that converts C# to native C++. It's lacking one important feature after paying for it but the author said he'll add it within 2 days.
That will only leave me to write the "glue" code from C# to C++.
(It will also be easy to make Java glue code at that point too!)
So this means that the following will stay in C#:
(The rest of these components could rather easily be redone using Java or C++. Charting especially needs it because that's very Windows specific right now. In Java you probably want to use JFreeChart as the foundation. Is there a c++ equivalent?)
The following are outside the engine and staying in C#:
Charting.
Optimization algorithm.
Performance Stats.
Black Box Server.
Execution Server.
Indicator Library (very few).
Function Library (very few).
Custom Trading Rules.
What will be cool about this is a much greater interoperability.
Eventually someone could develop strategies on windows using a the C# GUI but write trading rules in Java or C++.
And then roll those trading rules to the black box without any code changes since the engine will run on any server using the GNU C++ compiler.
Any thoughts?
As far as release date, I'm keeping that posted on the home page of tickzoom.org. Currently January 11th at midnight.
But this could easily bump it out another week if I run into any glitches. And it depends on the convert tool company adding that new feature to convert C# properties to C++ getters and setters.
It short I decided it will be better to knock this out before releasing because once released, I 'll be very busy with answering questions.
Wayne