Quote from mhtrader:
This is how all "server" software is created. The developer's PC acts as a server for the developer. Once software is ready, it's deployed to the server.
It is not clear to me what you said.
Let me give an example. Oracle database engine is not just a database but what they call "application server", that is you can develop and run complex code that will run inside the server and act as a part of database queries.
The way to develop such a code is to install a full-blown Oracle server on a developer's PC. (It's a developer's version, which is free and only differs from the "real" server in the number of users that can simultaneously conect to it and other restrictions like that.) Then software is developed and tested on a developers PC and then installed on an actual server.
10 years ago servers were a different platform, ran a different operating system and making software developed on a Desktop work on a server was quite an effort. These days most servers are the same PCs that run more powerful (but otherwise compatible) hardware and have an operating system that is indistinguishable from that on desktops for most practical purposes.
So, making sure something work both on a desktop and on a server is usually a trivial task.
Quote from mhtrader:
But the point is that user strategies can run on the client computer and on the server.
The fact that you mention it as a big deal implies, unlike Oracle, you are not giving desktop users the same platform code that runs on the server... which likely means users will have to struggle with things that work slightly differently.
Quote from mhtrader:
We are coming with a big library of strategies/programs and can be used as reference. It is impossible to do certain calculations on the client-side. Basically having 10K symbols ticking at the same time and running strategies on it( no just plotting, but doing real calculations ) is almost undoable without falling behind or without crashing. We have most of the conditions solved on the server side.
Depending on what exactly a trader is doing, it's often unnecessary. Instead of tracking 10,000 symbols on 1 "server". You might prefer to track 1,000 symbols on 10 desktops, which is doable with "retail" software. The additional advantage is if one lags behind others will keep running.
I don't doubt tracking 10,000 symbols on one machine is quite a feat of strenth. It's just one thing some people may be prepared to pay up for and others may not.
Quote from mhtrader:
Not true. TS doesnât produce DLLs. TS compiles and save the things in their own storage. I think they use Microsoft structured storage.
I was saying you could compile a DLL using visual C++, Delphi or other favlurite tool and load a trading strategy implemented in this DLL into TradeStation.
Not only this gives a choice of programming language sto suit any taste but also specialised developer's tools tend to have far superior debuggers, profilers and whatever alse a serious programmer needs.
Quote from mhtrader:
There was a very famous company that re-wrote their platform some years ago in .NET and they have to reverse it back. I don't recall the name right now. But I can look it up for you.
I would very much like to read about them. Can you please look it up?
Quote from mhtrader:
Do you think they simulate the whole thing during back-testing like if it were real-time? Because that is the main problem I see on the existing platforms right now. The back-testing "events" are somehow always different than the real-time events. And it defeats the purpose of most automated strategies that were deem as "successful" when you back-test them.
Most platforms don't have millisecond precision. The resolution of tick data is one second. This means there is no way such platforms can simulate, for example, 300ms it takes to send an order and receive confirmation it has been placed on an exchange.
Another issue is there are things that occur in real trading that platforms don't tend to produce on a backtest. For example, rejected orders.
However, I know at least one platform that can simulate that it takes time for an order to be cancelled.
Do you suggest your platform can simulate all the unusual states that may occur during real trading? Rejected orders, loss of network connectivity, realistic delays when orders are placed and cancelled, lag spikes when the time it takes to place, modify or cancel order unexpectedly increases etc...
Quote from mhtrader:
I'm not talking about data, but about user written code. To give you a hint: results from a user written code that don't use a random function inside can be cached based on certain input variables (donât take it literal as inputs, but as the math concept).
About optimizing the user code BEFORE it is compiled... never heard of that
. But yes we do code analysis and data analysis of the code. If you want this calculation Calc(x,y,z,x'....) x can be symbol, y interval, z can be range and x' can be for example your own value. You can request for the cached values if they are available. And you can make them cachable, but you have to specify that you want to do it.
This is exactly my point!
Imagine you run optimisation on a strategy. Every run you may change parameters but you know the market data will be the same.
Let's start with an example for the sake of example. Imagine moving average crossover strategy. You want to keep the "short" MA period fixed and optimise over the "long" MA period. Because historical market data doesn't change and the "short" period doesn't change the "short" moving average can be cached.
The problem is the platform wouldn't know it can be cached unless the strategy exposes moving average indicator as a separate component. If it does, there are platforms that allow calculating "short" MA and further presenting it as data. I understand that's what your platform is effectively doing. It is nothing new.
If you could figure out from the strategy code what should and what should not be cached (for MA as a simple algorithm caching will likely make it slower), that would have been a great step.
There is a class of platforms that can figure out what parts of the strategy "produce" can be chached without user hinting at it... but these are platfroms that generate a strategy themselve. So, they have full control over what a strategy doing.