News - well sort of news
April, 9th.
I'm still alive and well, but I spent a lot of time as sysadmin on my server this year (catching up after a couple of years with security updates only (and that ain't much work with Debian stable and SuSE)). The server are now running Debian Sarge after a fairly easy upgrade. I used the opportunity to improve the setup as well. Spamassassin now takes care of most of my mail, an IMAP server is under way (just got to finish the LDAP configuration), Eclipse is working against a cvs server, smartmontools are monitoring the disks, I have removed a lot of unused packages from the server, the firewall is improved, MoinMoin wiki replaces a lot of txt files all over the place with various things to remember etc.
Since I was in upgrade mode, I bought myself a 21" LCD display. My previous display was an old 17" CRT and the only thing to say is that I should have done this a long time ago. By now it might be needless to say that I upgraded Eclipse to 3.1M6 and the JDK to 1.5.0_2. I'm very impressed with the quality of the milestone releases of Eclipse. They seems to be just as stable as the final releases.
I also had a disk crash, a 120 GB Samsung disk decided it was time to die. I really like the 5400 rpm Samsung disks, they are very close to completely silent. A pity they are difficult to find, at least in Norway. Strange enough the disk crash felt good, probably because the backup finally paid off, even though I had to copy more than 90 GB through a USB 1.1 interface (takes about 24 hours in case you wonder).
What I was intending to write was that I'm about to release another version of jStock. The news this time is a "Indication summary" that extracts the information from the indicators and draws buy and sell indications. I'm not completely sure if it is working the way I want it, but it's worth a try. At some time I must implement a few more indicators to see if this is any help.
I have started to look at integrating hsqldb into jStock, this would completely remove the need for an external database (but it still will be an option). It seems that it is quite easy, but I have to write some code to handle the automatic creation of (missing) tables and so on. So this will go into the next release (I hope).
December, 7th.
Now it's beginning to behave like I expect and here is you're chance to try version 0.5.0. The changes are mostly internal. But just to prove that the changes was worth the effort: persistent lines is now supported in all indicators. For persistence, the lines are connected to a particular set of indicator parameters. The persistence, of course, requires database support. While talking about lines, the userinterface is changed a little. To draw a line, the right mouse button is used. The 'l' key is used for selecting lines. Stick can be selected at the same time as lines are displayed. And yes, it was worth it. Even though y axis of a logarithmic candlestick is very different from the y axis of MACD, the code to handle the persistent lines differs only in 4 lines in (to keep the linear scale from the logarithmic. Without the changes even the mouse and keyboard handling code had to be duplicated. For those of you that use jStock with a database, jStock now supports different indicators (or with a different set of parameters) for different stocks. The view of individual indicators may be turned on or off without breaking the persistent lines.
The bad news is that the database tables are updated, and not compatible with the current, and existing data will be lost for all practical purposes, even if the existing tables are extended.
What's on next? Now that I have the data easily available I finally will start to look at rules for automatic evaluation of stocks. The GUI really needs a face lift, but that probably takes a lot of time (and I don't think that is very, let's say, inspiring job to do), so don't expect to much. A more (install) friendly database interface is also considered, I just can't make up my mind whether I shall use hsqldb, hibernate or an OO db. The first is probably the easiest as that would be just to add an embedded sql database, the second most "usefull" to learn and the third the most exciting, but probably take more work to do as I have to tear out everything done in order to "force" an object into a relational database. The result, however, would probably be quite nice.
October, 21st.
jStock is up and running again after the refactoring, most of the old functionality seems to be working and the groundwork for new features is in place. Unfortunately a couple of other things has taken a lot of my time lately (a leaky oil tank is among them).
August, 26th.
Just a little update on whats going on. I've had a few weeks off this project, but now I'm more than ready for changes and have just started to refactor a few parts of jStock. There will not be any release before I'm done with that unless a serious bug is discovered.
July, 9th.
Finally a new release without a single bugfix. The number of added codelines is not so impressing, but the functionality provided might be important enough to skip version 0.3.8 and 9, and go directly to version 0.4. And the new features was? jStock is now capable of downloading files directly from various internet sources (only tested with Yahoo). For those of you with unmetered internet access this may a missed feature. All downloaded files will be saved to disk so you can view the charts even when disconnected from the internet. For dialup users, I still recommend wget to get the files before jStock is started. (Don't tell the DSL users, but it probably is faster overall.)
Another feature is a filereader for data files from Yahoo (and equals). This should speed up file reading for that format a lot.
June, 24th.
Another mostly bugfix release. This time it was the generic file input that had several bugs in it. It should be a lot better (that is it should be usable) now. Thanks to Brian at Lindows for telling me.
However there was room for some new features as well. A exchange input field has been added to the main control panel so that it is fairly easy to fetch charts from multiple exchanges. The exchange input field doesn't request focus so the field has to be clicked in order to type into it. The default extension set in the options menu is used as default at startup. To call it the exchange input is a little exagerration as it really is the file extension (but it looks better that way).
June, 10th.
An pure bugfix release release is now ready. Most are minor, but a big one making it impossible to change parameters for RSI and MACD indicators within the application has been undetected for some time. That's what I get from not implementing testcases. (Actually, I should have noticed it, even without testcases).
June, 1st.
The build script was OK, but I've fixed a few bugs and some inconsistency in the user interface during the weekend, and this is the result. Major changes are that the focus (for keyboard input) follows the mouse cursor, i.e. if the cursor is in the "Control panel" the "Ticker Input" field gets the keyboard input, if the cursor is in the candlestick or indicator panel the keyboard input is handled there. This may be a new experience for windows users. I'll try it for some time and if I like it it'll stay. If some of you find it problematic I can make it configurable. Fixed a few bugs related to changing panel size as well.
This is also the first release build with a prerelease of Eclipse 3.0. After a few attempts (why won't it work and where was the jdbc jar file again???)
May, 27th.
I have now tested the very, very close to plugin thing (see news from April, 29th.), and it actually worked (after some bug fixing). So here is a new release, with MACD added. Apart from MACD and the usual bugfixing, the RSI value is displayed for a selected day and not, as before, always the RSI value for the last day.
A little warning: This time I have put a lot of faith in my ant build script so the final package is not tested after the build. I'm going away for the weekend and I'm in a little hurry. Expect a new update early next week if something went wrong.
I have spent some time trying out a couple of tools, one is Structural Analysis for Java from IBM alphaWorks. SA4J analysis the structure of a Java application and can give a few hints on where the structure of the application is not as good as it should be. jStock now has an "overall stability" of 87%, while highly stable applications are typical above 90%. Since I started using the tool the overall stability has increased about 7 points. It doesn't make the application more bug free, but it makes the design better, and reduces the risk for introducing errors when some piece of code is modified. A usefull tool for those that cares about such things.
The other tool is Findbugs and in their own words: "FindBugs uses static analysis to inspect Java bytecode for occurrences of bug patterns. We have found that FindBugs finds real errors in most Java software." I have found no reason to doubt that.
April, 29th. - 2004
Version 0.3.3 is finally out. You might think that since it has taken so long a lot of new features has been added. Not so, the only new feature is an EMA (Exponential Moving Average) indicator, but there is a lot of internal changes. The indicator part is now put in a separate package and new indicators can be easily added without touching the rest of the code. It's very, very close to a plugin thing.
February, 22nd. - 2004
It's release time again. The changes are mostly bug fixes and cosmetic changes. The only feature of some importance is additional support lines in the candlestick panel if the distance between the ordinary lines are too long.
In the near future I will add more functionality that requires database support. I'll start with the "Notes" window if everything goes as I think. I know databases can be overwhelming for new users, but take a look at i. e. PostgreSQL (maybe not well suited for the "casual" Windows user at the moment as it needs Cygwin¹ to work) or MySQL. There is a lot of graphical tools to help you with the administration of the database. I use Webmin that is a web based tool - with modules for everything it seems. I don't know if something like that is available for Windows, but several other tools like phpMyAdmin are. Note that jStock is only tested with PostgreSQL, so I can't guarantee that it will work with MySQL, but I've only used simple sql statements so there is a very fair chance.
¹ It's by no means impossible and there is an installation guide on the doc pages at the PostgreSQL site.
February, 10th - 2004
New version, jStock 0.3.1 is available. I have added a more generic file reader where the the column number of the different fields (open, high, etc.) is customisable from the "Options" menu.
Have added the possibility to draw moving average in the candlestick panel. Configure MA from the "Options" menu as well. By the way, the "Options" menu is rearranged a bit, but it still not pretty. It works for now - ok? (I'll fix it).
January,22nd - 2004
jStock 0.3 is here. The big news is the possibility to draw a RSI (Relative Strength Index) graph. Note that there seems to be several ways to compute RSI. I have chosen to implement the original as proposed by J. Welles Wilder, Jr. This algorithm has memory, so different starting points (dates) will yield different results.
I have also started to use log4j for logging messages instead of sending them to the console.
And of course some bugs are fixed, among them a rather embarrassing one where Notes was overwritten when a stock was opened.
December, 22nd. - 2003
A happy Christmas release. The persistent lines are now working, and can be moved or deleted (but only from the keyboard). See updated readme for details about keys.
December, 2nd. - 2003
A snapshot mostly for my self here. Is not working correctly yet, but persistent lines is getting closer. DB schema here.
November, 25th. - 2003
Just a small bugfix here. If the last day was a Monday, it was not drawn in the weekly charts. That's all. (But I really should take time to build a test suite.)
November, 24th. - 2003
Ooops, is it already almost a month since the last update? Here's a new one. Since the last update I've removed a class that was not needed anymore. That should save some memory. Have added a watchlist feature which automatically load stocks on the watchlist at startup. This requires a database. And of course a few bugs is also corrected. I also found one that I haven't corrected yet, it seems that java.calendar and my workstation does not agree upon week numbers for 2000 and earlier. I believe the workstation is correct, but haven't found any real calendars to verify this.
October, 26th. - 2003
First binary release. Both the source and the binaries are inside the tgz file. Have not added db support for drawing of lines as I got a few suprises working with the notes part. Think they are resolved now.
Of other issues I have noticed that if you try to open a non existing file, the tabbed windows get a little out of sync. The is also some problems with a couple of the first candlesticks in the weekly chart, Sometimes a few of them are not drawn at all.
October, 20th. - 2003
Progress has been quite good last week. But, unfortunately I've started on a lot of different things. The property file editor is ok, which means that it soon is time for a binary release as well. I also have some of the db part working, but there is some more work to be done here. Drawing of of lines also works, but not editing/deleting already drawn lines. Have not started on db integration for that part yet.
A few word about using a db. Using a postgresql db for this application may seem like a complete overkill and is probably making things a lot more complex for most people. But as I already had postgresql running on my server and as I do this for fun and learning I thought it was a good idea to use postgresql. If it is any help, the sql used is quit simple so it should be easy to use another sql db.
October, 5th. - 2003
Updated the source release. Changes are: Some minor bug fixes. The beginning of the notes window with database support and added an about button.
When this is sort of working, I will have look at a preferences editor and then I think it should be time for a binary release.
September, 26th. - 2003
Finally released the source code. I ended up with the (modified) BSD license.
Download the source code or view the readme file