Desenvolupament tècnic de l'aplicació
Continuous trade is derived from another open source project , and implements the basis of his functionality, changing a lot, implements a more friendly look and feel interface, and extends the functionality.
In the interface, the menus are reclassified, we have changed the components used for tables with , and the graphs with .
The size and position of the application windows is saved and
restored when we reopen that windows.
JXTable does a lot for the user interactivity, changing the columns in visibility, width and order, sorting by one or multiple columns, and filtering the data shown in the tables, all that is saved in the program's preferences and will be retrieved the next time we'll use that tables.
JFreeChart easily creates financial graphs, and gives a very great look and a new chance to the user to work with them.
The whole application is multi-threaded, and we have created a
special module to manage the different threads, the Jobs Manager.
The Jobs Manager allows the application to create and control multiple and diverse Job Queues with different purposes:
the Interactive Job Queue, to execute immediately every executable object the program submits to them
the Batch Job Queue, to execute sequentially, one by one, the submitted executable objects
the Schedule Job Queue, to execute with delay or repeatedly at given interval, the submitted executables
The Active Jobs Window shows the threads in execution, and give us
some control about what the program is doing.
That allows a great job control to the programmer, this module shows what jobs are taken more time, is a good tool for improving the performance of the application.
The application needs lots of data, and thinking in performance,
we should minimize the amount of memory used; the application stores
in database tables the portfolio transactions and the stock quotes.
But also minimizes the disk space, saving in the database only the
necessary data, the temporary data is not saved. Here we search the
right balance between performance and disk or memory space used.
Now, to run the application, a database is required.
Valid databases are: data file (Hypersonic Internal Java database library), mySQL or PostgreSQL databases.
We recommend mySQL or PostgreSQL.
The Market Data
Some processes request data, and the Data Wrapper Manager is
responsible to manage that, if possible, retrieving from the Database
or requesting to the TWS.
Market Data is retrieved when needed, automagically ?, (a programmer knows who does the big effort to get that kind of automa... things working).
Charts are drawn with the JFreeChart library, and the standard
renderers provided in that library, but we have create a new Quote
Dataset who minimizes the amount of memory needed to store the
quotes, and dynamically changes the data stored, and also the time
intervals and range.
When the Data Wrapper Manager creates a new Quote Dataset, also starts the data collection process, and the Chart receives notification about every new Quote available.
If the user changes the Chart parameters, like Time Interval or the quotes time range, the Data Wrapper Manager is notified and modifies the data collection in consequence.
Also, the creates his own children named and objects.
A correspond to one Time Series with any kind of quote's value, in example: open, high, low, close, volume...
A is a OHLC dataset to represent candle sticks, high/low or point and figure graphs.
Every child is feed by their parent with the same data that owns, minimizing memory usage and process for retrieving that data.