FreeMarket
The idea behind creating this package wass to create a set of trading-related utilities that together form a comprehensive market analysis tool. To do this, the following approach was (is being) taken:
- The code should be distributed.
As much as we like TradeStation, TC2000 and the other popular Windows-based analysis tools, the approach taken here was fundamentally different in that the package as a whole consists of many different parts, some being graphical, others scripted. Instead of spending time trying to integrate everything into one complicated application, time was spent trying to define a set of CORBA based interfaces between classes of data producers/consumers. For example, a GUI viewer would be a graphical based consumer of bar data and indicator data which in turn are produced by data servers and indicator servers. The indicator server takes bar data as an input and applies an indicator function to it to produce an indicator stream, which can be floating point numbers, integers, enumerated values, or anything else.
2. The package should work for historical and real-time data
We wanted a package that would easily allow us to backtest indicators and also generate real-time signals as new bar data was generated. The backtester is being planned, and the real-time data is very close to being beta right now.
3. Define interfaces instead of dependencies.
By doing this we hope to not be limited to or restricted by a particular implementation. If someone doesn't like the use of Qt as a graphical toolkit, by following the API it should be easy to code a Gnome equivalent. Same thing for the current implementation of the daily database using Mysql. Right now the API is implemented using CORBA, but it should be easy to implement the interfaces using a C network API instead. We chose to use CORBA because it is has an easy-to-use IDL language and it enforces an object-oriented distributed network model. It will be far easier to start with CORBA and later add in a C layer than the other way around!
Developers
This package is open source. Anyone is free to take the source, modify it and send us patches of useful features if you choose to...
If you want to be more actively involved in the development of this project, do three things:
- Get yourself a Source Forge account. Without this you won't be able to contribute as a developer.
- Subscribe to the mailing list. When you subscribe, you might as well say 'hello' with a test message to make sure things are working.
- Submit the first couple patches in 'cvs diff' format. This will allow you to get familiar with the check-in process and with CVS in general, and will show us you are active enough to justify being a developer. Make sure you do a 'cvs update' before the diff, so that you know you have the most up-to-date code with no conflicts. It should be understood that inactive developers will be taken off the list after a month or so of no activity...
Have fun,
"The Free Marketeers"
- thanks to Anna Tabanna for coining the nickname :)
