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 Jobs
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 Database
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).
The Charts
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.